このチュートリアルでは、Azure OpenAI チャット補完サービスに基づいて、Agent Framework でエージェントを作成して実行する方法について説明します。
Important
Agent Framework では、さまざまな種類のエージェントがサポートされています。 このチュートリアルでは、チャット完了サービスに基づくエージェントを使用しますが、他のすべての種類のエージェントは同じ方法で実行されます。 他のエージェントの種類とその構築方法の詳細については、 Agent Framework ユーザー ガイドを参照してください。
[前提条件]
開始する前に、以下の前提条件を確認してください:
- .NET 8.0 SDK 以降
- Azure OpenAI サービスのエンドポイントとデプロイメントの構成
- Azure CLI のインストール と 認証 (Azure 資格情報認証の場合)
-
ユーザーには、Azure OpenAI リソースの
Cognitive Services OpenAI UserロールまたはCognitive Services OpenAI Contributorロールがあります。
注
Microsoft Agent Framework は、アクティブにサポートされているすべてのバージョンの .NET でサポートされています。 このサンプルでは、.NET 8 SDK 以降のバージョンをお勧めします。
Important
このチュートリアルでは、チャット完了サービスに Azure OpenAI を使用しますが、 IChatClient 実装を提供する任意の推論サービスを使用できます。
NuGet パッケージのインストール
Azure OpenAI で Microsoft Agent Framework を使用するには、次の NuGet パッケージをインストールする必要があります。
dotnet add package Azure.AI.OpenAI --prerelease
dotnet add package Azure.Identity
dotnet add package Microsoft.Agents.AI.OpenAI --prerelease
エージェントを作成する
- まず、Azure OpenAI エンドポイントを提供し、 前提条件 の手順で Azure CLI で認証するときに使用したのと同じログインを使用して、Azure OpenAI 用のクライアントを作成します。
- 次に、チャット完了サービスと通信するためのチャット クライアントを取得します。ここで、使用する特定のモデルデプロイも指定します。 前提条件の手順で作成したデプロイのいずれかを使用します。
- 最後に、エージェントを作成し、エージェントの手順と名前を指定します。
using System;
using Azure.AI.OpenAI;
using Azure.Identity;
using Microsoft.Agents.AI;
using Microsoft.Extensions.AI;
using OpenAI;
AIAgent agent = new AzureOpenAIClient(
new Uri("https://<myresource>.openai.azure.com"),
new AzureCliCredential())
.GetChatClient("gpt-4o-mini")
.CreateAIAgent(instructions: "You are good at telling jokes.", name: "Joker");
エージェントを実行する
エージェントを実行するには、エージェント インスタンスで RunAsync メソッドを呼び出し、ユーザー入力を指定します。
エージェントは AgentRunResponse オブジェクトを返し、この応答オブジェクトに対して .ToString() または .Text を呼び出すと、エージェントからのテキスト結果が提供されます。
Console.WriteLine(await agent.RunAsync("Tell me a joke about a pirate."));
サンプル出力:
Why did the pirate go to school?
Because he wanted to improve his "arrr-ticulation"! 🏴☠️
ストリーミングを使用したエージェントの実行
ストリーミングを使用してエージェントを実行するには、エージェント インスタンスで RunStreamingAsync メソッドを呼び出し、ユーザー入力を指定します。
エージェントはオブジェクト AgentRunResponseUpdate ストリームを返し、各更新オブジェクトで .ToString() または .Text を呼び出すと、その更新に含まれるテキスト結果の一部が提供されます。
await foreach (var update in agent.RunStreamingAsync("Tell me a joke about a pirate."))
{
Console.WriteLine(update);
}
サンプル出力:
Why
did
the
pirate
go
to
school
?
To
improve
his
"
ar
rrrr
rr
tic
ulation
!"
ChatMessages を使用したエージェントの実行
単純な文字列の代わりに、ChatMessageメソッドとRunAsync メソッドに 1 つ以上のRunStreamingAsync オブジェクトを指定することもできます。
1 人のユーザー メッセージの例を次に示します。
ChatMessage message = new(ChatRole.User, [
new TextContent("Tell me a joke about this image?"),
new UriContent("https://upload.wikimedia.org/wikipedia/commons/1/11/Joseph_Grimaldi.jpg", "image/jpeg")
]);
Console.WriteLine(await agent.RunAsync(message));
サンプル出力:
Why did the clown bring a bottle of sparkling water to the show?
Because he wanted to make a splash!
システム メッセージとユーザー メッセージの例を次に示します。
ChatMessage systemMessage = new(
ChatRole.System,
"""
If the user asks you to tell a joke, refuse to do so, explaining that you are not a clown.
Offer the user an interesting fact instead.
""");
ChatMessage userMessage = new(ChatRole.User, "Tell me a joke about a pirate.");
Console.WriteLine(await agent.RunAsync([systemMessage, userMessage]));
サンプル出力:
I'm not a clown, but I can share an interesting fact! Did you know that pirates often revised the Jolly Roger flag? Depending on the pirate captain, it could feature different symbols like skulls, bones, or hourglasses, each representing their unique approach to piracy.
このチュートリアルでは、Azure OpenAI チャット補完サービスに基づいて、Agent Framework でエージェントを作成して実行する方法について説明します。
Important
Agent Framework では、さまざまな種類のエージェントがサポートされています。 このチュートリアルでは、チャット完了サービスに基づくエージェントを使用しますが、他のすべての種類のエージェントは同じ方法で実行されます。 他のエージェントの種類とその構築方法の詳細については、 Agent Framework ユーザー ガイドを参照してください。
[前提条件]
開始する前に、以下の前提条件を確認してください:
- Python 3.10 以降
- Azure OpenAI サービスのエンドポイントとデプロイメントの構成
- Azure CLI のインストール と 認証 (Azure 資格情報認証の場合)
-
ユーザーには、Azure OpenAI リソースの
Cognitive Services OpenAI UserロールまたはCognitive Services OpenAI Contributorロールがあります。
Important
このチュートリアルでは、チャット完了サービスに Azure OpenAI を使用しますが、Agent Framework のチャット クライアント プロトコルと互換性のある推論サービスを使用できます。
Python パッケージのインストール
Azure OpenAI で Microsoft Agent Framework を使用するには、次の Python パッケージをインストールする必要があります。
pip install agent-framework --pre
エージェントを作成する
- まず、Azure OpenAI と通信するためのチャット クライアントを作成し、 前提条件 の手順で Azure CLI で認証するときに使用したのと同じログインを使用します。
- 次に、エージェントを作成し、エージェントの手順と名前を指定します。
import asyncio
from agent_framework.azure import AzureOpenAIChatClient
from azure.identity import AzureCliCredential
agent = AzureOpenAIChatClient(credential=AzureCliCredential()).create_agent(
instructions="You are good at telling jokes.",
name="Joker"
)
エージェントを実行する
エージェントを実行するには、エージェント インスタンスで run メソッドを呼び出し、ユーザー入力を指定します。
エージェントは応答オブジェクトを返し、 .text プロパティにアクセスすると、エージェントからのテキスト結果が提供されます。
async def main():
result = await agent.run("Tell me a joke about a pirate.")
print(result.text)
asyncio.run(main())
ストリーミングを使用したエージェントの実行
ストリーミングを使用してエージェントを実行するには、エージェント インスタンスで run_stream メソッドを呼び出し、ユーザー入力を指定します。
エージェントは更新オブジェクトの一覧をストリーミングし、各更新オブジェクトの .text プロパティにアクセスすると、その更新に含まれるテキスト結果の一部が提供されます。
async def main():
async for update in agent.run_stream("Tell me a joke about a pirate."):
if update.text:
print(update.text, end="", flush=True)
print() # New line after streaming is complete
asyncio.run(main())
ChatMessage を使用したエージェントの実行
単純な文字列の代わりに、ChatMessageメソッドとrun メソッドに 1 つ以上のrun_stream オブジェクトを指定することもできます。
from agent_framework import ChatMessage, TextContent, UriContent, Role
message = ChatMessage(
role=Role.USER,
contents=[
TextContent(text="Tell me a joke about this image?"),
UriContent(uri="https://samplesite.org/clown.jpg", media_type="image/jpeg")
]
)
async def main():
result = await agent.run(message)
print(result.text)
asyncio.run(main())