OpenAI APIを使用した計画、ツール呼び出し、メモリ、自己批判を備えた高度なエージェンティックAIシステムの構築方法
このチュートリアルでは、OpenAI APIを使用して、プランナー、ツール実行エグゼキュータ、批評家の3つの専門ロールからなるパイプラインを持つ高度なエージェント型AIシステムを構築します。計算機、知識ベース検索、JSON抽出、ファイル書き込みなどの構造化ツールを統合し、信頼性の高い計算、ガイダンスの取得、構造化出力の生成、成果物の保存を実現します。完全なコード例とデモケースを提供します。
このチュートリアルでは、OpenAI APIを使用して、計画、ツール呼び出し、メモリ、自己批判を備えた高度なエージェント型AIシステムを構築します。エージェントは、プランナー、ツール実行エグゼキュータ、批評家という3つの専門ロールからなる小さなパイプラインとして設計され、戦略、行動、品質管理を分離します。また、計算機、小型知識ベース検索、JSON抽出、ファイル書き込みなどの構造化ツールを統合し、エージェントが確実に計算、ガイダンスの取得、構造化出力の生成、成果物の保存を行えるようにします。
まず、OpenAI SDKをインストールし、必要なモジュールのみをインポートして、Colabでの軽量性と再現性を維持します。APIキーはgetpass()を使用して非表示で取得し、ノートブックの出力やコードに表示されないようにします。次に、OpenAIクライアントを作成し、モデル文字列を一度設定して、システムの他の部分で一貫して再利用できるようにします。
次に、エージェントがツール呼び出しを介して相談できる、チームのドキュメントやプレイブックをシミュレートする小さな内部「知識ベース」を定義します。ツールの出力を機械可読かつ堅牢にするために、構造化ディクショナリを返すツールを実装します。これらのツールには、安全な計算機、キーワードベースの知識ベース検索、構造化解析用のJSON抽出器、最終成果物を成果物として保存するファイル書き込みが含まれます。
Pythonツールをマッピングに登録し、関数呼び出し中に名前で呼び出せるようにします。モデルが正しい引数構造でツールを呼び出せるように、ツールスキーマを宣言します。目標、メモリ、ツール呼び出しトレースを保存するAgentStateを定義し、何が起こったかを検査し、エージェントの動作をデバッグできるようにします。ツールが提供されている場合にのみtool_choiceを含む安全なchat()ラッパーを実装し、400エラーを防ぎます。
エージェントの責任を分離するために3つのロールプロンプトを定義します。プランナーは構造化された計画を生成し、エグゼキュータはタスクを実行し必要に応じてツールを使用し、批評家は最終出力を改善します。モデル呼び出しを実行し、ツール呼び出しを検出し、Pythonで実行し、その出力をモデルにフィードバックするループを実装します。これにより、単発のテキスト生成ではなく、真のツールを使用するエージェントが作成されます。
批評家はドラフトをレビューし、洗練された最終応答を生成します。ツールトレースをデバッグと説明責任のための追加証拠として使用します。run_agent()は完全なループをオーケストレーションします。状態の初期化、計画、ツールを使用した実行、批評、最終化です。最後に、現実的な成果物(要約、構造化アクションアイテムJSON、フォローアップメール、write_fileツールを使用したファイルへの保存)を強制するデモ目標を提供します。
結論として、計画、ツール実行、批評ベースの改善を明確に分離した実用的なエージェントアーキテクチャを実装しました。厳密なスキーマを持つ実際のツールにモデルを接続し、デバッグ用の透過的なツールトレースを記録し、最終出力をファイルに保存して成果物を生成しました。この構造により、ツールの再試行ポリシー、並列サブエージェント、よりリッチなメモリ(ベクター+シンボリック)、評価ハーネスを追加して、エージェントをより本番環境に対応したワークフローに拡張できます。
完全なコードとノートブックはこちらでご覧いただけます。また、Twitterでフォローし、150k+ ML SubRedditに参加し、ニュースレターを購読してください。Telegramをご利用の場合は、こちらから参加できます。
GitHubリポジトリ、Hugging Faceページ、製品リリース、ウェビナーなどのプロモーションで協力が必要な場合は、お問い合わせください。