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

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

Google ColabでAzure OpenAIを利用して、Autogen v0.4のクィックスタートやってみた

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'」が出た場合 以下の対応すると解決する。※もっといい解決方法がある可能性あり

  1. 「ランタイム」→「セッションの再起動」を実行
  2. 以下のセルを再度実行
!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()

参考ページ

microsoft.github.io

microsoft.github.io

community.openai.com