Partager via


Créer et exécuter un agent avec Agent Framework

Ce tutoriel vous montre comment créer et exécuter un agent avec Agent Framework, en fonction du service Azure OpenAI Chat Completion.

Important

Agent Framework prend en charge de nombreux types d’agents différents. Ce tutoriel utilise un agent basé sur un service d’achèvement de conversation, mais tous les autres types d’agents sont exécutés de la même façon. Pour plus d’informations sur d’autres types d’agents et sur la façon de les construire, consultez le guide de l’utilisateur agent Framework.

Prerequisites

Avant de commencer, vérifiez que les prérequis suivants sont remplis :

Note

Microsoft Agent Framework est pris en charge avec toutes les versions activement prises en charge de .NET. Pour les besoins de cet exemple, nous vous recommandons le Kit de développement logiciel (SDK) .NET 8 ou une version ultérieure.

Important

Ce tutoriel utilise Azure OpenAI pour le service d’achèvement de conversation, mais vous pouvez utiliser n’importe quel service d’inférence qui fournit une IChatClient implémentation.

Installer les packages NuGet

Pour utiliser Microsoft Agent Framework avec Azure OpenAI, vous devez installer les packages NuGet suivants :

dotnet add package Azure.AI.OpenAI --prerelease
dotnet add package Azure.Identity
dotnet add package Microsoft.Agents.AI.OpenAI --prerelease

Créer l’assistant

  • Tout d’abord, créez un client pour Azure OpenAI en fournissant le point de terminaison Azure OpenAI et en utilisant la même connexion que celle utilisée lors de l’authentification auprès d’Azure CLI à l’étape Prérequis .
  • Ensuite, obtenez un client de conversation pour communiquer avec le service d’achèvement de conversation, où vous spécifiez également le déploiement de modèle spécifique à utiliser. Utilisez l’un des déploiements que vous avez créés à l’étape Prérequis.
  • Enfin, créez l’agent, en fournissant des instructions et un nom pour l’agent.
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");

Exécution de l’agent

Pour exécuter l’agent, appelez la RunAsync méthode sur l’instance de l’agent, en fournissant l’entrée utilisateur. L'agent retourne un objet AgentRunResponse, et appeler .ToString() ou .Text sur cet objet de réponse fournit le résultat texte de l'agent.

Console.WriteLine(await agent.RunAsync("Tell me a joke about a pirate."));

Exemple de sortie :

Why did the pirate go to school?

Because he wanted to improve his "arrr-ticulation"! 🏴‍☠️

Exécution de l’agent avec diffusion en continu

Pour exécuter l’agent avec la diffusion en continu, appelez la méthode RunStreamingAsync sur l’instance de l’agent, en fournissant les informations utilisateur. L’agent renvoie un flux d’objets AgentRunResponseUpdate, et en appelant .ToString() ou .Text sur chaque objet de mise à jour fournit la partie du résultat du texte contenue dans cette mise à jour.

await foreach (var update in agent.RunStreamingAsync("Tell me a joke about a pirate."))
{
    Console.WriteLine(update);
}

Exemple de sortie :

Why
 did
 the
 pirate
 go
 to
 school
?


To
 improve
 his
 "
ar
rrrr
rr
tic
ulation
!"

Exécution de l’agent avec ChatMessages

Au lieu d’une chaîne simple, vous pouvez également fournir un ou plusieurs objets ChatMessage aux méthodes RunAsync et RunStreamingAsync.

Voici un exemple avec un message utilisateur unique :

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

Exemple de sortie :

Why did the clown bring a bottle of sparkling water to the show?

Because he wanted to make a splash!

Voici un exemple avec un message système et utilisateur :

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]));

Exemple de sortie :

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.

Ce tutoriel vous montre comment créer et exécuter un agent avec Agent Framework, en fonction du service Azure OpenAI Chat Completion.

Important

Agent Framework prend en charge de nombreux types d’agents différents. Ce tutoriel utilise un agent basé sur un service d’achèvement de conversation, mais tous les autres types d’agents sont exécutés de la même façon. Pour plus d’informations sur d’autres types d’agents et sur la façon de les construire, consultez le guide de l’utilisateur agent Framework.

Prerequisites

Avant de commencer, vérifiez que les prérequis suivants sont remplis :

Important

Ce tutoriel utilise Azure OpenAI pour le service d’achèvement de conversation, mais vous pouvez utiliser n’importe quel service d’inférence compatible avec le protocole client de conversation de Agent Framework.

Installer des packages Python

Pour utiliser Microsoft Agent Framework avec Azure OpenAI, vous devez installer les packages Python suivants :

pip install agent-framework --pre

Créer l’assistant

  • Tout d’abord, créez un client de conversation pour communiquer avec Azure OpenAI et utilisez la même connexion que celle que vous avez utilisée lors de l’authentification auprès d’Azure CLI à l’étape Prérequis .
  • Ensuite, créez l’agent, en fournissant des instructions et un nom pour l’agent.
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"
)

Exécution de l’agent

Pour exécuter l’agent, appelez la run méthode sur l’instance de l’agent, en fournissant l’entrée utilisateur. L’agent retourne un objet de réponse, et l’accès à la propriété .text fournit le résultat textuel de l’agent.

async def main():
    result = await agent.run("Tell me a joke about a pirate.")
    print(result.text)

asyncio.run(main())

Exécution de l’agent avec diffusion en continu

Pour exécuter l’agent avec la diffusion en continu, appelez la méthode run_stream sur l’instance de l’agent, en fournissant les informations utilisateur. L'agent transmet en continu une liste d'objets de mise à jour, et l'accès à la propriété .text sur chaque objet de mise à jour fournit la partie de texte résultant contenue dans cette mise à jour.

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

Exécuter l’agent avec un message de chat

Au lieu d’une chaîne simple, vous pouvez également fournir un ou plusieurs objets ChatMessage aux méthodes run et 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())

Étapes suivantes