phidata Agents クックブック (日本語版)

この記事は、[phidata](https://github.com/phidatahq/phidata)のAgentsサンプル集を日本語化し、実践的なチュートリアルとして再構成したものです。AIエージェントの基本から応用まで、ステップバイステップで学ぶことができます。

## 📚 学習コンテンツ

### 基礎編: AIエージェントの基本
#### 1. [Webサーチエージェント](01_web_search.py)
   - Web検索機能を持つ基本的なAIエージェントの実装
   - 検索結果の整形と表示方法の習得
   - 情報源の適切な引用方法

#### 2. [金融分析エージェント](02_finance_agent.py)
   - 株式市場データの取得と分析
   - 投資戦略の提案機能の実装
   - 財務データの視覚化

#### 3. [エージェントチーム](03_agent_team.py)
   - 複数エージェントの協調動作
   - 役割分担と情報共有の実装
   - チームワークフローの設計

### 発展編: 特殊機能の実装
#### 4. [推論エージェント](04_reasoning_agent.py)
   - 段階的な問題解決プロセス
   - 論理的思考の実装方法
   - 推論過程の可視化

#### 5. [RAGエージェント](05_rag_agent.py)
   - PDFからの知識ベース構築
   - ベクトルデータベースの活用
   - コンテキストを考慮した回答生成

#### 6. [プレイグラウンド](06_playground.py)
   - インタラクティブなUIの実装
   - 複数エージェントの統合管理
   - 対話履歴の保存と参照

### 監視・デバッグ編
#### 7. [モニタリング](07_monitoring.py)
   - エージェントの動作監視
   - パフォーマンス分析
   - ログ管理の実装

#### 8. [デバッグ機能](08_debugging.py)
   - エラー検出と対処
   - デバッグ情報の表示
   - トラブルシューティング手法

### 実践編: 特化型エージェント
#### 9. [Pythonエージェント](09_python_agent.py)
   - IMDBデータの分析
   - Pythonコードの自動生成と実行
   - データ可視化の実装

<blockquote class="twitter-tweet" data-media-max-width="800"><p lang="ja" dir="ltr">phidata CookbookのAgentフォルダの遊んでみた！<br>「09_python_agent.py」<br>✅データ分析の指示<br>✅パッケージが無い場合は自分でインストール<br>✅自分で考えて可視化<br>✅最後にレポート作成<br>＊相変わらず取り回しが良い構成なのにコード量が少ない。。。これはマジでAIがAIを作りやすい構成！ <a href="https://t.co/VsE2qm9Kr1">https://t.co/VsE2qm9Kr1</a> <a href="https://t.co/J9ccQ40rur">pic.twitter.com/J9ccQ40rur</a></p>&mdash; Maki@Sunwood AI Labs. (@hAru_mAki_ch) <a href="https://twitter.com/hAru_mAki_ch/status/1854878494842667366?ref_src=twsrc%5Etfw">November 8, 2024</a></blockquote> 

#### 10. [データアナリスト](10_data_analyst.py)
    - DuckDBを使用したSQL分析
    - データの統計処理
    - アスキーアートでの可視化

<blockquote class="twitter-tweet" data-media-max-width="800"><p lang="ja" dir="ltr">phidata CookbookのAgentフォルダの遊んでみた⑩<br>「10_data_analyst.py」<br>✅DuckDBによる効率的なデータ分析<br>✅ヒストグラムのアスキーアート表示<br>✅最適なバケットサイズの自動選択<br>✅分析プロセスの詳細な説明 <a href="https://t.co/xPZwcRkgbc">https://t.co/xPZwcRkgbc</a> <a href="https://t.co/q7npwZuWg9">pic.twitter.com/q7npwZuWg9</a></p>&mdash; Maki@Sunwood AI Labs. (@hAru_mAki_ch) <a href="https://twitter.com/hAru_mAki_ch/status/1854884878682407078?ref_src=twsrc%5Etfw">November 8, 2024</a></blockquote> 

### 応用編: 高度な機能実装
#### 11. [構造化出力](11_structured_output.py)
    - Pydanticモデルの活用
    - 映画脚本生成システム
    - 非同期処理の実装

<blockquote class="twitter-tweet" data-media-max-width="800"><p lang="ja" dir="ltr">phidata CookbookのAgentフォルダの遊んでみた⑪<br>「11_structured_output.py」<br>✅映画脚本の自動生成<br>✅JSONモードと構造化出力の比較<br>✅非同期処理のサポート<br>非同期だと。。。やはり会社が作れるのでは。。。 <a href="https://t.co/5WvXrhgo7h">https://t.co/5WvXrhgo7h</a> <a href="https://t.co/Xus8ewBh8G">pic.twitter.com/Xus8ewBh8G</a></p>&mdash; Maki@Sunwood AI Labs. (@hAru_mAki_ch) <a href="https://twitter.com/hAru_mAki_ch/status/1854886330356187613?ref_src=twsrc%5Etfw">November 8, 2024</a></blockquote> 

#### 12. [Python関数ツール](12_python_function_as_tool.py)
    - Hacker Newsデータの取得と分析
    - カスタムツールの実装
    - リアルタイムデータ処理

<blockquote class="twitter-tweet" data-media-max-width="800"><p lang="ja" dir="ltr">phidata CookbookのAgentフォルダの遊んでみた⑫<br>「12_python_function_as_tool.py」<br>✅Hacker News APIからのリアルタイムデータ取得<br>✅トップ記事の自動収集と整形<br>✅AI による記事の要約と分析<br>＊予め定義した関数も使える！… <a href="https://t.co/HiNqV1yMgO">https://t.co/HiNqV1yMgO</a> <a href="https://t.co/xciBxLcGhi">pic.twitter.com/xciBxLcGhi</a></p>&mdash; Maki@Sunwood AI Labs. (@hAru_mAki_ch) <a href="https://twitter.com/hAru_mAki_ch/status/1854887829362688404?ref_src=twsrc%5Etfw">November 8, 2024</a></blockquote> 

#### 13. [画像分析エージェント](13_image_agent.py)
    - 画像内容の分析
    - 視覚的特徴の言語化
    - 複数画像の比較

<blockquote class="twitter-tweet" data-media-max-width="800"><p lang="ja" dir="ltr">phidata CookbookのAgentフォルダの遊んでみた⑬<br>「13_image_agent.py」<br>✅画像内容の詳細な分析<br>✅複数画像の比較検証<br>つまり、ちゃんとエージェントに目もついてますよってことか！！！ <a href="https://t.co/tLc0EvHypP">https://t.co/tLc0EvHypP</a> <a href="https://t.co/EJfK9XrW8y">pic.twitter.com/EJfK9XrW8y</a></p>&mdash; Maki@Sunwood AI Labs. (@hAru_mAki_ch) <a href="https://twitter.com/hAru_mAki_ch/status/1854888121412075936?ref_src=twsrc%5Etfw">November 8, 2024</a></blockquote> 

#### 14. [画像生成エージェント](14_image_generator.py)
    - DALL-Eを使用した画像生成
    - 生成プロセスの制御
    - 画像品質の最適化

<blockquote class="twitter-tweet" data-media-max-width="800"><p lang="ja" dir="ltr">phidata CookbookのAgentフォルダの遊んでみた⑭<br>「14_image_generator.py」<br>✅自然言語による画像生成<br>✅GPT-4による生成指示の最適化<br>ヘッダー画像とかも自分で考えて作ってくれそう。。。<br>IdeogramとかAWSのTitanとか使えるように改造するか！ <a href="https://t.co/0JyNGJChID">https://t.co/0JyNGJChID</a> <a href="https://t.co/ry6vohmWD6">pic.twitter.com/ry6vohmWD6</a></p>&mdash; Maki@Sunwood AI Labs. (@hAru_mAki_ch) <a href="https://twitter.com/hAru_mAki_ch/status/1854889145610780691?ref_src=twsrc%5Etfw">November 8, 2024</a></blockquote> 

### 実用編: 実践的なアプリケーション
#### 15. [CLIアプリケーション](15_cli_app.py)
    - コマンドライン対話の実装
    - 検索履歴の管理
    - ユーザー入力の処理

<blockquote class="twitter-tweet" data-media-max-width="800"><p lang="ja" dir="ltr">phidata CookbookのAgentフォルダの遊んでみた⑮<br>「15_cli_app.py」<br>✅CLIベースの対話インターフェース<br>スポーツ情報（Bリーグ）について聞いてみた！<br>普通に検索エージェントとしても使えそう！ <a href="https://t.co/vdoEfVxlNs">https://t.co/vdoEfVxlNs</a> <a href="https://t.co/EjjUfTUo1e">pic.twitter.com/EjjUfTUo1e</a></p>&mdash; Maki@Sunwood AI Labs. (@hAru_mAki_ch) <a href="https://twitter.com/hAru_mAki_ch/status/1854890174205120761?ref_src=twsrc%5Etfw">November 8, 2024</a></blockquote> 

#### 16.  [動画生成](16_generate_video.py)
    - VideoGen APIの活用
    - 動画生成プロセスの制御
    - 進捗状況の監視

#### 17.  [中間処理ステップ](17_intermediate_steps.py)
    - 処理過程の可視化
    - 段階的な結果の表示
    - デバッグ情報の活用

<blockquote class="twitter-tweet" data-media-max-width="800"><p lang="ja" dir="ltr">phidata CookbookのAgentフォルダの遊んでみた⑰<br>「17_intermediate_steps.py」<br>✅リアルタイムの株価データ取得<br>✅ストリーミング形式でのレスポンス<br>✅中間処理ステップの表示 <a href="https://t.co/UvxciBIXu6">https://t.co/UvxciBIXu6</a> <a href="https://t.co/F2OW1VUlmt">pic.twitter.com/F2OW1VUlmt</a></p>&mdash; Maki@Sunwood AI Labs. (@hAru_mAki_ch) <a href="https://twitter.com/hAru_mAki_ch/status/1854891158033645933?ref_src=twsrc%5Etfw">November 8, 2024</a></blockquote> 

### 特殊編: 特定タスク向けエージェント
#### 18. [数値比較](18_is_9_11_bigger_than_9_9.py)
    - 数値計算の実装
    - 比較ロジックの構築
    - 結果の説明生成

<blockquote class="twitter-tweet" data-media-max-width="800"><p lang="ja" dir="ltr">phidata CookbookのAgentフォルダの遊んでみた⑱<br>「18_is_9_11_bigger_than_9_9.py」<br>✅四則演算の実行<br>✅数値の比較分析<br>✅結果の論理的な説明<br>Toolを実行できれば正解できるぽいな！ <a href="https://t.co/VFkXPYW8CF">https://t.co/VFkXPYW8CF</a> <a href="https://t.co/zqwaAtinuG">pic.twitter.com/zqwaAtinuG</a></p>&mdash; Maki@Sunwood AI Labs. (@hAru_mAki_ch) <a href="https://twitter.com/hAru_mAki_ch/status/1854892635020018069?ref_src=twsrc%5Etfw">November 8, 2024</a></blockquote> 

#### 19. [レスポンス変数](19_response_as_variable.py)
    - 応答データの構造化
    - 変数としての処理
    - データ型の最適化

<blockquote class="twitter-tweet" data-media-max-width="800"><p lang="ja" dir="ltr">phidata CookbookのAgentフォルダの遊んでみた⑲<br>「19_response_as_variable.py」<br>✅レスポンスの中身の表示 <a href="https://t.co/nN0bO2J6PO">https://t.co/nN0bO2J6PO</a> <a href="https://t.co/XShs0TSQH1">pic.twitter.com/XShs0TSQH1</a></p>&mdash; Maki@Sunwood AI Labs. (@hAru_mAki_ch) <a href="https://twitter.com/hAru_mAki_ch/status/1854893288094154844?ref_src=twsrc%5Etfw">November 8, 2024</a></blockquote> 

#### 20. [システムプロンプト](20_system_prompt.py)
    - プロンプトエンジニアリング
    - システム設定の最適化
    - 応答品質の向上

### エンタープライズ編: ビジネス向け機能

####  21. [複数ツール統合](21_multiple_tools.py)
    - 複数APIの統合
    - データソースの連携
    - 総合分析機能の実装

<blockquote class="twitter-tweet" data-media-max-width="800"><p lang="ja" dir="ltr">phidata CookbookのAgentフォルダの遊んでみた㉑<br>「21_multiple_tools.py」<br>✅総合企業分析レポート生成エージェント <a href="https://t.co/aOu9E5ABz6">https://t.co/aOu9E5ABz6</a> <a href="https://t.co/qEfwRMOzHS">pic.twitter.com/qEfwRMOzHS</a></p>&mdash; Maki@Sunwood AI Labs. (@hAru_mAki_ch) <a href="https://twitter.com/hAru_mAki_ch/status/1854894209838493699?ref_src=twsrc%5Etfw">November 8, 2024</a></blockquote>

#### 22.  [エージェントメトリクス](22_agent_metrics.py)
    - パフォーマンス測定
    - メトリクスの可視化
    - 最適化の指標設定

<blockquote class="twitter-tweet" data-media-max-width="800"><p lang="ja" dir="ltr">phidata CookbookのAgentフォルダの遊んでみた㉒<br>「22_agent_metrics.py」<br>✅エージェントのトークンの出入り情報とか見れる！<br>これは管理側としてはめちゃ助かる！ <a href="https://t.co/imh5Ve3oXk">https://t.co/imh5Ve3oXk</a> <a href="https://t.co/yVuYoFRw4o">pic.twitter.com/yVuYoFRw4o</a></p>&mdash; Maki@Sunwood AI Labs. (@hAru_mAki_ch) <a href="https://twitter.com/hAru_mAki_ch/status/1854897330727899526?ref_src=twsrc%5Etfw">November 8, 2024</a></blockquote> 

#### 23.  [リサーチエージェント](23_research_agent.py)
    - 包括的な情報収集
    - 記事生成機能
    - 信頼性の評価

<blockquote class="twitter-tweet" data-media-max-width="800"><p lang="ja" dir="ltr">phidata CookbookのAgentフォルダの遊んでみた | 23<br>「23_research_agent.py」<br>✅ウェブ検索による情報収集<br>✅記事本文の抽出と分析<br>✅高品質な記事の生成<br>✅ストリーミング形式での出力<br><br>これでAgentのフォルダは走破した！<br>ざっくり記事にまとめたら次に行きます！ <a href="https://t.co/FzQfzgqM7O">https://t.co/FzQfzgqM7O</a> <a href="https://t.co/ZAP9Mxz9fw">pic.twitter.com/ZAP9Mxz9fw</a></p>&mdash; Maki@Sunwood AI Labs. (@hAru_mAki_ch) <a href="https://twitter.com/hAru_mAki_ch/status/1855065963320033336?ref_src=twsrc%5Etfw">November 9, 2024</a></blockquote> 
## 🎯 前提条件

- Python 3.8以上
- OpenAI APIキー
- 必要に応じて各種APIキー（DALL-E, Zoom等）

## 🛠️ セットアップ

1. リポジトリのクローン:
```bash
git clone https://github.com/your-username/phidata-cookbook-jp.git
```

2. 依存パッケージのインストール:
```bash
PS C:\Prj\phidata-cookbook-jp> uv venv 
Using Python 3.10.15
Creating virtualenv at: .venv
Activate with: .venv\Scripts\activate
PS C:\Prj\phidata-cookbook-jp> .venv\Scripts\activate
(phidata-cookbook-jp) PS C:\Prj\phidata-cookbook-jp> uv pip install -U phidata

```



3. 環境変数の設定:
```bash
cp .env.example .env
# .envファイルを編集して必要なAPIキーを設定
```

## 📖 使用方法

1. 各サンプルは独立して実行可能です
2. サンプルコードには詳細なコメントが付与されています
3. 段階的に基礎から応用へと進むことをお勧めします

## 🤝 コントリビューション

- バグ報告や機能要望はIssueで受け付けています
- プルリクエストも歓迎します
- コードの改善案や新しいサンプルの提案も歓迎します

## 📝 ライセンス

このプロジェクトはMITライセンスの下で公開されています。

## 🔗 参考リンク

- [phidata公式ドキュメント](https://docs.phidata.com)
- [phidata GitHub](https://github.com/phidatahq/phidata)
- [コミュニティフォーラム](https://community.phidata.com/)


<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>