📑

【Azure AI Agent Service】- Azure AI Agent ServiceでAI Agentを作成してみる①

2024/12/31に公開

執筆日

2024/12/31

やること

Azure AI Agent ServiceがAzure AI Foundryで利用可能になりましたー!
AI Agentについて理解が浅いので、実際に触りながら学習しようと思います。
Bing Searchをナレッジにしようかなと。
※プレビュー版のため、挙動が不安定です...

流れ

  1. Azure環境準備
  2. AIエージェント作成
  3. プレイグラウンドで実装
  4. コードで実装

Azure環境準備

必要なリソースは以下です。

  • Azure OpenAI
  • Azure AI Servicesプロジェクト/hub
  • Grounding with Bing Search

参考資料

Azure OpenAI
https://learn.microsoft.com/ja-jp/azure/ai-services/openai/how-to/create-resource?pivots=web-portal
Azure AI Servicesプロジェクト/hub
https://learn.microsoft.com/ja-jp/azure/ai-studio/how-to/create-azure-ai-resource?tabs=portal
Grounding with Bing Search
https://learn.microsoft.com/ja-jp/azure/ai-services/agents/how-to/tools/bing-grounding?tabs=python&pivots=overview

Azure上でAIエージェント作成

  1. 左タブの「マイアセット>モデル+エンドポイント」からLLMモデルをデプロイする
  2. Azure AI Projectを開き、左タブの「エージェント」をクリックする
  3. 先ほど構築した「Azure OpenAI Service」をクリックし、「始めましょう」をクリックする
  4. 「+新しいエージェント」をクリックする
  5. 作成されたエージェントをクリックする
  6. デプロイタブでモデルを選択する
  7. ナレッジタブの「追加」をクリックする
  8. 「Bing検索...グラウンド」をクリックする
  9. 先ほど構築した「Grounding with Bing Search」を選択し、「接続」をクリックする
  10. 「プレイグラウンド..」をクリックする
  11. 今日の天気を聞いてみる
  12. 結果を確認


13. 英語で聞いてみる。
※挙動に問題ないし。

コードでAIエージェント作成

  1. 以下を実行する

https://github.com/Azure/azure-sdk-for-python/blob/main/sdk/ai/azure-ai-projects/samples/agents/sample_agents_bing_grounding.py

from azure.ai.projects import AIProjectClient
from azure.identity import DefaultAzureCredential
from azure.ai.projects.models import BingGroundingTool

project_client = AIProjectClient.from_connection_string(
    credential=DefaultAzureCredential(),
    conn_str=<Projectの接続文字列>,
)

# [START create_agent_with_bing_grounding_tool]
bing_connection = project_client.connections.get(connection_name=<Bingのリソース名>)
conn_id = bing_connection.id

print(conn_id)

# Initialize agent bing tool and add the connection id
bing = BingGroundingTool(connection_id=conn_id)

# Create agent with the bing tool and process assistant run
with project_client:
    agent = project_client.agents.create_agent(
        model=<モデル名>,
        name="my-assistant",
        instructions="You are a helpful assistant",
        tools=bing.definitions,
        headers={"x-ms-enable-preview": "true"},
    )
    # [END create_agent_with_bing_grounding_tool]

    print(f"Created agent, ID: {agent.id}")

    # Create thread for communication
    thread = project_client.agents.create_thread()
    print(f"Created thread, ID: {thread.id}")

    # Create message to thread
    message = project_client.agents.create_message(
        thread_id=thread.id,
        role="user",
        content="東京の天気について教えて",
    )
    print(f"Created message, ID: {message.id}")

    # Create and process agent run in thread with tools
    run = project_client.agents.create_and_process_run(
        thread_id=thread.id, assistant_id=agent.id
    )
    print(f"Run finished with status: {run.status}")

    if run.status == "failed":
        print(f"Run failed: {run.last_error}")

    # Delete the assistant when done
    project_client.agents.delete_agent(agent.id)
    print("Deleted agent")

    # Fetch and log all messages
    messages = project_client.agents.list_messages(thread_id=thread.id)
    print(f"Messages: {messages}")

実行ログ

Messages: {'object': 'list', 'data': [{'id': 'msg_68FMxytcOiaYOkaDprjU2a4i', 'object': 'thread.message', 'created_at': 1735559364, 'assistant_id': 'asst_9EgQJMdwklNf0zxyoo7BhRLj', 'thread_id': 'thread_xMF3T7edNHAPPiZMkgLTPC1z', 'run_id': 'run_TkuykG5rZhTacxGlAQucJsK7', 'role': 'assistant', 'content': [{'type': 'text', 'text': {'value': '現在の東京 の天気は晴れで、気温は26℃、最低気温は19℃です【3†source】。今日は基本的に晴れていて暖かいですが、夜と明日には重い雨と雲が予想されています【0†source】。', 'annotations': [{'type': 'url_citation', 'text': '【3†source】', 'start_index': 30, 'end_index': 40, 'url_citation': {'url': 'https://www.accuweather.com/en/jp/tokyo/226396/current-weather/226396', 'title': 'Tokyo, Tokyo, Japan Current Weather | AccuWeather'}}, {'type': 'url_citation', 'text': '【0†source】', 'start_index': 80, 'end_index': 90, 'url_citation': {'url': 'https://www.accuweather.com/en/jp/tokyo/226396/weather-forecast/226396', 'title': 'Tokyo, Tokyo, Japan Weather Forecast | AccuWeather'}}]}}], 'attachments': [], 'metadata': {}}, {'id': 'msg_Sbv7Ri2cknVVZ7ylBd5M6Hf0', 'object': 'thread.message', 'created_at': 1735559361, 'assistant_id': None, 'thread_id': 'thread_xMF3T7edNHAPPiZMkgLTPC1z', 'run_id': None, 'role': 'user', 'content': [{'type': 'text', 'text': {'value': '東京の天気について教えて', 'annotations': []}}], 'attachments': [], 'metadata': {}}], 'first_id': 'msg_68FMxytcOiaYOkaDprjU2a4i', 'last_id': 'msg_Sbv7Ri2cknVVZ7ylBd5M6Hf0', 'has_more': False}

まとめ

Azure AI Agent serviceを触ってみました。
プレビュー版とのこともあり、挙動があれ?っという箇所もいくつか..
まだいろいろ機能があるので、触りながらAgentに対する理解を高めていこうかなと。

ヘッドウォータース

Discussion