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.
Microsoft Agent Framework proporciona compatibilidad con varios tipos de agentes para adaptarse a diferentes casos de uso y requisitos.
Todos los agentes se derivan de una clase base común, , AIAgentque proporciona una interfaz coherente para todos los tipos de agente. Esto permite crear funcionalidades de nivel superior independientes del agente comunes, como orquestaciones multiagente.
Todos los agentes se derivan de una clase base común, , Agentque proporciona una interfaz coherente para todos los tipos de agente. Esto permite crear funcionalidades de nivel superior independientes del agente comunes, como orquestaciones multiagente.
Modelo de ejecución del entorno predeterminado del agente
Todos los agentes de Microsoft Agent Framework se ejecutan mediante un modelo en tiempo de ejecución estructurado. Este modelo coordina la interacción del usuario, la inferencia del modelo y la ejecución de herramientas en un bucle determinista.
Importante
Si usa Microsoft Agent Framework para compilar aplicaciones que operan con servidores o agentes de terceros, lo hace en su propio riesgo. Se recomienda revisar todos los datos que se comparten con servidores o agentes de terceros y ser conscientes de las prácticas de terceros para la retención y la ubicación de los datos. Es su responsabilidad controlar si sus datos circularán fuera de las normativas de Azure y los límites geográficos de su organización, así como cualquier implicación relacionada.
Agentes simples basados en servicios de inferencia
Agent Framework facilita la creación de agentes simples basados en muchos servicios de inferencia diferentes.
Cualquier servicio de inferencia que proporcione una Microsoft.Extensions.AI.IChatClient implementación se puede usar para compilar estos agentes.
Microsoft.Agents.AI.ChatClientAgent es la clase del agente que se usa para proporcionar un agente para cualquier IChatClient implementación.
Estos agentes admiten una amplia gama de funcionalidades de fábrica:
- Llamada de función.
- Conversaciones multiturno con gestión del historial de chat local o gestión del historial de chat proporcionada por el servicio.
- Herramientas provistas por servicios personalizados (por ejemplo, MCP, ejecución de código).
- Salida estructurada.
Para crear uno de estos agentes, basta con crear un ChatClientAgent con la IChatClient implementación que prefiera.
using Microsoft.Agents.AI;
var agent = new ChatClientAgent(chatClient, instructions: "You are a helpful assistant");
Para facilitar aún más la creación de estos agentes, Agent Framework proporciona asistentes para muchos servicios populares. Para obtener más información, consulte la documentación de cada servicio.
| Servicio de inferencia subyacente | Description | Almacenamiento de historial de chat de servicio admitido | Se admite el almacenamiento del historial de chat personalizado o InMemory |
|---|---|---|---|
| Azure IA Foundry Agent | Agente que usa el servicio azure AI Foundry Agents como back-end. | Sí | No |
| Modelos de Azure AI Foundry ChatCompletion | Agente que usa cualquiera de los modelos implementados en el servicio Azure AI Foundry como back-end a través de ChatCompletion. | No | Sí |
| Respuestas de modelos de Azure AI Foundry | Agente que utiliza cualquiera de los modelos implementados en el servicio Azure AI Foundry como backend a través de Respuestas. | Sí | Sí |
| Azure OpenAI ChatCompletion | Agente que usa el servicio ChatCompletion de Azure OpenAI. | No | Sí |
| Respuestas de Azure OpenAI | Agente que usa el servicio de respuestas de Azure OpenAI. | Sí | Sí |
| OpenAI ChatCompletion | Agente que usa el servicio ChatCompletion de OpenAI. | No | Sí |
| Respuestas de OpenAI | Agente que usa el servicio de respuestas de OpenAI. | Sí | Sí |
| Asistentes de OpenAI | Agente que usa el servicio OpenAI Assistants. | Sí | No |
Cualquier otro IChatClient |
También puede usar cualquier otra Microsoft.Extensions.AI.IChatClient implementación para crear un agente. |
Varía | Varía |
Agentes personalizados complejos
También es posible crear agentes totalmente personalizados que no sean solo contenedores alrededor de un IChatClient.
El marco de agentes proporciona el AIAgent tipo base.
Este tipo base es la abstracción principal de todos los agentes, que, cuando se subclase, permite un control completo sobre el comportamiento y las funcionalidades del agente.
Para obtener más información, consulte la documentación de Custom Agents.
Servidores proxy para agentes remotos
Agent Framework proporciona implementaciones listas para usar AIAgent para protocolos de agentes comunes hospedados en servicios, como A2A. De este modo, puede conectarse y usar fácilmente agentes remotos desde la aplicación.
Consulte la documentación de cada tipo de agente para obtener más información:
| Protocolo | Description |
|---|---|
| A2A | Agente que actúa como proxy a un agente remoto a través del protocolo A2A. |
Referencia de opciones del SDK de Azure y OpenAI
Al usar los servicios Azure AI Foundry, Azure OpenAI o OpenAI, tiene varias opciones de SDK para conectarse a estos servicios. En algunos casos, es posible usar varios SDK para conectarse al mismo servicio o usar el mismo SDK para conectarse a distintos servicios. Esta es una lista de las diferentes opciones disponibles con la dirección URL que debe usar al conectarse a cada una. Asegúrese de reemplazar <resource> y <project> por los nombres reales de recursos y proyectos.
| Servicio IA | SDK | Nuget | URL |
|---|---|---|---|
| Modelos de Azure AI Foundry | SDK de Azure OpenAI 2 | Azure.AI.OpenAI | https://ai-foundry-<resource.services.ai.azure.com/> |
| Modelos de Azure AI Foundry | SDK de OpenAI 3 | OpenAI | https://ai-foundry-<resource.services.ai.azure.com/openai/v1/> |
| Modelos de Azure AI Foundry | SDK de inferencia de Azure AI 2 | Azure.AI.Inference | https://ai-foundry-<resource.services.ai.azure.com/models> |
| Agentes de Azure AI Foundry | SDK de agentes persistentes de Azure AI | Azure.AI.Agents.Persistent | https://ai-foundry-<resource.services.ai.azure.com/api/projects/ai-project-project><> |
| Azure OpenAI1 | SDK de Azure OpenAI 2 | Azure.AI.OpenAI | <https:// resource.openai.azure.com/> |
| Azure OpenAI1 | SDK de OpenAI | OpenAI | <https://resource.openai.azure.com/openai/v1/> |
| OpenAI | SDK de OpenAI | OpenAI | No se requiere ninguna dirección URL |
- Actualización de Azure OpenAI a Azure AI Foundry
- Se recomienda usar el SDK de OpenAI.
- Aunque se recomienda usar el SDK de OpenAI para acceder a los modelos de Azure AI Foundry, los modelos de Azure AI Foundry admiten modelos de muchos proveedores diferentes, no solo OpenAI. Todos estos modelos se admiten a través del SDK de OpenAI.
Uso del SDK de OpenAI
Como se muestra en la tabla anterior, el SDK de OpenAI se puede usar para conectarse a varios servicios.
En función del servicio al que se conecte, es posible que tenga que establecer una URL personalizada al crear el OpenAIClient.
También puede usar diferentes mecanismos de autenticación en función del servicio.
Si se requiere una dirección URL personalizada (consulte la tabla anterior), puede establecerla a través de OpenAIClientOptions.
var clientOptions = new OpenAIClientOptions() { Endpoint = new Uri(serviceUrl) };
Es posible usar una clave de API al crear el cliente.
OpenAIClient client = new OpenAIClient(new ApiKeyCredential(apiKey), clientOptions);
Al usar un servicio de Azure, también es posible usar credenciales de Azure en lugar de una clave de API.
OpenAIClient client = new OpenAIClient(new BearerTokenPolicy(new DefaultAzureCredential(), "https://ai.azure.com/.default"), clientOptions)
Advertencia
DefaultAzureCredential es conveniente para el desarrollo, pero requiere una consideración cuidadosa en producción. En producción, considere usar una credencial específica (por ejemplo, ManagedIdentityCredential) para evitar problemas de latencia, sondeos de credenciales no deseados y posibles riesgos de seguridad de los mecanismos de respaldo.
Una vez que haya creado el OpenAIClient, puede obtener un subcliente para el servicio específico que desee usar y luego crear un AIAgent a partir de él.
AIAgent agent = client
.GetChatClient(model)
.AsAIAgent(instructions: "You are good at telling jokes.", name: "Joker");
Uso del SDK de Azure OpenAI
Este SDK se puede usar para conectarse a los servicios Azure OpenAI y Azure AI Foundry Models.
En cualquier caso, deberá proporcionar la URL del servicio correcta al crear AzureOpenAIClient.
Consulte la tabla anterior para obtener la dirección URL correcta que se va a usar.
AIAgent agent = new AzureOpenAIClient(
new Uri(serviceUrl),
new DefaultAzureCredential())
.GetChatClient(deploymentName)
.AsAIAgent(instructions: "You are good at telling jokes.", name: "Joker");
Uso del SDK de agentes persistentes de Azure AI
Este SDK solo se admite con el servicio Azure AI Foundry Agents. Consulte la tabla anterior para obtener la dirección URL correcta que se va a usar.
var persistentAgentsClient = new PersistentAgentsClient(serviceUrl, new DefaultAzureCredential());
AIAgent agent = await persistentAgentsClient.CreateAIAgentAsync(
model: deploymentName,
name: "Joker",
instructions: "You are good at telling jokes.");
Agentes simples basados en servicios de inferencia
Agent Framework facilita la creación de agentes simples basados en muchos servicios de inferencia diferentes.
Cualquier servicio de inferencia que proporcione una implementación de cliente de chat se puede usar para compilar estos agentes.
Esto se puede hacer mediante el SupportsChatGetResponse, que define un estándar de métodos que un cliente debe admitir para utilizarse con la clase estándar Agent.
Estos agentes admiten una amplia gama de funcionalidades de fábrica:
- Llamada a funciones
- Conversaciones multiturno con administración de historial de chat local o proporcionada por el servicio
- Herramientas proporcionadas por el servicio personalizado (por ejemplo, MCP, ejecución de código)
- Salida estructurada
- Respuestas de transmisión
Para crear uno de estos agentes, basta con construir un Agent con la implementación del cliente de chat que prefiera.
import os
from agent_framework import Agent
from agent_framework.azure import AzureOpenAIResponsesClient
from azure.identity.aio import DefaultAzureCredential
Agent(
client=AzureOpenAIResponsesClient(credential=DefaultAzureCredential(), project_endpoint=os.getenv("AZURE_AI_PROJECT_ENDPOINT"), deployment_name=os.getenv("AZURE_OPENAI_RESPONSES_DEPLOYMENT_NAME")),
instructions="You are a helpful assistant"
) as agent
response = await agent.run("Hello!")
Como alternativa, puede usar el método de conveniencia en el cliente de chat:
from agent_framework.azure import AzureOpenAIResponsesClient
from azure.identity.aio import DefaultAzureCredential
agent = AzureOpenAIResponsesClient(async_credential=DefaultAzureCredential(), project_endpoint=os.getenv("AZURE_AI_PROJECT_ENDPOINT"), deployment_name=os.getenv("AZURE_OPENAI_RESPONSES_DEPLOYMENT_NAME")).as_agent(
instructions="You are a helpful assistant"
)
Nota:
En este ejemplo se muestra el uso de AzureOpenAIResponsesClient, pero el mismo patrón se aplica a cualquier cliente de chat que implemente SupportsChatGetResponse, consulte información general sobre los proveedores para obtener más información sobre otros clientes.
Para obtener ejemplos detallados, consulte las secciones de documentación específicas del agente a continuación.
Proveedores de chat admitidos
| Servicio de inferencia subyacente | Description | Se admite el almacenamiento del historial de chat del servicio |
|---|---|---|
| Azure IA Foundry Agent | Agente que usa el servicio de agentes de Azure AI como back-end. | Sí |
| Finalización del chat de Azure OpenAI | Agente que usa el servicio de finalización de chat de Azure OpenAI. | No |
| Respuestas de Azure OpenAI | Agente que usa el servicio de respuestas de Azure OpenAI. | Sí |
| Asistentes de Azure OpenAI | Agente que usa el servicio Azure OpenAI Assistants. | Sí |
| Finalización del chat de OpenAI | Agente que usa el servicio de finalización de chat de OpenAI. | No |
| Respuestas de OpenAI | Agente que usa el servicio de respuestas de OpenAI. | Sí |
| Asistentes de OpenAI | Agente que usa el servicio OpenAI Assistants. | Sí |
| Anthropic Claude | Un agente que utiliza modelos de Claude Anthropic. | No |
| Lecho de roca amazónica | Agente que usa modelos de Amazon Bedrock a través del cliente de chat de Agent Framework Bedrock. | No |
| Copiloto de GitHub | Agente que usa el back-end del SDK de Copilot de GitHub. | No |
| Ollama (compatible con OpenAI) | Agente que usa modelos de Ollama hospedados localmente a través de api compatibles con OpenAI. | No |
| Cualquier otro ChatClient | También puede usar cualquier otra implementación de SupportsChatGetResponse para crear un agente. |
Varía |
Se admite el almacenamiento del historial de chat personalizado siempre que se admita el estado de conversación basado en sesión.
Respuestas de streaming
Los agentes admiten respuestas normales y de streaming:
# Regular response (wait for complete result)
response = await agent.run("What's the weather like in Seattle?")
print(response.text)
# Streaming response (get results as they are generated)
async for chunk in agent.run("What's the weather like in Portland?", stream=True):
if chunk.text:
print(chunk.text, end="", flush=True)
Para ver ejemplos de streaming, consulte:
- Ejemplos de streaming de Azure AI
- Ejemplos de streaming de Azure OpenAI
- Ejemplos de streaming de OpenAI
Para obtener más patrones de invocación, consulte Running Agents.
Herramientas de funciones
Puede proporcionar herramientas de función a los agentes para mejorar las funcionalidades:
import os
from typing import Annotated
from azure.identity.aio import DefaultAzureCredential
from agent_framework.azure import AzureOpenAIResponsesClient
def get_weather(location: Annotated[str, "The location to get the weather for."]) -> str:
"""Get the weather for a given location."""
return f"The weather in {location} is sunny with a high of 25°C."
async with DefaultAzureCredential() as credential:
agent = AzureOpenAIResponsesClient(
async_credential=credential,
project_endpoint=os.getenv("AZURE_AI_PROJECT_ENDPOINT"),
deployment_name=os.getenv("AZURE_OPENAI_RESPONSES_DEPLOYMENT_NAME"),
).as_agent(
instructions="You are a helpful weather assistant.",
tools=get_weather,
)
response = await agent.run("What's the weather in Seattle?")
Para ver las herramientas y los patrones de herramientas, consulte Introducción a las herramientas.
Agentes personalizados
Para obtener implementaciones totalmente personalizadas (por ejemplo, agentes deterministas o agentes respaldados por API), consulte Agentes personalizados. En esa página se describe la implementación de SupportsAgentRun o la extensión de BaseAgent, incluidas las actualizaciones en streaming con AgentResponseUpdate.
Otros tipos de agente
Agent Framework también incluye agentes respaldados por protocolos, como:
| Tipo de agente | Description |
|---|---|
| A2A | Un agente proxy que se conecta a agentes remotos compatibles con A2A e invoca agentes A2A. |