📑
【Azure AI Agent Service】- Azure AI Agent ServiceでAI Agentを作成してみる①
執筆日
2024/12/31
やること
Azure AI Agent ServiceがAzure AI Foundryで利用可能になりましたー!
AI Agentについて理解が浅いので、実際に触りながら学習しようと思います。
Bing Searchをナレッジにしようかなと。
※プレビュー版のため、挙動が不安定です...
流れ
- Azure環境準備
- AIエージェント作成
- プレイグラウンドで実装
- コードで実装
Azure環境準備
必要なリソースは以下です。
- Azure OpenAI
- Azure AI Servicesプロジェクト/hub
- Grounding with Bing Search
参考資料
Azure OpenAI
Azure AI Servicesプロジェクト/hub Grounding with Bing SearchAzure上でAIエージェント作成
- 左タブの「マイアセット>モデル+エンドポイント」からLLMモデルをデプロイする
- Azure AI Projectを開き、左タブの「エージェント」をクリックする
- 先ほど構築した「Azure OpenAI Service」をクリックし、「始めましょう」をクリックする
- 「+新しいエージェント」をクリックする
- 作成されたエージェントをクリックする
- デプロイタブでモデルを選択する
- ナレッジタブの「追加」をクリックする
- 「Bing検索...グラウンド」をクリックする
- 先ほど構築した「Grounding with Bing Search」を選択し、「接続」をクリックする
- 「プレイグラウンド..」をクリックする
- 今日の天気を聞いてみる
- 結果を確認
13. 英語で聞いてみる。
※挙動に問題ないし。
コードでAIエージェント作成
- 以下を実行する
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