Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
После создания агента необходимо разместить его, чтобы пользователи и другие агенты могли взаимодействовать с ним.
Параметры размещения
| Вариант | Description | Лучше всего для |
|---|---|---|
| Протокол A2A | Предоставление доступа к агентам через протокол "агент-к-агенту" | Системы с несколькими агентами |
| Совместимые с OpenAI конечные точки | Публикация агентов через API завершения чата или ответов | Клиенты, совместимые с OpenAI |
| Функции Azure (устойчивые) | Запуск агентов в качестве устойчивых функций Azure | Бессерверные, длительные задачи |
| ПротоколAG-UI | Создание веб-приложений агента ИИ | Веб-интерфейсы |
Размещение в ASP.NET Core
Платформа Agent Framework предоставляет библиотеки хостинга, которые позволяют интегрировать ИИ-агентов в приложения ASP.NET Core. Эти библиотеки упрощают регистрацию, настройку и делают агентов доступными с помощью различных протоколов.
Как описано в обзоре агентов, AIAgent является основной концепцией фреймворка агентов. Он определяет оболочку LLM, которая обрабатывает входные данные пользователей, принимает решения, вызывает средства и выполняет дополнительную работу для выполнения действий и создания ответов. Предоставление агентов ИИ из приложения ASP.NET Core является не тривиальной задачей. Библиотеки размещения решают это путем регистрации агентов ИИ в контейнере внедрения зависимостей, что дает возможность разрешать зависимости и использовать их в службах приложений. Они также позволяют управлять зависимостями агента, такими как средства и хранилище сеансов, из того же контейнера. Агенты могут размещаться вместе с инфраструктурой приложений, независимо от используемых протоколов. Аналогичным образом рабочие процессы можно размещать и использовать общую инфраструктуру приложения.
Библиотека основной хостинговой функции
Библиотека Microsoft.Agents.AI.Hosting является основой для размещения агентов ИИ в ASP.NET Core. Он предоставляет расширения для регистрации и настройки агентов ИИ и рабочих процессов через IHostApplicationBuilder. В ASP.NET Core IHostApplicationBuilder — это базовый тип, представляющий построителя для размещенных приложений и служб, управления конфигурацией, ведением журнала, временем существования и т. д.
Перед настройкой агентов или рабочих процессов зарегистрируйте IChatClient в контейнере внедрения зависимостей. В приведенных ниже примерах он регистрируется в качестве ключевого одноэлемента под именем chat-model:
// endpoint is of 'https://<your-own-foundry-endpoint>.openai.azure.com/' format
// deploymentName is 'gpt-4o-mini' for example
IChatClient chatClient = new AzureOpenAIClient(
new Uri(endpoint),
new DefaultAzureCredential())
.GetChatClient(deploymentName)
.AsIChatClient();
builder.Services.AddSingleton(chatClient);
AddAIAgent
Зарегистрируйте агент ИИ с инъекцией зависимостей:
var pirateAgent = builder.AddAIAgent(
"pirate",
instructions: "You are a pirate. Speak like a pirate",
description: "An agent that speaks like a pirate.",
chatClientServiceKey: "chat-model");
Метод AddAIAgent() возвращает метод IHostedAgentBuilder, который предоставляет методы расширения для настройки агента. Например, можно добавить инструменты в агент:
var pirateAgent = builder.AddAIAgent("pirate", instructions: "You are a pirate. Speak like a pirate")
.WithAITool(new MyTool()); // MyTool is a custom type derived from AITool
Вы также можете настроить хранилище сеансов (хранилище для данных беседы):
var pirateAgent = builder.AddAIAgent("pirate", instructions: "You are a pirate. Speak like a pirate")
.WithInMemorySessionStore();
AddWorkflow
Регистрация рабочих процессов, которые координируют нескольких агентов. Рабочий процесс по сути является графом, где каждый узел представляет собой AIAgent, и агенты взаимодействуют друг с другом.
В этом примере два агента работают последовательно. Сначала ввод пользователя отправляется в agent-1, который создает ответ и отправляет его в agent-2. Затем рабочий процесс выводит окончательный ответ. Также существует метод, который создает параллельное взаимодействие агентов BuildConcurrent.
builder.AddAIAgent("agent-1", instructions: "you are agent 1!");
builder.AddAIAgent("agent-2", instructions: "you are agent 2!");
var workflow = builder.AddWorkflow("my-workflow", (sp, key) =>
{
var agent1 = sp.GetRequiredKeyedService<AIAgent>("agent-1");
var agent2 = sp.GetRequiredKeyedService<AIAgent>("agent-2");
return AgentWorkflowBuilder.BuildSequential(key, [agent1, agent2]);
});
Предоставить рабочий процесс как AI-агента
Чтобы использовать интеграции протокола (например, A2A или OpenAI) с рабочим процессом, преобразуйте его в автономный агент. В настоящее время рабочие процессы не предоставляют аналогичные возможности интеграции самостоятельно, поэтому этот шаг преобразования требуется:
var workflowAsAgent = builder
.AddWorkflow("science-workflow", (sp, key) => { ... })
.AddAsAIAgent(); // Now the workflow can be used as an agent
Сведения о реализации
Библиотеки размещения действуют как адаптеры протоколов, которые объединяют внешние протоколы связи и внутреннюю реализацию AIAgent Agent Framework. При использовании библиотеки интеграции размещения библиотека извлекает зарегистрированную AIAgent из внедрения зависимостей, оборачивает ее с помощью промежуточного ПО, относящегося к протоколу, чтобы переводить входящие запросы и исходящие ответы, и вызывает AIAgent для обработки запросов. Эта архитектура делает реализацию агента независимой от конкретного протокола.
Например, используя библиотеку хостинга ASP.NET Core с адаптером протокола A2A.
// Register the agent
var pirateAgent = builder.AddAIAgent("pirate",
instructions: "You are a pirate. Speak like a pirate",
description: "An agent that speaks like a pirate.");
// Expose via a protocol (e.g. A2A)
builder.Services.AddA2AServer();
var app = builder.Build();
app.MapA2AServer();
app.Run();
Подсказка
Примеры устойчивых функций Azure см. в примерах бессерверного размещения.
Установите пакет размещения Функций Azure:
pip install agent-framework-azurefunctions --pre
Создайте агент:
from agent_framework.azure import AgentFunctionApp, AzureOpenAIChatClient
from azure.identity import AzureCliCredential
# 1. Instantiate the agent with the chosen deployment and instructions.
def _create_agent() -> Any:
"""Create the Joker agent."""
return AzureOpenAIChatClient(credential=AzureCliCredential()).as_agent(
name="Joker",
instructions="You are good at telling jokes.",
)
Регистрация агента с помощью AgentFunctionApp:
# 2. Register the agent with AgentFunctionApp so Azure Functions exposes the required triggers.
app = AgentFunctionApp(agents=[_create_agent()], enable_health_check=True, max_poll_retries=50)
Запустите локально с помощью основных средств Функций Azure:
func start
Затем вызовите:
curl -X POST http://localhost:7071/api/agents/Joker/run \
-H "Content-Type: text/plain" \
-d "Tell me a short joke about cloud computing."
Подсказка
Проверьте полный пример для полного исполняемого файла, а также примеры хостинга функций Azure для других схем.
Дальнейшие шаги
Вернитесь глубже:
- Протокол A2A — предоставление и использование агентов через A2A
- Функции Azure — размещение бессерверных агентов
- протоколAG-UI — пользовательские интерфейсы веб-агента
- Документация по размещённым агентам Foundry — изучите размещённых агентов в Azure AI Foundry
- Пример размещенных агентов Foundry (Python) — запуск комплексного примера полноценного использования размещенного агента в рамках Agent Framework.