軽量マルチモーダルエージェントフレームワーク「Agno」の各コンポーネント ④Applications
Agnoいろいろ試してみた。
より深く理解するためのコンポーネント探訪シリーズの第2回。ちょっと順番が前後するが、今回は「Applications」。
Agnoを実際にアプリケーションとして、フロントエンドなりとインテグレーションする場合の例が紹介されている。紹介されているのは以下の6パターン。
- Agno PlayGround
- FastAPI
- AG-UI
- Slack
- Discord
とりあえず一番使いそうな FastAPI でのインテグレーションを試してみる。
なお、Agno Playgroundについては以下で試しているので、そちらを参照
FastAPI
FastAPIを使う場合は、エージェントをFastAPIApp
でラップして.serve()
で起動するだけ
・・・なのだが結論からいうとドキュメントの更新が追いついていない様子(2025/8/5時点)で、ChangeLogを見ると色々変わっている。いろいろ調べてみて動いたのが以下。
uvでプロジェクト作成
uv init -p 3.12 agno-work-fastapi && cd $_
パッケージインストール。今回はLLMにOpenAIを使う。
uv add agno openai fastapi uvicorn[standard]
+ agno==1.7.7
(snip)
OpenAI APIキーを環境変数にセット
export OPENAI_API_KEY=XXXXXXXXXX
コード。
from agno.agent import Agent
from agno.app.fastapi.app import FastAPIApp
from agno.models.openai import OpenAIChat
basic_agent = Agent(
name="Basic Agent",
agent_id="basic_agent", # この1行が必要!
model=OpenAIChat(id="gpt-4o"),
add_history_to_messages=True,
num_history_responses=3,
add_datetime_to_instructions=True,
markdown=True,
)
fastapi_app = FastAPIApp(
agents=[basic_agent],
name="Basic Agent",
app_id="basic_agent",
description="A basic agent that can answer questions and help with tasks.",
)
app = fastapi_app.get_app()
if __name__ == "__main__":
fastapi_app.serve(app="basic:app", port=8001, reload=True)
実行
uv run main.py
8001番ポートでサーバが起動した
INFO Starting API on localhost:8001
INFO: Will watch for changes in these directories: ['/Users/kun432/work/agno-work-fastapi']
INFO: Uvicorn running on http://localhost:8001 (Press CTRL+C to quit)
INFO: Started reloader process [21046] using WatchFiles
INFO: Started server process [21049]
INFO: Waiting for application startup.
INFO: Application startup complete.
/docs
でAPIドキュメントにアクセスできる。ドキュメントとだいぶ違う・・・
ドキュメントではなくAPIドキュメントどおりにアクセスしてみる(ここはFastAPIのドキュメントもちょっとわかりにくい)
curl -s -X POST "http://localhost:8001/runs?agent_id=basic_agent" \
-H 'accept: application/json' \
-H 'Content-Type: multipart/form-data' \
-F 'message="こんにちは!"' \
| jq -r .content
こんにちは!何かお手伝いできることがあれば教えてくださいね。
このagent_id
、過去にAgnoを試した際には全く使用されていなくて、なんだろう?と思ったのだけど、
- エージェント初期化時、何も指定しなければエージェントには一意のIDが自動付与される(UUID)。ただし、普通に使う分には特に意識しなくても使える印象。
-
FastAPIApp
で起動した場合、このエージェントIDが引数として必須になるが、自動生成だとあえて確認しておかない限り(例えばエージェント初期化後にprintさせておくとか)わかりようがない。
という感じなので、明示的に指定を追加している。
FastAPIで簡単にラップしてくれているのは良いが、よくわからないパラメータが必須になっていて、かつ、ドキュメントにも詳しく書かれていない、ってのは果たしてどうしたものだろうか・・・(更新が追いつかないってのはわからんではないけども)
あえてこれを使わなくても、これならFastAPI部分を自分で実装したほうが確実な気もしている。
なお、agent_id
の使い方がいまいちよくわからないので、果たしてこれが正しいアプローチなのかは不明。Discordがあるのでそこで聞いてみたが、まだ返事はない。返事があれば追記する。
Agent API
コンセプトのドキュメントからは少しずれるのだけど、Agnoを実際にアプリケーションとして提供するためのもう一つのアプローチとしてAgent APIというのが用意されている。
Agent API
エージェントをAPIとして提供するための、堅牢で本番環境に対応したアプリケーション
Simple Agent APIへようこそ: Agent APIは、エージェントをAPIとして提供する堅牢で本番環境対応のアプリケーションです。以下の機能が含まれます:
- APIリクエストを処理するためのFastAPIサーバー
- エージェントのセッション、知識、記憶を格納するためのPostgreSQLデータベース
- スタートポイントとして使用できる事前構築済みのエージェントのセット
以下のレポジトリで提供されている
っていうかこれは実装済みテンプレートというかボイラープレートって感じだな。
必要なカスタマイズを行ってdocker compose出来どうすれば、簡単にエージェントをAPIで建てれるようになっている。なので、これをそのまま使っても良し、ディレクトリ構成などを参考に自分で実装しても良し、という感じに思える。まあこういうのがあるのは助かるっちゃ助かる。
軽く動かしてみる。
git clone https://github.com/agno-agi/agent-api && cd agent-api
OpenAI APIキーを環境変数にセット
export OPENAI_API_KEY=XXXXXXXXXXX
あとAPIアクセスの確認はcurlで行えるのだけども、Agnoのクラウド上のPlaygroundからも行える。Playgroundからのアクセスを有効にする場合は、compose.yaml
の以下のコメントアウトを外しておく。
api:
(snip)
environment:
OPENAI_API_KEY: ${OPENAI_API_KEY}
AGNO_MONITOR: "True" # デフォルトではコメントアウトされている
AGNO_API_KEY: ${AGNO_API_KEY} # デフォルトではコメントアウトされている
DB_HOST: pgvector
DB_PORT: 5432
(snip)
そして、AgnoのAPIキー(Agnoのクラウドで確認できる)も環境変数にセットしておく。
export AGNO_API_KEY=XXXXXXXXXX
docker composeで起動
docker compose up -d
APIサーバとPostgreSQLが起動している様子。
docker compose ps
NAME IMAGE COMMAND SERVICE CREATED STATUS PORTS
agent-api-api-1 agent-api:latest "/app/scripts/entryp…" api About a minute ago Up About a minute 0.0.0.0:8000->8000/tcp, [::]:8000->8000/tcp
agent-api-pgvector-1 agnohq/pgvector:16 "docker-entrypoint.s…" pgvector About a minute ago Up About a minute 0.0.0.0:5432->5432/tcp, [::]:5432->5432/tcp
/docs
にアクセスしてみるとAPIドキュメントが確認できる。
Agno Playgroundから確認してみる。右のメニューからエンドポイントを追加。
READMEでは http://localhost:8000
とあるが、実際にはhttp://localhost:8000/v1
を追加する。名前は適宜。
追加したエンドポイントを選択(出てこない場合は更新アイコンをクリック)
エラーメッセージが表示されずに、緑色になっていればOK
ではチャットしてみる。デフォルトでは以下のようなエージェントが事前に用意されている。
事前構築済みエージェント
/agents
フォルダーには、初期設定として使用できる事前構築済みのエージェントが含まれています。
- Web 検索エージェント: ウェブを検索できるシンプルなエージェントです。
- Agno Assist: Agno に関する質問に回答するのを支援するエージェントです。
- 重要: このエージェントを使用する前に、agno_assist 知識ベースを必ず読み込んでください。
- 財務エージェント: YFinance API を使用して株価や財務データを取得するエージェントです。
ここでは財務エージェントを使って、NVIDIAの最新の株価を聞いてみる。
ローカルのAPIコンテナではデバッグログが出力されているので
docker logs -f agent-api-api-1
等として確認しながらやると良い。
ではローカルでcurlでやってみる。
まず最初にエージェントIDを取得する。
curl -s http://localhost:8000/v1/agents \
-H 'Content-type: applicaiton/json' | jq -r .
[
"web_agent",
"agno_assist",
"finance_agent"
]
エージェントにメッセージを送信するには /v1/agents/<エージェントID>/runs
で良さそう。
curl -X POST \
http://localhost:8000/v1/agents/finance_agent/runs \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-d '{
"message": "NVIDIAの株価について教えて",
"stream": false,
"model": "gpt-4.1",
"user_id": "kun432",
"session_id": "test-session-001"
}' | jq -r .
# NVIDIA(NASDAQ: NVDA)株価分析レポート
## Executive Summary
NVIDIAはAIブームとデータセンター事業の成長を牽引し、注目度が極めて高い半導体企業です。現在の株価は史上最高値圏に近く、アナリスト評価も引き続き強気が目立ちますが、AI関連セクター全体のボラティリティや競合との関係も意識が必要です。
---
## Market Overview
| 指標 | 最新値(2025/8/7時点) |
|--------------------|----------------------------------------|
| 現在株価 | $179.42(終値ベース) |
| 52週高値 | $183.30 |
| 52週安値 | $86.62 |
| 時価総額 | $4.38兆(Trillion) |
📈 株価はこの1年間で大きく上昇し、直近で史上最高値に迫る勢いです。
---
## 株価推移(過去1年、週足)
| 期間 | 始値 | 終値 |
|-----------------|---------|---------|
| 1年前 | $104.72 | $179.42 |
(主要な節目のみ抜粋。全データはご要望に応じて提供可能)
- 1年前:約$104 → 現在:約$179と約70%上昇
- 52週レンジでみても、暴落局面から力強い反発、右肩上がりのトレンドが続いています
---
## Financial Deep Dive
| 指標 | NVDA最新値 | 業界平均(参考) |
|--------------------|------------------|-------------------|
| PER(株価収益率) | 43.5 | 30前後(半導体) |
| PBR(株価純資産倍率)| 52.2 | 5-8(業界上位クラス)|
| 配当利回り | 0.02% | 低水準 |
| EPS(一株利益) | $3.10 | |
| β値(市場感応度) | 2.15 | 1.2〜1.5 |
- PER/PBRともに業界平均を大幅に上回り、「プレミアム評価」が継続中
- 配当利回りはほぼゼロ。成長期待の株価重視型
- β値が高く、市場全体の変動にも大きく反応しやすい傾向
---
## Analyst Recommendations(2025年8月 現在)
| 推奨 | 件数 |
|---------|------|
| 強気買い | 11 |
| 買い | 47 |
| ホールド | 6 |
| 売り | 1 |
| 強く売り | 0 |
- アナリストのほとんどが「買い」「強気買い」
- 推奨トレンドに大きな変化なく、依然強気
---
## 最新ニュース・話題
- [Nvidiaの「過小評価」されているネットワーキング事業が急成長](https://finance.yahoo.com/news/nvidias-most-underappreciated-business-is-taking-off-like-a-rocket-ship-183615113.html) (Yahoo Finance/2025-8-6)
- データセンター関連のネットワーク事業が急速拡大
- AMD、AI半導体競争で伸び悩み(Q2決算で-6%下落)。→ 相対的にNVIDIA優勢
- 「AI関連銘柄ラリーは続くが一時的な調整にも注意」との識者見解も
---
## 市場コンテキスト・競合状況
- AI/データセンター市場の拡大とともに需要超過が続く
- 主要競合AMDやSuper Micro Computerは足踏みや下方修正
- NVIDIAはネットワーキングやソフトウェア面の事業拡大も加速
---
## リスク・懸念点
- 📉 PER・PBRの高さに見られる「成長期待先行」の反動リスク
- 米中摩擦や半導体規制リスク
- AIバブル的過熱感への懸念(バリュエ―ションの巻き戻しリスク)
- β値が高いため、市場全体の下落時には大きな変動性
---
## Outlook(今後の見通し)
- 中長期的にAIとデータセンター新規需要が追い風。ただしプレミアム評価のため、決算や市場全体の波に大きく影響される可能性大。
- 短期ではVolatility(価格変動の大きさ)に十分な注意が必要。
---
### <ご参考:解説用語>
- **PER(株価収益率)**:株価が1株当たり純利益の何倍かを示す指標。成長株は高い傾向。
- **PBR(株価純資産倍率)**:株価が1株あたり純資産の何倍か。高すぎる場合は割高懸念。
- **EPS(Earnings Per Share)**:1株あたりの純利益。
---
ご質問やさらに詳細な指標のご希望があればお気軽にご連絡ください。
同じユーザIDとセッションIDを使えばコンテキストは維持されるので、ステートフルにやりとりできる。
curl -X POST \
http://localhost:8000/v1/agents/finance_agent/runs \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-d '{
"message": "それって今は買い時?簡潔に教えて。",
"stream": false,
"model": "gpt-4.1",
"user_id": "kun432",
"session_id": "test-session-001"
}' | jq -r .
### NVIDIAは今「買い時」か?【簡潔解説】
#### ✅ ポジティブ材料
- 強いAI需要・高い成長性
- アナリストは圧倒的に「買い」推奨が多い
- 業績・シェアともに絶好調
#### ⚠ 注意点・リスク
- 株価は既に過去最高水準、PERも非常に高い(割高懸念)
- 市場全体やAI分野に調整が入ると大きく下落するリスク
- 決算発表などイベント前後は特に値動きが激しい
---
### 📊 まとめ
- 長期成長には期待大 ➡ 現状は「高値掴み」のリスクも高い
- 今から買う場合は“短期調整(下落)覚悟 or 分割投資”が無難
---
**総評:強い企業だが、今は“割高”なので慎重にエントリー推奨。リスク許容度に合わせて判断を。**
上記のAgent APIをより高レベルでラップしたのがWorkspaceというやつっぽい。
またこれは後ほど。
Agnoだと結構シンプルに実装できてしまうので、スクラッチから書き始めてもいいとは思うんだけど、それでも公式からリファレンス実装的なものが用意されているのはとても助かる。