Phidata入門ガイド：エージェント構築からUI活用まで徹底解説（📒 GoogleColabノート付）

## はじめに
Phidataは、AIエージェントの構築と管理に最適なフレームワークで、知識、ツール、記憶機能を備えたエージェントの作成をサポートします。本記事では、Phidataを使ったエージェント構築方法や、主要な機能について解説します。

## Phidataの特徴
Phidataの注目すべき機能は以下の通りです：

- **エージェントの作成**：ツールと知識を持ったAIエージェントを作成可能
- **エージェントチームの構築**：複数のエージェントを連携させて一括管理
- **エージェントUI**：直感的なUIでエージェントと対話
- **モニタリングと最適化**：エージェントのパフォーマンスをリアルタイムで監視・評価

## Phidataのインストール
以下のコマンドで、Phidataをインストールします。

```bash
pip install -U phidata
```

必要なAPIキー（`OPENAI_API_KEY`）も事前に設定しておく必要があります。

## エージェントの構築方法

### Web検索エージェント
Web検索を担当するエージェントのサンプルコードを以下に示します。

```python
from phi.agent import Agent
from phi.model.openai import OpenAIChat
from phi.tools.duckduckgo import DuckDuckGo

web_agent = Agent(
    name="Web Agent",
    model=OpenAIChat(id="gpt-4o"),
    tools=[DuckDuckGo()],
    instructions=["常にソースを含める"],
    show_tool_calls=True,
    markdown=True,
)

web_agent.print_response("フランスで何が起こっているのか?", stream=True)
```

### 金融データエージェント
株価データやアナリストの推奨情報を取得する金融エージェントです。

```python
from phi.agent import Agent
from phi.model.openai import OpenAIChat
from phi.tools.yfinance import YFinanceTools

finance_agent = Agent(
    name="Finance Agent",
    model=OpenAIChat(id="gpt-4o"),
    tools=[YFinanceTools(stock_price=True, analyst_recommendations=True, company_info=True, company_news=True)],
    instructions=["データは表形式で表示する"],
    show_tool_calls=True,
    markdown=True,
)

finance_agent.print_response("NVDAのアナリスト推奨を要約してください", stream=True)
```

## エージェントチームの構築
異なる役割を持つエージェントを1つのチームにまとめ、連携させることで複雑なタスクを効率的に解決します。

```python
from phi.agent import Agent
from phi.model.openai import OpenAIChat
from phi.tools.duckduckgo import DuckDuckGo
from phi.tools.yfinance import YFinanceTools

agent_team = Agent(
    team=[web_agent, finance_agent],
    instructions=["常にソースを含める", "データは表形式で表示する"],
    show_tool_calls=True,
    markdown=True,
)

agent_team.print_response("NVDAに関する最新ニュースと推奨要約を提供してください", stream=True)
```

## 高度な機能：推論エージェント
Phidataでは、推論エージェントを使って問題解決の過程を段階的に説明させることができます。

```python
from phi.agent import Agent
from phi.model.openai import OpenAIChat

task = (
    "3人の宣教師と3人の食人族が川を渡りたい。"
    "2人まで乗れる船があるが、宣教師より食人族が多くなったら宣教師は食べられる。"
)

reasoning_agent = Agent(model=OpenAIChat(id="gpt-4o"), reasoning=True, markdown=True, structured_outputs=True)
reasoning_agent.print_response(task, stream=True, show_full_reasoning=True)
```

## RAGエージェント：トークン節約と応答品質向上
RAGエージェントは、コンテキスト全体を毎回挿入する代わりに、必要な情報だけを知識ベースから取得することで効率化を図ります。

```python
from phi.agent import Agent
from phi.model.openai import OpenAIChat
from phi.embedder.openai import OpenAIEmbedder
from phi.knowledge.pdf import PDFUrlKnowledgeBase
from phi.vectordb.lancedb import LanceDb, SearchType

knowledge_base = PDFUrlKnowledgeBase(
    urls=["https://phi-public.s3.amazonaws.com/recipes/ThaiRecipes.pdf"],
    vector_db=LanceDb(
        table_name="recipes",
        uri="tmp/lancedb",
        search_type=SearchType.vector,
        embedder=OpenAIEmbedder(model="text-embedding-3-small"),
    ),
)

knowledge_base.load()

agent = Agent(
    model=OpenAIChat(id="gpt-4o"),
    knowledge=knowledge_base,
    show_tool_calls=True,
    markdown=True,
)

agent.print_response("トムカーガイの作り方は?", stream=True)
```


## まとめ
Phidataは、強力なAIエージェントシステムを迅速に構築・管理できる優れたフレームワークです。公式ドキュメントやフォーラムで詳細を学び、プロジェクトに最適なエージェントを構築してみましょう。

## ノートブック

https://colab.research.google.com/drive/1b6jx0XLJD2pAeqK4y5mn02CfeEJ5N9-8?usp=sharing

---

## リソースと参考リンク
- [Phidata公式ドキュメント](https://docs.phidata.com)
- [Phidata GitHubリポジトリ](https://github.com/phidatahq/phidata)