Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
После создания агента необходимо разместить его, чтобы пользователи и другие агенты могли взаимодействовать с ним.
Параметры размещения
| Вариант | 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 your Microsoft Foundry project endpoint
// deploymentName is 'gpt-4o-mini' for example
IChatClient chatClient = new AIProjectClient(
new Uri(endpoint),
new DefaultAzureCredential())
.GetProjectOpenAIClient()
.GetProjectResponsesClient()
.AsIChatClient(deploymentName);
builder.Services.AddSingleton(chatClient);
Предупреждение
DefaultAzureCredential удобно для разработки, но требует тщательного рассмотрения в рабочей среде. В рабочей среде рекомендуется использовать определенные учетные данные (например, ManagedIdentityCredential), чтобы избежать проблем с задержкой, непреднамеренной проверки данных аутентификации и потенциальных рисков безопасности из-за резервных механизмов.
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 typing import Any
from agent_framework import Agent
from agent_framework.azure import AgentFunctionApp
from agent_framework.foundry import FoundryChatClient
from azure.identity.aio import AzureCliCredential
from dotenv import load_dotenv
load_dotenv()
# 1. Instantiate the agent with the chosen deployment and instructions.
def _create_agent() -> Any:
"""Create the Joker agent."""
return Agent(
Регистрация агента с помощью AgentFunctionApp:
model=os.environ["FOUNDRY_MODEL"],
credential=AzureCliCredential(),
Запустите локально с помощью основных средств Функций 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 — понимание работы размещённых агентов в Microsoft Foundry
- Пример размещенных агентов Foundry (Python) — запуск комплексного примера полноценного использования размещенного агента в рамках Agent Framework.