次の方法で共有


Agent Framework を使用してエージェントを作成して実行する

このチュートリアルでは、Azure OpenAI チャット補完サービスに基づいて、Agent Framework でエージェントを作成して実行する方法について説明します。

Important

Agent Framework では、さまざまな種類のエージェントがサポートされています。 このチュートリアルでは、チャット完了サービスに基づくエージェントを使用しますが、他のすべての種類のエージェントは同じ方法で実行されます。 他のエージェントの種類とその構築方法の詳細については、 Agent Framework ユーザー ガイドを参照してください。

[前提条件]

開始する前に、以下の前提条件を確認してください:

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 ユーザー ガイドを参照してください。

[前提条件]

開始する前に、以下の前提条件を確認してください:

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())

次のステップ