Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Платформа агента Майкрософт обеспечивает поддержку нескольких типов агентов для удовлетворения различных вариантов использования и требований.
Все агенты являются производными от общего базового класса, AIAgentкоторый предоставляет согласованный интерфейс для всех типов агентов. Это позволяет создавать общие функции, не зависящие от конкретного агента, на более высоком уровне, например, оркестрации с участием нескольких агентов.
Все агенты являются производными от общего базового класса, Agentкоторый предоставляет согласованный интерфейс для всех типов агентов. Это позволяет создавать общие функции, не зависящие от конкретного агента, на более высоком уровне, например, оркестрации с участием нескольких агентов.
Модель выполнения по умолчанию для агента
Все агенты в Майкрософт Agent Framework выполняются с помощью структурированной модели среды выполнения. Эта модель координирует взаимодействие пользователей, вывод модели и выполнение инструментов в детерминированном цикле.
Это важно
Если вы используете Майкрософт Agent Framework для создания приложений, работающих с любыми сторонними серверами, агентами, кодом или не Azure прямыми моделями ("Сторонние системы"), вы делаете это в собственном риске. Сторонние системы — это не Майкрософт продукты в соответствии с условиями Майкрософт продукта и регулируются собственными условиями лицензии сторонних производителей. Вы несете ответственность за любое использование и связанные расходы.
Мы рекомендуем просматривать все данные, совместно используемые и получаемые из сторонних систем, и учитывать сторонние методики обработки, совместного использования, хранения и расположения данных. Вы несете ответственность за управление тем, будет ли ваша информация выходить за пределы соблюдения требований Azure и географических границ вашей организации, а также за все связанные с этим последствия. Вам необходимо обеспечить подготовку соответствующих разрешений, установление границ и получение утверждений.
Вы несете ответственность за тщательное изучение и тестирование приложений, которые вы создаете с помощью платформы агента Майкрософт в контексте конкретных вариантов использования, а также принятия всех соответствующих решений и настроек. Это включает реализацию собственных ответственных мер по снижению рисков искусственного интеллекта, таких как метапромпт, фильтры содержимого или другие системы безопасности, а также обеспечение соответствия ваших приложений соответствующим стандартам качества, надежности, безопасности и добросовестности. См. также: вопросы и ответы по прозрачности
Простые агенты, основанные на сервисах вывода
Agent Framework упрощает создание простых агентов на основе множества различных служб вывода.
Для создания этих агентов можно использовать любую службу вывода, предоставляющую реализацию Майкрософт.Extensions.AI.IChatClient.
Майкрософт.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 |
|---|---|---|---|
| Майкрософт Foundry Agent | Агент, использующий службу Foundry Agent Service в качестве серверной части. | Да | нет |
| Foundry Models завершение чата | Агент, использующий любую из моделей, развернутых в службе Foundry в качестве серверной части через ChatCompletion. | нет | Да |
| Ответы на модели литейных моделей | Агент, использующий любую из моделей, развернутых в службе Foundry в качестве своей серверной архитектуры при помощи компонента Responses. | Да | Да |
| Хитри Anthropic | Агент, использующий модель Claude через службу Foundry Anthropic в качестве основы для работы. | нет | Да |
| Azure OpenAI ChatCompletion | Агент, использующий службу OpenAI ChatCompletion Azure. | нет | Да |
| Ответы Azure OpenAI | Агент, использующий службу ответов OpenAI Azure. | Да | Да |
| Anthropic | Агент, использующий модель Claude через Anthropic Service в качестве бэкенда. | нет | Да |
| OpenAI ChatCompletion | Агент, использующий службу OpenAI ChatCompletion. | нет | Да |
| Ответы OpenAI | Агент, использующий службу ответов OpenAI. | Да | Да |
Любой другой IChatClient |
Вы также можете использовать любую другую реализацию Майкрософт.Extensions.AI.IChatClient для создания агента. |
Меняется | Меняется |
Сложные настраиваемые агенты
Кроме того, можно создать полностью пользовательские агенты, которые не просто являются оболочками вокруг IChatClient.
Платформа агента предоставляет базовый AIAgent тип.
Этот базовый тип является основной абстракцией для всех агентов, которые при подклассах обеспечивают полный контроль над поведением и возможностями агента.
Дополнительные сведения см. в документации по пользовательским агентам.
Прокси-серверы для удаленных агентов
Agent Framework предоставляет готовые к использованию AIAgent реализации для типичных протоколов агентов, размещенных в службах, таких как A2A. Таким образом вы можете легко подключаться к удаленным агентам из приложения и использовать их.
Дополнительные сведения см. в документации по каждому типу агента:
| Протокол | Description |
|---|---|
| A2A | Агент, который служит прокси-сервером для удаленного агента через протокол A2A. |
Справочник по параметрам пакета SDK Azure и OpenAI
При использовании Foundry, Azure OpenAI, OpenAI или Anthropic, у вас есть различные варианты SDK для подключения к этим службам. В некоторых случаях можно использовать несколько пакетов SDK для подключения к одной службе или использования одного пакета SDK для подключения к разным службам. Ниже приведен список различных параметров, доступных по URL-адресу, который следует использовать при подключении к каждому. Обязательно замените <resource> и <project> на фактические имена ваших ресурсов и проектов.
| Служба искусственного интеллекта | SDK | Nuget (менеджер пакетов для .NET) | URL-адрес |
|---|---|---|---|
| Литейные модели | Azure SDK 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/> |
| Литейные модели | Azure AI Inference SDK 2 | Azure.AI.Инференция | https://ai-foundry-<resource.services.ai.azure.com/models> |
| Агенты Foundry | Пакет SDK для проектов Azure AI + Майкрософт Agents AI Foundry | Azure.AI.Проекты / Майкрософт.Agents.AI.Foundry | https://ai-foundry-<resource.services.ai.azure.com/api/projects/ai-project-project><> |
| Azure OpenAI1 | Azure OpenAI SDK 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-адрес не требуется |
| Майкрософт Foundry Anthropic | Anthropic Foundry SDK | Anthropic.Foundry | Необходимое имя ресурса |
| Антропик | Anthropic SDK | Anthropic | Url-адрес или имя ресурса не требуется |
- Upgrading from Azure OpenAI to 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
.AsAIAgent(model: model, instructions: "You are good at telling jokes.", name: "Joker");
Использование пакета SDK для проектов Azure ИИ
Этот пакет SDK можно использовать для подключения к службам Foundry.
При создании AIProjectClientпроекта необходимо указать правильный URL-адрес конечной точки проекта.
См. таблицу выше, чтобы использовать правильный URL-адрес.
AIAgent agent = new AIProjectClient(
new Uri(serviceUrl),
new DefaultAzureCredential())
.AsAIAgent(
model: deploymentName,
instructions: "You are good at telling jokes.",
name: "Joker");
Использование пакета SDK для проектов ИИ Azure с агентами Foundry
Этот SDK используется как для агентов на основе Responses API, так и для версий Foundry Agents. См. таблицу выше, чтобы использовать правильный URL-адрес.
var aiProjectClient = new AIProjectClient(new Uri(serviceUrl), new DefaultAzureCredential());
AIAgent agent = aiProjectClient.AsAIAgent(
model: deploymentName,
instructions: "You are good at telling jokes.",
name: "Joker");
Использование Foundry Anthropic SDK
Ресурс — это имя поддомена, которое находится перед ".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.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!")
Кроме того, вы можете использовать удобный метод на клиенте чата:
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"
)
Замечание
В этом примере показано использование FoundryChatClient, но тот же шаблон применяется к любому клиенту чата, реализующему SupportsChatGetResponse, см. обзор провайдеров для получения дополнительных сведений о других клиентах.
Подробные примеры см. в разделах документации для конкретного агента ниже.
Поддерживаемые поставщики чатов
| Базовая служба вывода | Description | Поддерживается хранилище журнала чатов службы |
|---|---|---|
| Агент Foundry | Агент, использующий службу агента в качестве серверной части. | Да |
| Azure OpenAI Chat Completion | Агент, использующий службу завершения чата OpenAI Azure. | нет |
| Ответы Azure OpenAI | Агент, использующий службу ответов OpenAI Azure. | Да |
| Завершение чата 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)
Примеры потоковой передачи см. в следующих примерах:
- Примеры потоковой передачи от Foundry
- Примеры потоковой передачи завершения чата Azure OpenAI
- Примеры потоковой передачи ответов Azure OpenAI
- Примеры потоковой передачи чата OpenAI
- Примеры потоковой передачи ответов OpenAI
Дополнительные шаблоны вызовов см. в разделе "Запуск агентов".
Инструменты функций
Вы можете предоставить агентам функциональные инструменты для повышения их возможностей.
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?")
Общие сведения о средствах и шаблонах инструментов см. в разделе "Инструменты".
Настраиваемые агенты
Полные пользовательские реализации (например, детерминированные агенты или агенты, поддерживаемые API), см. в разделе "Пользовательские агенты". Эта страница охватывает реализацию SupportsAgentRun или расширение BaseAgent, включая потоковую передачу обновлений с AgentResponseUpdate.
Другие типы агентов
Agent Framework также включает агенты, поддерживаемые протоколом, такие как:
| Тип агента | Description |
|---|---|
| A2A | Прокси-агент, который подключается и вызывает удаленные агенты, совместимые с A2A. |