Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Microsoft Agent Framework обеспечивает поддержку нескольких типов агентов для удовлетворения различных вариантов использования и требований.
Все агенты являются производными от общего базового класса, AIAgentкоторый предоставляет согласованный интерфейс для всех типов агентов. Это позволяет создавать общие функции, не зависящие от конкретного агента, на более высоком уровне, например, оркестрации с участием нескольких агентов.
Это важно
Если вы используете 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 |
|---|---|---|---|
| Агент Azure AI Foundry | Агент, использующий службу агентов Azure AI Foundry в качестве серверной части. | Да | нет |
| Модели завершения чатов Azure AI Foundry | Агент, использующий любую из моделей, развернутых в Службе Azure AI Foundry, в качестве серверной части через ChatCompletion. | нет | Да |
| Ответы моделей Azure AI Foundry | Агент, использующий в качестве серверной части любую из моделей, развернутых в службе Azure AI Foundry, через интерфейс Responses. | Да | Да |
| Azure OpenAI ChatCompletion | Агент, использующий службу Azure OpenAI ChatCompletion. | нет | Да |
| Ответы Azure OpenAI | Агент, использующий службу ответов Azure OpenAI. | Да | Да |
| 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
При использовании Azure AI Foundry, Azure OpenAI или служб OpenAI доступны различные варианты sdk для подключения к этим службам. В некоторых случаях можно использовать несколько пакетов SDK для подключения к одной службе или использования одного пакета SDK для подключения к разным службам. Ниже приведен список различных параметров, доступных по URL-адресу, который следует использовать при подключении к каждому. Обязательно замените <resource> и <project> на фактические имена ваших ресурсов и проектов.
| Служба искусственного интеллекта | SDK | Nuget (менеджер пакетов для .NET) | URL-адрес |
|---|---|---|---|
| Модели ИИ Azure Foundry | Пакет SDK для Azure OpenAI 2 | Azure.AI.OpenAI | https://ai-foundry-<resource.services.ai.azure.com/> |
| Модели ИИ Azure Foundry | Пакет SDK для OpenAI 3 | OpenAI | https://ai-foundry-<resource.services.ai.azure.com/openai/v1/> |
| Модели ИИ Azure Foundry | Пакет SDK для вывода искусственного интеллекта Azure 2 | Azure.AI.Inference | https://ai-foundry-<resource.services.ai.azure.com/models> |
| Агенты Azure AI 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 OpenAI до Azure AI Foundry
- Рекомендуется использовать пакет SDK OpenAI.
- Хотя мы рекомендуем использовать пакет SDK OpenAI для доступа к моделям Azure AI Foundry, модели Azure AI Foundry поддерживают модели от многих разных поставщиков, а не только 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 AzureCliCredential(), "https://ai.azure.com/.default"), clientOptions)
После того как вы создали OpenAIClient, вы можете получить дочерний клиент для конкретной службы, которую хотите использовать, а затем использовать его для создания AIAgent.
AIAgent agent = client
.GetChatClient(model)
.AsAIAgent(instructions: "You are good at telling jokes.", name: "Joker");
Использование SDK для Azure OpenAI
Этот пакет SDK можно использовать для подключения к службам Azure OpenAI и Azure AI Foundry Models.
В любом случае при создании службы AzureOpenAIClient необходимо указать правильный URL-адрес службы.
См. таблицу выше, чтобы использовать правильный URL-адрес.
AIAgent agent = new AzureOpenAIClient(
new Uri(serviceUrl),
new AzureCliCredential())
.GetChatClient(deploymentName)
.AsAIAgent(instructions: "You are good at telling jokes.", name: "Joker");
Использование пакета SDK для постоянных агентов AI Azure
Этот пакет SDK поддерживается только в службе агентов Azure AI Foundry. См. таблицу выше, чтобы использовать правильный URL-адрес.
var persistentAgentsClient = new PersistentAgentsClient(serviceUrl, new AzureCliCredential());
AIAgent agent = await persistentAgentsClient.CreateAIAgentAsync(
model: deploymentName,
name: "Joker",
instructions: "You are good at telling jokes.");
Простые агенты, основанные на сервисах вывода
Agent Framework упрощает создание простых агентов на основе множества различных служб вывода. Для создания этих агентов можно использовать любую службу вывода заключений, которая предоставляет реализацию клиента чата.
Эти агенты поддерживают широкий спектр функциональных возможностей из коробки:
- Вызов функции
- Многоходовые беседы с управлением локальной историей чатов или ведением истории чатов с помощью службы
- Средства, предоставляемые пользовательскими службами (например, MCP, средство выполнения кода)
- Структурированные выходные данные
- Потоковая передача ответов
Чтобы создать одного из этих агентов, просто создайте ChatAgent с помощью реализации чата по вашему выбору.
from agent_framework import ChatAgent
from agent_framework.azure import AzureAIAgentClient
from azure.identity.aio import DefaultAzureCredential
async with (
DefaultAzureCredential() as credential,
ChatAgent(
chat_client=AzureAIAgentClient(async_credential=credential),
instructions="You are a helpful assistant"
) as agent
):
response = await agent.run("Hello!")
Кроме того, вы можете использовать удобный метод на клиенте чата:
from agent_framework.azure import AzureAIAgentClient
from azure.identity.aio import DefaultAzureCredential
async with DefaultAzureCredential() as credential:
agent = AzureAIAgentClient(async_credential=credential).as_agent(
instructions="You are a helpful assistant"
)
Подробные примеры см. в разделах документации для конкретного агента ниже.
Поддерживаемые типы агентов
| Базовая служба вывода | Description | Поддерживается хранилище журнала чатов службы | Поддерживается хранилище пользовательского журнала чата |
|---|---|---|---|
| Агент ИИ Azure | Агент, использующий службу агентов ИИ Azure в качестве серверной части. | Да | нет |
| Завершение чата Azure OpenAI | Агент, использующий службу завершения чата Azure OpenAI. | нет | Да |
| Ответы Azure OpenAI | Агент, использующий службу ответов Azure OpenAI. | Да | Да |
| Завершение чата OpenAI | Агент, использующий службу завершения чата OpenAI. | нет | Да |
| Ответы OpenAI | Агент, использующий службу ответов OpenAI. | Да | Да |
| Помощники OpenAI | Агент, использующий службу Помощников OpenAI. | Да | нет |
| Любой другой ChatClient | Вы также можете использовать любую другую реализацию клиента чата для создания агента. | Меняется | Меняется |
Инструменты функций
Вы можете предоставить агентам функциональные инструменты для повышения их возможностей.
from typing import Annotated
from pydantic import Field
from azure.identity.aio import DefaultAzureCredential
from agent_framework.azure import AzureAIAgentClient
def get_weather(location: Annotated[str, Field(description="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,
AzureAIAgentClient(async_credential=credential).as_agent(
instructions="You are a helpful weather assistant.",
tools=get_weather
) as agent
):
response = await agent.run("What's the weather in Seattle?")
Полные примеры с инструментами функций см. в следующих примерах:
- Azure AI с инструментами функций
- Azure OpenAI с инструментами функций
- OpenAI с инструментами для функций
Ответы потоковые
Агенты поддерживают как обычные, так и потоковые ответы:
# 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_stream("What's the weather like in Portland?"):
if chunk.text:
print(chunk.text, end="", flush=True)
Примеры потоковой передачи см. в следующих примерах:
- Примеры потоковой передачи ИИ Azure
- Примеры потоковой передачи Azure OpenAI
- Примеры потоковой передачи OpenAI
Средства интерпретатора кода
Агенты ИИ Azure поддерживают размещенные средства интерпретатора кода для выполнения кода Python:
from agent_framework import ChatAgent, HostedCodeInterpreterTool
from agent_framework.azure import AzureAIAgentClient
from azure.identity.aio import DefaultAzureCredential
async with (
DefaultAzureCredential() as credential,
ChatAgent(
chat_client=AzureAIAgentClient(async_credential=credential),
instructions="You are a helpful assistant that can execute Python code.",
tools=HostedCodeInterpreterTool()
) as agent
):
response = await agent.run("Calculate the factorial of 100 using Python")
Примеры интерпретатора кода см. в следующих примерах:
- Azure AI с интерпретатором кода
- Azure OpenAI Assistant с интерпретатором кода
- Помощники OpenAI с интерпретатором кода
Пользовательские агенты
Кроме того, можно создать абсолютно настраиваемые агенты, которые не являются просто обёрткой вокруг клиента чата.
Agent Framework предоставляет AgentProtocol протокол и базовый класс BaseAgent, которые при реализации или создании подкласса позволяют осуществлять полный контроль над поведением и возможностями агента.
from agent_framework import BaseAgent, AgentResponse, AgentResponseUpdate, AgentThread, ChatMessage
from collections.abc import AsyncIterable
class CustomAgent(BaseAgent):
async def run(
self,
messages: str | ChatMessage | list[str] | list[ChatMessage] | None = None,
*,
thread: AgentThread | None = None,
**kwargs: Any,
) -> AgentResponse:
# Custom agent implementation
pass
def run_stream(
self,
messages: str | ChatMessage | list[str] | list[ChatMessage] | None = None,
*,
thread: AgentThread | None = None,
**kwargs: Any,
) -> AsyncIterable[AgentResponseUpdate]:
# Custom streaming implementation
pass