SEが最近起こったことを書くブログ

ITエンジニアが試したこと、気になったことを書いていきます。

OpenAIのAgents SDKをAzure OpenAI ServiceでGoogle Colabで動かしてみた

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)

参考にしたページ

platform.openai.com

github.com