Шаг 6: Обвязка агента

Обвязка оборачивает чат-клиент, добавляя инфраструктуру, необходимую агенту для работы с длительными многошаговыми задачами — режимы планирования и выполнения, список задач для планирования, сжатие контекста, память о файлах, доступ к файлам и подтверждение использования инструментов с опцией «больше не спрашивать». Вместо того чтобы собирать эти компоненты самостоятельно, вы создаёте агент Harness и получаете всё готовым к использованию.

Создайте агент harness из любого IChatClient с помощью метода расширения AsHarnessAgent. Поскольку harness интерактивно выполняет задачи за много шагов, обычно им управляют через цикл диалога: поддерживайте AgentSession, чтобы состояние harness (план, список дел и история) сохранялось между репликами, считывайте следующую инструкцию пользователя и передавайте вывод агента потоком по мере его формирования.

using System;
using Microsoft.Agents.AI;
using Microsoft.Extensions.AI;

// chatClient is any IChatClient implementation (Foundry, Azure OpenAI, OpenAI, Anthropic, ...).
AIAgent agent = chatClient.AsHarnessAgent();

// A session carries the harness state (plan, todos, history) across turns.
AgentSession session = await agent.CreateSessionAsync();

Console.WriteLine("Harness agent ready. Type 'exit' to quit.");
while (true)
{
    Console.Write("> ");
    string? input = Console.ReadLine();
    if (string.IsNullOrWhiteSpace(input) || input.Equals("exit", StringComparison.OrdinalIgnoreCase))
    {
        break;
    }

    // Stream this turn's output as the harness plans and works through the request.
    await foreach (var update in agent.RunStreamingAsync(input, session))
    {
        Console.Write(update);
    }

    Console.WriteLine();
}

Система берёт на себя планирование, ведение списка задач и сохранение истории на протяжении всего разговора. Полнофункциональный интерфейс консоли — с запросами на подтверждение использования инструментов, отображением todo/mode и слеш-командами — см. в примере интерфейса терминала.

Tip

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

Полный пример создает клиент чата Microsoft Foundry, оборачивает его с помощью create_harness_agent и повторно использует один сеанс в течение двух ходов. Обвязка добавляет планирование, отслеживание задач и сжатие, а пример отключает файловую память и поиск в Интернете, чтобы оставаться в фокусе.

import asyncio

from agent_framework import create_harness_agent
from agent_framework.foundry import FoundryChatClient
from azure.identity import AzureCliCredential


async def main() -> None:
    agent = create_harness_agent(
        client=FoundryChatClient(
            project_endpoint="https://your-account.services.ai.azure.com/api/projects/your-project",
            model="gpt-6-luna",
            credential=AzureCliCredential(),
        ),
        agent_instructions="Help users plan and complete multi-step tasks.",
        disable_file_memory=True,
        disable_web_search=True,
    )
    session = agent.create_session()

    print(await agent.run("Plan a weekend trip to Seattle.", session=session))
    print(await agent.run("Turn that plan into a checklist.", session=session))


if __name__ == "__main__":
    asyncio.run(main())

Общий сеанс сохраняет состояние тестовой обвязки для обоих вызовов. Для полнофункциональной консоли — с запросами на утверждение инструментов, to-do, отображением режимов и слеш-командами — см. пример пользовательского интерфейса терминала.

Tip

См. полный пример начала работы. Дополнительные шаблоны см. в образцах harness для Python.

Замечание

В ближайшее время будет добавлена поддержка ремня агентов. Сведения о последнем состоянии см. в репозитории Agent Framework Go .

Дальнейшие действия

Вернитесь глубже:

  • Средства агента — сжатие, циклирование, оболочка и пример пользовательского интерфейса терминала
  • Навыки агента — постепенно загружают навыки из файловой системы