Поделиться через


Типы агентов Microsoft Agent Framework

Microsoft Agent Framework обеспечивает поддержку нескольких типов агентов для удовлетворения различных вариантов использования и требований.

Все агенты являются производными от общего базового класса, AIAgentкоторый предоставляет согласованный интерфейс для всех типов агентов. Это позволяет создавать общие функции, не зависящие от конкретного агента, на более высоком уровне, например, оркестрации с участием нескольких агентов.

Все агенты являются производными от общего базового класса, Agentкоторый предоставляет согласованный интерфейс для всех типов агентов. Это позволяет создавать общие функции, не зависящие от конкретного агента, на более высоком уровне, например, оркестрации с участием нескольких агентов.

Модель выполнения по умолчанию для агента

Все агенты в Microsoft Agent Framework выполняются с помощью структурированной модели среды выполнения. Эта модель координирует взаимодействие пользователей, вывод модели и выполнение инструментов в детерминированном цикле.

Схема агента ИИ

Это важно

Если вы используете Microsoft Agent Framework для создания приложений, работающих с сторонними серверами или агентами, это делается в вашем собственном риске. Мы рекомендуем просматривать все данные, совместно используемые сторонними серверами или агентами, и учитывать сторонние методики хранения и расположения данных. Вы несете ответственность за управление тем, как данные будут передаваться за пределы границ соответствия и географических границ вашей организации, а также за любые связанные с этим последствия.

Простые агенты, основанные на сервисах вывода

Agent Framework упрощает создание простых агентов на основе множества различных служб вывода. Любая служба вывода, предоставляющая Microsoft.Extensions.AI.IChatClient реализацию, может использоваться для создания этих агентов. Это Microsoft.Agents.AI.ChatClientAgent класс агента, используемый для предоставления агента для любой IChatClient реализации.

Эти агенты поддерживают широкий спектр функциональных возможностей из коробки:

  1. Вызов функции.
  2. Многоходовые диалоги с локальным управлением историей чатов или управляемые службой истории чатов.
  3. Индивидуальные инструменты, предоставляемые службой (например, MCP, выполнение кода).
  4. Структурированные выходные данные.

Чтобы создать одного из этих агентов, просто создайте 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-адрес не требуется
  1. Обновление с Azure OpenAI до Azure AI Foundry
  2. Рекомендуется использовать пакет SDK OpenAI.
  3. Хотя мы рекомендуем использовать пакет 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 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 и Azure AI 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 поддерживается только в службе агентов Azure AI Foundry. См. таблицу выше, чтобы использовать правильный URL-адрес.

var persistentAgentsClient = new PersistentAgentsClient(serviceUrl, new DefaultAzureCredential());
AIAgent agent = await persistentAgentsClient.CreateAIAgentAsync(
    model: deploymentName,
    name: "Joker",
    instructions: "You are good at telling jokes.");

Простые агенты, основанные на сервисах вывода

Agent Framework упрощает создание простых агентов на основе множества различных служб вывода. Для создания этих агентов можно использовать любую службу вывода заключений, которая предоставляет реализацию клиента чата. Это можно сделать с помощью SupportsChatGetResponse, который определяет стандарт для методов, которые клиент должен поддерживать, чтобы использовать стандартный класс Agent.

Эти агенты поддерживают широкий спектр функциональных возможностей из коробки:

  1. Вызов функции
  2. Многоходовые беседы с управлением локальной историей чатов или ведением истории чатов с помощью службы
  3. Средства, предоставляемые пользовательскими службами (например, MCP, средство выполнения кода)
  4. Структурированные выходные данные
  5. Потоковая передача ответов

Чтобы создать одного из этих агентов, просто создайте 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(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"
)

Замечание

В этом примере показано, как использовать AzureOpenAIResponsesClient, но тот же шаблон применяется к любому клиенту чата, который реализует SupportsChatGetResponse. Взгляните на обзор поставщиков для получения дополнительной информации о других клиентах.

Подробные примеры см. в разделах документации для конкретного агента ниже.

Поддерживаемые поставщики чатов

Базовая служба вывода Description Поддерживается хранилище журнала чатов службы
Агент Azure AI Foundry Агент, использующий службу агентов ИИ Azure в качестве серверной части. Да
Завершение чата 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)

Примеры потоковой передачи см. в следующих примерах:

Дополнительные шаблоны вызовов см. в разделе "Запуск агентов".

Инструменты функций

Вы можете предоставить агентам функциональные инструменты для повышения их возможностей.

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?")

Общие сведения о средствах и шаблонах инструментов см. в разделе "Инструменты".

Настраиваемые агенты

Полные пользовательские реализации (например, детерминированные агенты или агенты, поддерживаемые API), см. в разделе "Пользовательские агенты". Эта страница охватывает реализацию SupportsAgentRun или расширение BaseAgent, включая потоковую передачу обновлений с AgentResponseUpdate.

Другие типы агентов

Agent Framework также включает агенты, поддерживаемые протоколом, такие как:

Тип агента Description
A2A Прокси-агент, который подключается и вызывает удаленные агенты, совместимые с A2A.

Дальнейшие шаги