agnoを使ってOpenAIのエージェントを作成してみた
今回はagnoのOpenAI連携機能を利用してエージェントを作ってみました。
agnoとは?
agnoとはメモリや知識、ツールやリーズニングを実現するエージェントを実装するための軽量なフレームワークとなります。agnoを利用することで、推論エージェントやマルチモーダルエージェント、エージェントワークフローを構築できます。agnoはエージェントとチャットするための美しいUIやエージェントにサービスを提供する構築済みのFastAPIルート、そしてエージェントのパフォーマンスを監視・評価するためのツールも提供するとのことです。
実際に使ってみる
それでは早速利用してみます。このチュートリアルではOpenAIのモデルを利用するので、APIキーを取得の上、OPENAI_API_KEY
に設定してください。
環境構築
OpenAIモデルをagnoで利用する場合、例えばuv
では以下のように実装できます。
uv init agno_openai_tutorial -p 3.12
cd agno_openai_tutorial
uv add agno openai
最もシンプルなエージェントの実装
それでは最もシンプルなエージェントを実装してみます。今回はエージェントはPythonのプロという設定で、NumPyで行列積の計算方法を聞いてみます。
from agno.agent import Agent
from agno.models.openai import OpenAIChat
agent = Agent(
model=OpenAIChat(id="gpt-4o"),
description="You are an Python professional.",
markdown=True
)
agent.print_response("NumPyを利用して行列の積を計算するコードを教えて.", stream=True)
agnoではエージェントの実装にはagno.agent.Agent
を利用し、OpenAIのチャットを取り扱う場合はagno.models.openai.OpenAIChat
を利用します。
agent = Agent(
model=OpenAIChat(id="gpt-4o"),
description="You are an Python professional.",
markdown=True
)
agent.print_response("NumPyを利用して行列の積を計算するコードを教えて.", stream=True)
こちらを実行すると以下のようになります。実際に利用すると結果がグラフィカルにスクロールされて結果が綺麗に表示されます。
uv run simple_agent.py
何も設定はしていませんが、プロンプトとレスポンスがターミナル上で綺麗に表示されています。結果についても問題なくOpenAIモデルとやり取りできています。
ツールの利用
それでは次にツールを使ってみます。今回はagnoで提供されているDuck Duck Goとの連携機能を利用してwebサーチさせてみます。なお、この機能を利用するにはddgs
を追加する必要があります。
uv add ddgs
from agno.agent import Agent
from agno.models.openai import OpenAIChat
from agno.tools.duckduckgo import DuckDuckGoTools
agent = Agent(
model=OpenAIChat(id="gpt-4o"),
description="You are an Python professional.",
tools=[DuckDuckGoTools()],
markdown=True
)
agent.print_response("NumPyの最近のアップデートを教えて", stream=True)
これを実行すると以下のような結果になります(容量の関係でテキストのみ貼っています)。結果をみるとどのようなクエリで検索を実行しているかが出るのと、出力はMarkdown形式でありターミナル上でリンクが表示されるので、そのリンクを選択するとページに飛ぶことができます。
uv run search_duckduckgo.py
# 結果
┏━ Message ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃ ┃
┃ NumPyの最近のアップデートを教えて ┃
┃ ┃
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
┏━ Tool Calls ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃ ┃
┃ • duckduckgo_news(query=NumPy latest updates, max_results=5) ┃
┃ • duckduckgo_search(query=NumPy latest updates, max_results=5) ┃
┃ ┃
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
┏━ Response (16.2s) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃ ┃
┃ ここでは、NumPyの最新の更新についての情報をいくつか紹介します。 ┃
┃ ┃
┃ 1 NumPy v2.3 マニュアル(リリースノート): ┃
┃ • NumPy 2.0への移行に伴うPython APIの削除や、逐次的な改善、新機能について詳細に記載されています。 ┃
┃ • リリースノートを見る ┃
┃ 2 PyPIのNumPyページ: ┃
┃ • NumPyの最新バージョン情報やインストール方法が記載されています。最新バージョンは2025年9月9日にリリ ┃
┃ ースされています。 ┃
┃ • PyPIでのNumPy情報 ┃
┃ 3 GitHub NumPyのリリースページ: ┃
┃ • NumPy 2.3.2リリースノートでは、バグ修正やメンテナンスのアップデートが記載されています。 ┃
┃ • GitHubでのリリース情報 ┃
┃ 4 NumPyニュース: ┃
┃ • NumPy ┃
┃ 2.3.0リリースでは、Pythonのサポート機能の改善や注釈の向上が行われ、デプリケーションなどの多くの変 ┃
┃ 更が行われました。 ┃
┃ • NumPyニュースページ ┃
┃ 5 NumPyのアップグレード方法(Stack Overflow): ┃
┃ • 異なるPythonバージョンでNumPyをアップグレードする方法に関する情報があります。 ┃
┃ • NumPyのアップグレード方法 ┃
┃ ┃
┃ これらのリンクから詳細情報を確認できます。最新のアップデートは、主にバグ修正や機能改善に重点が置かれて ┃
┃ います。 ┃
┃ ┃
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
まとめ
今回はagnoを紹介しました。近年の生成AIの台頭により多数のエージェントフレームワークが登場していますが、agnoもそのグラフィカルに利用できるてんやツールとの連携機能などは魅力的だと思います。マークダウン形式での出力とリンクの利用など、多数のいい機能があるのでぜひ皆さんも使ってみてください。
Discussion