Autogen v0.4のクィックスタートをAzure OpenAI Serviceを使ってやってみた
事前準備
- Azure OpenAI Serviceのリソース作成
- Azure OpenAI Serviceに利用するモデルをデプロイしておく
- ColabのシークレットにAzure OpenAIという名前のシークレットを登録しておく
Colabでの作業
まず必要なライブラリをインストール
!pip install 'autogen-ext[openai,azure]==0.4.0.dev8' !pip install httpx==0.27.2 !pip install 'autogen-agentchat==0.4.0.dev8'
※httpx==0.27.2を指定しないと「TypeError: AsyncClient.init() got an unexpected keyword argument 'proxies'」のエラーが発生するため指定
上記、セルを実行した後に「TypeError: AsyncClient.init() got an unexpected keyword argument 'proxies'」が出た場合 以下の対応すると解決する。※もっといい解決方法がある可能性あり
- 「ランタイム」→「セッションの再起動」を実行
- 以下のセルを再度実行
!pip install 'autogen-ext[openai,azure]==0.4.0.dev8' !pip install httpx==0.27.2 !pip install 'autogen-agentchat==0.4.0.dev8' 'autogen-ext[openai]==0.4.0.dev8'
おそらく、openaiライブラリを1.55.3以上にするでも解決する
以下のコードで利用するクライアントを作成する
from autogen_ext.models import AzureOpenAIChatCompletionClient from azure.identity import DefaultAzureCredential, get_bearer_token_provider from google.colab import userdata api_key=userdata.get('AzureOpenAI') # 予め登録したシークレットを使う from openai.lib.azure import AzureOpenAI az_model_client = AzureOpenAIChatCompletionClient( azure_deployment=<Azure OpenAI Serviceでのデプロイ名>, model=<利用するモデル>, # gpt-4o-2024-08-06など api_version="2024-06-01", azure_endpoint=<Azure OpenAI Serviceのエンドポイント>, api_key=api_key, # 上記で設定したキー. )
クィックスタートのコードをクライアントと一部import文を変更し、実行
from autogen_agentchat.agents import AssistantAgent from autogen_agentchat.task import TextMentionTermination # autogen_agentchat.conditionsのままだと動かなかった from autogen_agentchat.teams import RoundRobinGroupChat from autogen_agentchat.task import Console # autogen_agentchat.uiのままだと動かなかった from autogen_ext.models import OpenAIChatCompletionClient # Define a tool async def get_weather(city: str) -> str: return f"The weather in {city} is 73 degrees and Sunny." async def main() -> None: # Define an agent weather_agent = AssistantAgent( name="weather_agent", model_client=az_model_client, tools=[get_weather], ) # Define termination condition termination = TextMentionTermination("TERMINATE") # Define a team agent_team = RoundRobinGroupChat([weather_agent], termination_condition=termination) # Run the team and stream messages to the console stream = agent_team.run_stream(task="What is the weather in New York?") await Console(stream) # NOTE: if running this inside a Python script you'll need to use asyncio.run(main()). await main()