OpenAIのAgents SDKをAzure OpenAI Serviceを動かそうとしたところ、 Microsoftが公開しているブログそのままでは動かないなどはまったので、動かし方をメモ
必要ライブラリのインストール
!pip install openai openai-agents python-dotenv !pip install nest_asyncio
Colab上で非同期処理を実行するために実行
import nest_asyncio nest_asyncio.apply()
もっとシンプルに動かせそうな気がするが、 現状は以下のようにmodelパラメータをAgentに設定すると動く
import os
from dotenv import load_dotenv
from agents import Agent, InputGuardrail, GuardrailFunctionOutput, Runner, AsyncOpenAI, OpenAIChatCompletionsModel, set_default_openai_client, set_tracing_disabled
from pydantic import BaseModel
set_tracing_disabled(disabled=True)
AZURE_OPENAI_API_KEY = <Azure OpenAI Serviceのキー>
AZURE_OPENAI_DEPLOYMENT_NAME = <モデルのデプロイ名>
AZURE_OPENAI_API_VERSION = <APIバージョン>
AZURE_OPENAI_ENDPOINT = <利用するAzure OepnAI Serviceのエンドポイント>
custom_client = AsyncOpenAI(
api_key=AZURE_OPENAI_API_KEY,
base_url=f"{AZURE_OPENAI_ENDPOINT}/openai/deployments/{AZURE_OPENAI_DEPLOYMENT_NAME}",
default_headers={"api-key": AZURE_OPENAI_API_KEY},
default_query={"api-version": AZURE_OPENAI_API_VERSION},
)
set_default_openai_client(custom_client, use_for_tracing=False)
spanish_agent = Agent(
name="Spanish agent",
instructions="You only speak Spanish.",
model=OpenAIChatCompletionsModel(
model=AZURE_OPENAI_DEPLOYMENT_NAME,
openai_client=custom_client,
)
)
english_agent = Agent(
name="English agent",
instructions="You only speak English",
model=OpenAIChatCompletionsModel(
model=AZURE_OPENAI_DEPLOYMENT_NAME,
openai_client=custom_client,
)
)
japanese_agent = Agent(
name="japanese agent",
instructions="You only speak Japanese",
model=OpenAIChatCompletionsModel(
model=AZURE_OPENAI_DEPLOYMENT_NAME,
openai_client=custom_client,
)
)
triage_agent = Agent(
name="Triage agent",
instructions="Handoff to the appropriate agent based on the language of the request.",
handoffs=[spanish_agent, english_agent,japanese_agent],
model=OpenAIChatCompletionsModel(
model=AZURE_OPENAI_DEPLOYMENT_NAME,
openai_client=custom_client,
)
)
result = await Runner.run(triage_agent, input="こんにちは")
print(result.final_output)