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.
El marco del agente de Microsoft 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 de 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 funcionen con servidores, agentes, código o modelos no Azure Direct ("Sistemas de terceros"), lo haga en su propio riesgo. Los sistemas de terceros son Productos que no son Microsoft en virtud de los términos del producto Microsoft y se rigen por sus propios términos de licencia de terceros. Usted es responsable de cualquier uso y costos asociados.
Se recomienda revisar todos los datos que se comparten y reciben de sistemas de terceros y ser conscientes de las prácticas de terceros para controlar, compartir, conservar y ubicación de los datos. Es su responsabilidad gestionar si los datos fluirán fuera de los límites de cumplimiento y geográficos de Azure de su organización, y las implicaciones relacionadas, y asegurarse de que se proporcionen los permisos, delimitaciones y aprobaciones adecuadas.
Usted es responsable de revisar y probar cuidadosamente las aplicaciones que compila mediante Microsoft Agent Framework en el contexto de los casos de uso específicos, y tomar todas las decisiones y personalizaciones adecuadas. Esto incluye implementar sus propias mitigaciones de inteligencia artificial responsable, como metaprompt, filtros de contenido u otros sistemas de seguridad, y garantizar que las aplicaciones cumplan los estándares de calidad, confiabilidad, seguridad y confiabilidad adecuados. Consulte también: Preguntas más frecuentes sobre transparencia
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 Microsoft.Extensions.AI.IChatClient se puede usar para compilar estos agentes. El Microsoft.Agents.AI.ChatClientAgent es la clase de agente que se usa para proporcionar un agente para cualquier implementación de IChatClient.
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 |
|---|---|---|---|
| Agente de Microsoft Foundry | Agente que usa el Servicio de Agente Foundry como backend. | Sí | No |
| Modelos de Foundry ChatCompletion | Agente que utiliza cualquiera de los modelos implementados en Foundry Service como su servidor a través de la funcionalidad de ChatCompletion. | No | Sí |
| Respuestas de Modelos de Fundición | Agente que utiliza cualquiera de los modelos implementados en el Servicio Foundry como backend a través de Respuestas. | Sí | Sí |
| Foundry Anthropic | Un agente que utiliza un modelo de Claude a través del servicio Foundry Anthropic como sistema de respaldo. | No | Sí |
| Azure OpenAI ChatCompletion | Agente que usa el Azure servicio ChatCompletion de OpenAI. | No | Sí |
| Respuestas de OpenAI de Azure | Agente que usa el servicio de respuestas de OpenAI Azure. | Sí | Sí |
| Antrópica | Agente que utiliza un modelo de Claude a través del Servicio Antrópico como backend. | No | 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í |
Cualquier otro IChatClient |
También puede usar cualquier otra implementación de Microsoft.Extensions.AI.IChatClient 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 Foundry, servicios Azure OpenAI, servicios OpenAI o servicios de Anthropic, 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 de IA | SDK | Nuget | URL |
|---|---|---|---|
| Modelos de Fundición | Azure SDK de OpenAI 2 | Azure. IA. OpenAI | https://ai-foundry-<resource.services.ai.azure.com/> |
| Modelos de Fundición | SDK de OpenAI 3 | OpenAI | https://ai-foundry-<resource.services.ai.azure.com/openai/v1/> |
| Modelos de Fundición | Azure SDK de Inferencia de IA 2 | Azure.AI.Inferencia | https://ai-foundry-<resource.services.ai.azure.com/models> |
| Agentes de Fundición | SDK de Proyectos de IA de Azure + Foundry de IA de Agentes de Microsoft | Azure. IA. Projects / Microsoft. Agents.AI.Foundry | https://ai-foundry-<resource.services.ai.azure.com/api/projects/ai-project-project><> |
| Azure OpenAI1 | Azure OpenAI SDK 2 | Azure. IA. 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 |
| Microsoft Foundry Anthropic | SDK de Anthropic Foundry | Anthropic.Foundry | Se requiere el nombre del recurso |
| Anthropic | SDK antrópico | Antrópica | No se requiere ningún nombre de dirección URL o recurso |
- Actualización de Azure OpenAI a Foundry
- Se recomienda usar el SDK de OpenAI.
- Aunque se recomienda usar el SDK de OpenAI para acceder a los modelos foundry, Foundry Models admite 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 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
.AsAIAgent(model: model, instructions: "You are good at telling jokes.", name: "Joker");
Uso del SDK de proyectos de IA de Azure
Este SDK se puede usar para conectarse a los servicios Foundry.
Deberá proporcionar la URL correcta del punto de conexión del proyecto al crear el AIProjectClient.
Consulte la tabla anterior para obtener la dirección URL correcta que se va a usar.
AIAgent agent = new AIProjectClient(
new Uri(serviceUrl),
new DefaultAzureCredential())
.AsAIAgent(
model: deploymentName,
instructions: "You are good at telling jokes.",
name: "Joker");
Uso del SDK de proyectos de IA de Azure con agentes de Foundry
Este SDK se usa tanto para los agentes basados en la API de respuestas como para los agentes de Foundry con versiones. Consulte la tabla anterior para obtener la dirección URL correcta que se va a usar.
var aiProjectClient = new AIProjectClient(new Uri(serviceUrl), new DefaultAzureCredential());
AIAgent agent = aiProjectClient.AsAIAgent(
model: deploymentName,
instructions: "You are good at telling jokes.",
name: "Joker");
Uso del SDK antrópico de Foundry
El recurso es el nombre del subdominio o el nombre que viene antes de ".services.ai.azure.com" en el URI del punto de conexión.
Por ejemplo: https://(resource name).services.ai.azure.com/anthropic/v1/chat/completions
var client = new AnthropicFoundryClient(new AnthropicFoundryApiKeyCredentials(apiKey, resource));
AIAgent agent = client.AsAIAgent(
model: deploymentName,
instructions: "Joker",
name: "You are good at telling jokes.");
Uso del SDK antrópico
var client = new AnthropicClient() { ApiKey = apiKey };
AIAgent agent = client.AsAIAgent(
model: deploymentName,
instructions: "Joker",
name: "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 protocolo , que define un estándar para los métodos que un cliente debe admitir para usarse 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.foundry import FoundryChatClient
from azure.identity.aio import DefaultAzureCredential
agent = Agent(
client=FoundryChatClient(
credential=DefaultAzureCredential(),
project_endpoint=os.getenv("FOUNDRY_PROJECT_ENDPOINT"),
model=os.getenv("FOUNDRY_MODEL"),
),
instructions="You are a helpful assistant",
)
response = await agent.run("Hello!")
Como alternativa, puede usar el método de conveniencia en el cliente de chat:
from agent_framework.foundry import FoundryChatClient
from azure.identity.aio import DefaultAzureCredential
agent = FoundryChatClient(
credential=DefaultAzureCredential(),
project_endpoint=os.getenv("FOUNDRY_PROJECT_ENDPOINT"),
model=os.getenv("FOUNDRY_MODEL"),
).as_agent(
instructions="You are a helpful assistant"
)
Nota:
En este ejemplo se muestra el uso de FoundryChatClient, pero el mismo patrón se aplica a cualquier cliente de chat que implemente SupportsChatGetResponse, consulte información general de proveedores para obtener más detalles 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 |
|---|---|---|
| Agente de foundry | Un agente que utiliza el Agent Service como backend. | Sí |
| Completado de Chat de Azure OpenAI | Agente que usa el servicio de finalización de chat de OpenAI Azure. | No |
| Respuestas de Azure OpenAI | Agente que usa el servicio de respuestas de OpenAI Azure. | 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í |
| 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 |
| GitHub Copilot | Agente que usa el back-end del SDK de GitHub Copilot. | 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 Foundry
- Ejemplos de streaming de finalización de conversación de chat en Azure con OpenAI
- Ejemplos de transmisión de respuestas de Azure OpenAI
- Ejemplos de streaming de finalización de chat de OpenAI
- Ejemplos de streaming de respuestas 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.foundry import FoundryChatClient
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 = FoundryChatClient(
credential=credential,
project_endpoint=os.getenv("FOUNDRY_PROJECT_ENDPOINT"),
model=os.getenv("FOUNDRY_MODEL"),
).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. |