Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
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:
- SDK de .NET 8.0 o posterior
- Configuración del punto final del servicio Azure OpenAI y su implementación
- CLI de Azure instalada y autenticada (para la autenticación de credenciales de Azure)
-
El usuario tiene los roles
Cognitive Services OpenAI UseroCognitive Services OpenAI Contributorpara el recurso de Azure OpenAI.
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:
- Python 3.10 o posterior
- Configuración del punto final del servicio Azure OpenAI y su implementación
- CLI de Azure instalada y autenticada (para la autenticación de credenciales de Azure)
-
El usuario tiene los roles
Cognitive Services OpenAI UseroCognitive Services OpenAI Contributorpara el recurso de Azure OpenAI.
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())