Compartir a través de


Creación y ejecución de un agente con Agent Framework

En este tutorial se muestra cómo crear y ejecutar un agente con Agent Framework, basado en el servicio de finalización de chat de OpenAI de Azure.

Importante

Agent Framework admite muchos tipos diferentes de agentes. En este tutorial se usa un agente basado en un servicio de finalización de chat, pero todos los demás tipos de agente se ejecutan de la misma manera. Para obtener más información sobre otros tipos de agente y cómo construirlos, consulte la guía de usuario de Agent Framework.

Prerrequisitos

Asegúrese de que dispone de los siguientes requisitos previos:

Nota:

Microsoft Agent Framework es compatible con todas las versiones admitidas activamente de .NET. Para los fines de este ejemplo, se recomienda el SDK de .NET 8 o una versión posterior.

Importante

En este tutorial se usa Azure OpenAI para el servicio de finalización de chat, pero puede usar cualquier servicio de inferencia que proporcione una IChatClient implementación.

Instalación de paquetes NuGet

Para usar Microsoft Agent Framework con Azure OpenAI, debe instalar los siguientes paquetes NuGet:

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

Crear el agente

  • En primer lugar, cree un cliente para Azure OpenAI proporcionando el punto de conexión de Azure OpenAI y usando el mismo inicio de sesión que usó al autenticarse con la CLI de Azure en el paso Requisitos previos .
  • A continuación, obtenga un cliente de chat para comunicarse con el servicio de finalización de chat, especificando también la implementación específica del modelo que se va a usar. Use una de las implementaciones que creó en el paso Requisitos previos .
  • Por último, cree el agente y proporcione instrucciones y un nombre para el agente.
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");

Ejecución del agente

Para ejecutar el agente, llame al RunAsync método en la instancia del agente y proporcione la entrada del usuario. El agente devolverá un objeto AgentRunResponse, y al llamar a .ToString() o .Text en este objeto de respuesta, se obtendrá el resultado de texto del agente.

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

Resultados del ejemplo:

Why did the pirate go to school?

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

Ejecución del agente con transmisión de datos

Para ejecutar el agente con streaming, llame al RunStreamingAsync método en la instancia del agente y proporcione la entrada del usuario. El agente devolverá un flujo de objetos AgentRunResponseUpdate, y llamar a .ToString() o .Text en cada objeto de actualización proporcionará la parte del resultado de texto contenida en esa actualización.

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

Resultados del ejemplo:

Why
 did
 the
 pirate
 go
 to
 school
?


To
 improve
 his
 "
ar
rrrr
rr
tic
ulation
!"

Ejecución del agente con Mensajes de Chat

En lugar de una cadena simple, también puede proporcionar uno o más ChatMessage objetos a los métodos RunAsync y RunStreamingAsync.

Este es un ejemplo con un único mensaje de usuario:

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

Resultados del ejemplo:

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

Because he wanted to make a splash!

Este es un ejemplo con un mensaje de usuario y sistema:

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

Resultados del ejemplo:

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.

En este tutorial se muestra cómo crear y ejecutar un agente con Agent Framework, basado en el servicio de finalización de chat de OpenAI de Azure.

Importante

Agent Framework admite muchos tipos diferentes de agentes. En este tutorial se usa un agente basado en un servicio de finalización de chat, pero todos los demás tipos de agente se ejecutan de la misma manera. Para obtener más información sobre otros tipos de agente y cómo construirlos, consulte la guía de usuario de Agent Framework.

Prerrequisitos

Asegúrese de que dispone de los siguientes requisitos previos:

Importante

En este tutorial se usa Azure OpenAI para el servicio de finalización de chat, pero puede usar cualquier servicio de inferencia compatible con el protocolo de cliente de chat de Agent Framework.

Instalación de paquetes de Python

Para usar Microsoft Agent Framework con Azure OpenAI, debe instalar los siguientes paquetes de Python:

pip install agent-framework --pre

Crear el agente

  • En primer lugar, cree un cliente de chat para comunicarse con Azure OpenAI y use el mismo inicio de sesión que usó al autenticarse con la CLI de Azure en el paso Requisitos previos .
  • A continuación, cree el agente y proporcione instrucciones y un nombre para el agente.
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"
)

Ejecución del agente

Para ejecutar el agente, llame al run método en la instancia del agente y proporcione la entrada del usuario. El agente devolverá un objeto de respuesta y el acceso a la .text propiedad proporciona el resultado de texto del agente.

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

asyncio.run(main())

Ejecución del agente con transmisión de datos

Para ejecutar el agente con streaming, llame al run_stream método en la instancia del agente y proporcione la entrada del usuario. El agente transmitirá una lista de objetos de actualización y, al acceder a la propiedad .text en cada objeto de actualización, se obtiene la parte del resultado del texto contenida en esa actualización.

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

Ejecución del agente con un mensaje de chat

En lugar de una cadena simple, también puede proporcionar uno o más ChatMessage objetos a los métodos run y 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())

Pasos siguientes