AIを操る:OpenAI Agents SDK入門

プロジェクト概要

OpenAI Agents SDKは、複数のエージェントが連携するワークフローを構築するためのPythonフレームワークです。 OpenAI ResponsesやChat Completions APIをはじめ、100種類以上の大規模言語モデル(LLM)に対応しており、特定のプロバイダーに依存しません。軽量でありながら、複数のエージェント間の連携を強力にオーケストレーションする能力を備えています。

エージェント追跡UIの画像

主要な概念: - エージェント: 特定の指示、ツール、ガードレール、ハンドオフで構成されたLLM。 - ハンドオフ: 異なるエージェント間で制御を移すための、特殊なツール呼び出し。 - ガードレール: 入力と出力の検証を設定できる安全チェック機能。 - トレース: エージェントの実行を追跡、デバッグ、最適化するための組み込み機能。

使用方法

1. Python環境のセットアップ:

python -m venv env
source env/bin/activate

2. Agents SDKのインストール:

pip install openai-agents
音声サポートを有効にするには、オプションのvoiceグループを含めてインストールします:
pip install 'openai-agents[voice]'

3. ハローワールドの例: 基本的なエージェントを実行する方法です:

from agents import Agent, Runner

agent = Agent(name="Assistant", instructions="You are a helpful assistant")

result = Runner.run_sync(agent, "Write a haiku about recursion in programming.")
print(result.final_output)
OPENAI_API_KEY環境変数が設定されていることを確認してください。)

4. ハンドオフの例: 言語に基づいたエージェントのハンドオフを示す例です:

from agents import Agent, Runner
import asyncio

spanish_agent = Agent(
    name="Spanish agent",
    instructions="You only speak Spanish.",
)

english_agent = Agent(
    name="English agent",
    instructions="You only speak English",
)

triage_agent = Agent(
    name="Triage agent",
    instructions="Handoff to the appropriate agent based on the language of the request.",
    handoffs=[spanish_agent, english_agent],
)

async def main():
    result = await Runner.run(triage_agent, input="Hola, ¿cómo estás?")
    print(result.final_output)

if __name__ == "__main__":
    asyncio.run(main())

5. 関数の例: カスタム関数をエージェントのツールとして統合する方法です:

import asyncio
from agents import Agent, Runner, function_tool

@function_tool
def get_weather(city: str) -> str:
    return f"The weather in {city} is sunny."

agent = Agent(
    name="Hello world",
    instructions="You are a helpful agent.",
    tools=[get_weather],
)

async def main():
    result = await Runner.run(agent, input="What's the weather in Tokyo?")
    print(result.final_output)

if __name__ == "__main__":
    asyncio.run(main())

開発(SDKへの貢献を検討している方向け): 1. uvがインストールされていることを確認します。 2. 依存関係をインストールします: make sync 3. リンター/テストを実行します: make testsmake mypymake lint

主な機能

  • マルチエージェントワークフロー: 複数のLLMエージェント間で複雑な連携を構築するためのフレームワーク。
  • プロバイダー非依存: OpenAI APIと、100種類以上の他のLLMをサポート。
  • エージェント設定: 指示、ツール、ガードレール、ハンドオフでエージェントを構成可能。
  • ハンドオフメカニズム: エージェント間でシームレスに制御を移すための、特殊なツール呼び出し。
  • ガードレール: 入力と出力の検証を行う、設定可能な安全チェックを実装。
  • 組み込みトレース: エージェントの実行を自動的に追跡・デバッグし、カスタムスパンや外部の宛先(例: Logfire, AgentOps, Braintrust)への拡張性も備える。
  • 構造化出力: エージェントが構造化された最終出力を生成するためのoutput_typeを定義可能。
  • 柔軟なエージェントループ: 最終出力が生成されるまで実行され、ツール呼び出しやハンドオフを繰り返し処理。制御用のmax_turnsパラメータも用意。
  • ツール統合: カスタム関数をエージェントのツールとして使用可能。

ターゲットユーザー

  • マルチエージェントAIアプリケーションを開発する方。
  • LLMやAIワークフローを扱う研究者、実務家。
  • 複数のAIエージェントが関わる複雑なタスクをオーケストレーションする必要がある方。

プロジェクトリンク

アプリケーションシナリオ

  • 複雑な情報抽出と処理: エージェントが協力して、多様なソースから情報を抽出、処理、要約。
  • 自動化された顧客サービス: トリアージエージェントが問い合わせを専門エージェントに振り分けたり、エージェントが顧客対応の異なる段階(初回挨拶、問題診断、解決策提示など)を処理。
  • コード生成とデバッグ: プログラミング言語やデバッグタスクごとにエージェントを特化させ、必要に応じてハンドオフ。
  • コンテンツ作成ワークフロー: エージェントが協調してクリエイティブコンテンツのドラフト作成、編集、改善を行い、ガードレールでスタイルガイドや安全プロトコルへの準拠を保証。
  • データ分析とレポート作成: データ取得、分析、可視化、レポート生成の役割をエージェントに割り当て。
  • インタラクティブなチュートリアルと学習環境: エージェントがユーザーをステップごとに案内し、フィードバックを提供したり、ユーザーの入力や進捗に応じて応答を調整。

この記事を共有