Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Microsoft Agent Framework обеспечивает поддержку нескольких типов агентов для удовлетворения различных вариантов использования и требований.
Все агенты являются производными от общего базового класса, AIAgentкоторый предоставляет согласованный интерфейс для всех типов агентов. Это позволяет создавать общие функции, не зависящие от конкретного агента, на более высоком уровне, например, оркестрации с участием нескольких агентов.
Все агенты являются производными от общего базового класса, Agentкоторый предоставляет согласованный интерфейс для всех типов агентов. Это позволяет создавать общие функции, не зависящие от конкретного агента, на более высоком уровне, например, оркестрации с участием нескольких агентов.
Модель выполнения по умолчанию для агента
Все агенты в Microsoft Agent Framework выполняются с помощью структурированной модели среды выполнения. Эта модель координирует взаимодействие пользователей, вывод модели и выполнение инструментов в детерминированном цикле.
Это важно
Если вы используете Microsoft Agent Framework для создания приложений, работающих с сторонними серверами или агентами, это делается в вашем собственном риске. Мы рекомендуем просматривать все данные, совместно используемые сторонними серверами или агентами, и учитывать сторонние методики хранения и расположения данных. Вы несете ответственность за управление тем, как данные будут передаваться за пределы границ соответствия и географических границ вашей организации, а также за любые связанные с этим последствия.
Простые агенты, основанные на сервисах вывода
Agent Framework упрощает создание простых агентов на основе множества различных служб вывода.
Любая служба вывода, предоставляющая Microsoft.Extensions.AI.IChatClient реализацию, может использоваться для создания этих агентов. Это Microsoft.Agents.AI.ChatClientAgent класс агента, используемый для предоставления агента для любой IChatClient реализации.
Эти агенты поддерживают широкий спектр функциональных возможностей из коробки:
- Вызов функции.
- Многоходовые диалоги с локальным управлением историей чатов или управляемые службой истории чатов.
- Индивидуальные инструменты, предоставляемые службой (например, MCP, выполнение кода).
- Структурированные выходные данные.
Чтобы создать одного из этих агентов, просто создайте ChatClientAgent с использованием IChatClient на ваш выбор.
using Microsoft.Agents.AI;
var agent = new ChatClientAgent(chatClient, instructions: "You are a helpful assistant");
Чтобы упростить создание этих агентов, Agent Framework предоставляет вспомогательные средства для многих популярных служб. Дополнительные сведения см. в документации для каждой службы.
| Базовая служба вывода | Description | Поддерживается хранилище журнала чатов службы | Поддерживается хранилище журналов чатов InMemory/Custom chat |
|---|---|---|---|
| Microsoft Foundry Agent | Агент, использующий службу Foundry Agent Service в качестве серверной части. | Да | нет |
| Foundry Models завершение чата | Агент, использующий любую из моделей, развернутых в службе Foundry в качестве серверной части через ChatCompletion. | нет | Да |
| Ответы на модели литейных моделей | Агент, использующий любую из моделей, развернутых в службе Foundry в качестве своей серверной архитектуры при помощи компонента Responses. | Да | Да |
| Хитри Anthropic | Агент, использующий модель Claude через службу Foundry Anthropic в качестве основы для работы. | нет | Да |
| Azure OpenAI ChatCompletion | Агент, использующий службу Azure OpenAI ChatCompletion. | нет | Да |
| Ответы Azure OpenAI | Агент, использующий службу ответов Azure OpenAI. | Да | Да |
| Anthropic | Агент, использующий модель Claude через Anthropic Service в качестве бэкенда. | нет | Да |
| OpenAI ChatCompletion | Агент, использующий службу OpenAI ChatCompletion. | нет | Да |
| Ответы OpenAI | Агент, использующий службу ответов OpenAI. | Да | Да |
| Помощники OpenAI | Агент, использующий службу Помощников OpenAI. | Да | нет |
Любой другой IChatClient |
Вы также можете использовать любую другую Microsoft.Extensions.AI.IChatClient реализацию для создания агента. |
Меняется | Меняется |
Сложные настраиваемые агенты
Кроме того, можно создать полностью пользовательские агенты, которые не просто являются оболочками вокруг IChatClient.
Платформа агента предоставляет базовый AIAgent тип.
Этот базовый тип является основной абстракцией для всех агентов, которые при подклассах обеспечивают полный контроль над поведением и возможностями агента.
Дополнительные сведения см. в документации по пользовательским агентам.
Прокси-серверы для удаленных агентов
Agent Framework предоставляет готовые к использованию AIAgent реализации для типичных протоколов агентов, размещенных в службах, таких как A2A. Таким образом вы можете легко подключаться к удаленным агентам из приложения и использовать их.
Дополнительные сведения см. в документации по каждому типу агента:
| Протокол | Description |
|---|---|
| A2A | Агент, который служит прокси-сервером для удаленного агента через протокол A2A. |
Справочник по параметрам пакета SDK Для Azure и OpenAI
При использовании Foundry, Azure OpenAI, служб OpenAI или Anthropic services у вас есть различные варианты SDK для подключения к этим службам. В некоторых случаях можно использовать несколько пакетов SDK для подключения к одной службе или использования одного пакета SDK для подключения к разным службам. Ниже приведен список различных параметров, доступных по URL-адресу, который следует использовать при подключении к каждому. Обязательно замените <resource> и <project> на фактические имена ваших ресурсов и проектов.
| Служба искусственного интеллекта | SDK | Nuget (менеджер пакетов для .NET) | URL-адрес |
|---|---|---|---|
| Литейные модели | Пакет SDK для Azure OpenAI 2 | Azure.AI.OpenAI | https://ai-foundry-<resource.services.ai.azure.com/> |
| Литейные модели | Пакет SDK для OpenAI 3 | OpenAI | https://ai-foundry-<resource.services.ai.azure.com/openai/v1/> |
| Литейные модели | Пакет SDK для вывода искусственного интеллекта Azure 2 | Azure.AI.Inference | https://ai-foundry-<resource.services.ai.azure.com/models> |
| Агенты Foundry | Пакет SDK для постоянных агентов Искусственного интеллекта Azure | Azure.AI.Agents.Persistent | https://ai-foundry-<resource.services.ai.azure.com/api/projects/ai-project-project><> |
| Azure OpenAI1 | Пакет SDK для Azure OpenAI 2 | Azure.AI.OpenAI | <https:// resource.openai.azure.com/> |
| Azure OpenAI1 | OpenAI SDK | OpenAI | <https://resource.openai.azure.com/openai/v1/> |
| Открытый ИИ | OpenAI SDK | OpenAI | Url-адрес не требуется |
| Azure AI Foundry Anthropic | Anthropic Foundry SDK | Anthropic.Foundry | Необходимое имя ресурса |
| Антропик | Anthropic SDK | Anthropic | Url-адрес или имя ресурса не требуется |
- Обновление с Azure OpenAI до Foundry
- Рекомендуется использовать пакет SDK OpenAI.
- Хотя мы рекомендуем использовать пакет SDK OpenAI для доступа к моделям Foundry, Foundry Models поддерживает модели от многих разных поставщиков, а не только OpenAI. Все эти модели поддерживаются с помощью пакета SDK OpenAI.
Использование пакета SDK OpenAI
Как показано в таблице выше, пакет SDK OpenAI можно использовать для подключения к нескольким службам.
В зависимости от службы, к которой вы подключаетесь, может потребоваться задать настраиваемый URL-адрес при создании OpenAIClient.
Кроме того, можно использовать различные механизмы проверки подлинности в зависимости от службы.
Если требуется пользовательский URL-адрес (см. таблицу выше), ее можно задать с помощью OpenAIClientOptions.
var clientOptions = new OpenAIClientOptions() { Endpoint = new Uri(serviceUrl) };
При создании клиента можно использовать ключ API.
OpenAIClient client = new OpenAIClient(new ApiKeyCredential(apiKey), clientOptions);
При использовании службы Azure также можно использовать учетные данные Azure вместо ключа API.
OpenAIClient client = new OpenAIClient(new BearerTokenPolicy(new DefaultAzureCredential(), "https://ai.azure.com/.default"), clientOptions)
Предупреждение
DefaultAzureCredential удобно для разработки, но требует тщательного рассмотрения в рабочей среде. В рабочей среде рекомендуется использовать определенные учетные данные (например, ManagedIdentityCredential), чтобы избежать проблем с задержкой, непреднамеренной проверки данных аутентификации и потенциальных рисков безопасности из-за резервных механизмов.
После того как вы создали OpenAIClient, вы можете получить дочерний клиент для конкретной службы, которую хотите использовать, а затем использовать его для создания AIAgent.
AIAgent agent = client
.GetChatClient(model)
.AsAIAgent(instructions: "You are good at telling jokes.", name: "Joker");
Использование SDK для Azure OpenAI
Этот пакет SDK можно использовать для подключения к службам Azure OpenAI и Foundry Models.
В любом случае при создании службы AzureOpenAIClient необходимо указать правильный URL-адрес службы.
См. таблицу выше, чтобы использовать правильный URL-адрес.
AIAgent agent = new AzureOpenAIClient(
new Uri(serviceUrl),
new DefaultAzureCredential())
.GetChatClient(deploymentName)
.AsAIAgent(instructions: "You are good at telling jokes.", name: "Joker");
Использование пакета SDK для постоянных агентов AI Azure
Этот пакет SDK поддерживается только в службе агента. См. таблицу выше, чтобы использовать правильный URL-адрес.
var persistentAgentsClient = new PersistentAgentsClient(serviceUrl, new DefaultAzureCredential());
AIAgent agent = await persistentAgentsClient.CreateAIAgentAsync(
model: deploymentName,
instructions: "You are good at telling jokes.",
name: "Joker");
Использование пакета SDK Anthropic для Azure AI Foundry
Ресурс — это имя поддомена, которое находится перед ".services.ai.azure.com" в URI конечной точки.
Например: 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.");
Использование Anthropic SDK
var client = new AnthropicClient() { ApiKey = apiKey };
AIAgent agent = client.AsAIAgent(
model: deploymentName,
instructions: "Joker",
name: "You are good at telling jokes.");
Простые агенты, основанные на сервисах вывода
Agent Framework упрощает создание простых агентов на основе множества различных служб вывода.
Для создания этих агентов можно использовать любую службу вывода заключений, которая предоставляет реализацию клиента чата.
Это можно сделать с помощью SupportsChatGetResponse протокола, который определяет стандарт для методов, которые клиент должен поддерживать с стандартным Agent классом.
Эти агенты поддерживают широкий спектр функциональных возможностей из коробки:
- Вызов функции
- Многоходовые беседы с управлением локальной историей чатов или ведением истории чатов с помощью службы
- Средства, предоставляемые пользовательскими службами (например, MCP, средство выполнения кода)
- Структурированные выходные данные
- Потоковая передача ответов
Чтобы создать одного из этих агентов, просто создайте Agent, используя выбранную вами реализацию клиента чата.
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!")
Кроме того, вы можете использовать удобный метод на клиенте чата:
from agent_framework.azure import AzureOpenAIResponsesClient
from azure.identity.aio import DefaultAzureCredential
agent = AzureOpenAIResponsesClient(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"
)
Замечание
В этом примере показано, как использовать AzureOpenAIResponsesClient, но тот же шаблон применяется к любому клиенту чата, который реализует SupportsChatGetResponse. Взгляните на обзор поставщиков для получения дополнительной информации о других клиентах.
Подробные примеры см. в разделах документации для конкретного агента ниже.
Поддерживаемые поставщики чатов
| Базовая служба вывода | Description | Поддерживается хранилище журнала чатов службы |
|---|---|---|
| Агент Foundry | Агент, использующий службу агента в качестве серверной части. | Да |
| Завершение чата Azure OpenAI | Агент, использующий службу завершения чата Azure OpenAI. | нет |
| Ответы Azure OpenAI | Агент, использующий службу ответов Azure OpenAI. | Да |
| Помощники по Azure OpenAI | Агент, использующий службу Azure OpenAI Assistants. | Да |
| Завершение чата OpenAI | Агент, использующий службу завершения чата OpenAI. | нет |
| Ответы OpenAI | Агент, использующий службу ответов OpenAI. | Да |
| Помощники OpenAI | Агент, использующий службу Помощников OpenAI. | Да |
| Anthropic Claude | Агент, использующий модели Anthropic Claude. | нет |
| Amazon Bedrock | Агент, использующий модели Amazon Bedrock через клиент чата Agent Framework Bedrock. | нет |
| GitHub Copilot | Агент, использующий серверную часть пакета SDK для GitHub Copilot. | нет |
| Ollama (совместимая с OpenAI) | Агент, использующий модели Ollama, размещенные локально, через API, совместимые с OpenAI. | нет |
| Любой другой ChatClient | Вы также можете использовать любую другую реализацию SupportsChatGetResponse для создания агента. |
Меняется |
Хранение пользовательской истории чатов поддерживается, когда поддерживается состояние беседы на основе сеанса.
Ответы потоковые
Агенты поддерживают как обычные, так и потоковые ответы:
# 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)
Примеры потоковой передачи см. в следующих примерах:
- Примеры потоковой передачи ИИ Azure
- Примеры потоковой передачи Azure OpenAI
- Примеры потоковой передачи OpenAI
Дополнительные шаблоны вызовов см. в разделе "Запуск агентов".
Инструменты функций
Вы можете предоставить агентам функциональные инструменты для повышения их возможностей.
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(
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?")
Общие сведения о средствах и шаблонах инструментов см. в разделе "Инструменты".
Настраиваемые агенты
Полные пользовательские реализации (например, детерминированные агенты или агенты, поддерживаемые API), см. в разделе "Пользовательские агенты". Эта страница охватывает реализацию SupportsAgentRun или расширение BaseAgent, включая потоковую передачу обновлений с AgentResponseUpdate.
Другие типы агентов
Agent Framework также включает агенты, поддерживаемые протоколом, такие как:
| Тип агента | Description |
|---|---|
| A2A | Прокси-агент, который подключается и вызывает удаленные агенты, совместимые с A2A. |