2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

動かします。

🤖 Agents SDK - Swarmをベースとして改善したマルチエージェントワークフローをオーケストレーションする新たなオープンソースSDKです。ビルトインのツール、タスクの引き継ぎ、安全ガードレイルの追加、デバッグとパフォーマンス最適化のための実行トレースの可視化を用いてエージェントを設定します。

SDK自体はこちらに。

Hello Worldサンプル

%pip install openai-agents
%restart_python
import os
os.environ["OPENAI_API_KEY"] = dbutils.secrets.get(scope="demo-token-takaaki.yayoi", key="openai_api_key")

Hello Worldサンプルを動かします。コメントやリテラルは翻訳しています。

from agents import Agent, Runner

agent = Agent(name="アシスタント", instructions="あなたは役に立つアシスタントです")

result = Runner.run_sync(agent, "プログラミングにおける再帰について俳句を書いてください。")
print(result.final_output)

# コードの中のコード、
# 自分自身を呼び出す関数、
# 無限ループの舞。

しかし、RuntimeError: This event loop is already runningとエラーになります。すでにループが実行中とな。

こちらに理由が。

ノートブック環境ではすでにイベントループが実行されているので、新規に作成する必要はないのでawaitすればいいとのこと。なので、以下のようにawaitします。

from agents import Agent, Runner

agent = Agent(name="アシスタント", instructions="あなたは役に立つアシスタントです")

result = await Runner.run(agent, "プログラミングにおける再帰について俳句を書いてください。")
print(result.final_output)

# コードの中のコード、
# 自分自身を呼び出す関数、
# 無限ループの舞。

動きました。

再帰せし  
自己を呼び出し  
解を探す

そして、トレースはhttps://platform.openai.com/tracesで確認できます。

Screenshot 2025-03-12 at 12.45.01.png

引き継ぎサンプル

from agents import Agent, Runner
import asyncio

spanish_agent = Agent(
    name="スペイン語エージェント",
    instructions="あなたはスペイン語のみを話します。",
)

english_agent = Agent(
    name="英語エージェント",
    instructions="あなたは英語のみを話します。",
)

triage_agent = Agent(
    name="トリアージエージェント",
    instructions="リクエストの言語に基づいて適切なエージェントに引き継ぎます。",
    handoffs=[spanish_agent, english_agent],
)


async def main():
    result = await Runner.run(triage_agent, input="Hola, ¿cómo estás?")
    print(result.final_output)
    # ¡Hola! Estoy bien, gracias por preguntar. ¿Y tú, cómo estás?


if __name__ == "__main__":
    await main()
¡Hola! Estoy bien, gracias. ¿Y tú?

スペイン語エージェントに引き継がれています。

Screenshot 2025-03-12 at 12.47.51.png

関数サンプル

import asyncio

from agents import Agent, Runner, function_tool


@function_tool
def get_weather(city: str) -> str:
    return f"{city}の天気は晴れです。"


agent = Agent(
    name="こんにちは世界",
    instructions="あなたは役に立つエージェントです。",
    tools=[get_weather],
)


async def main():
    result = await Runner.run(agent, input="東京の天気は?")
    print(result.final_output)
    # 東京の天気は晴れです。


if __name__ == "__main__":
    await main()

Screenshot 2025-03-12 at 12.49.49.png

経緯的にはこちら(SwarmのLangchain実装)ともオーバーラップしてきてます。OpenAIのAPIだけを使うのであればOpenAI Agents SDKの方が使いやすいのかもしれません。エージェントの足回りもどんどん整備されてきていますね。

はじめてのDatabricks

はじめてのDatabricks

Databricks無料トライアル

Databricks無料トライアル

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?