Langkah 6: Agent Harness

Sebuah pembungkus membekali klien chat dengan kerangka pendukung yang dibutuhkan agen untuk menangani tugas panjang yang terdiri dari banyak langkah — mode perencanaan/eksekusi, daftar tugas sebagai acuan perencanaan, pemadatan konteks, memori berkas, akses berkas, dan persetujuan penggunaan alat "jangan tanya lagi". Alih-alih merakit potongan-potongan itu sendiri, Anda membuat agen harness dan mengeluarkannya dari kotak.

Buat agen harness dari IChatClient apa pun menggunakan metode ekstensi AsHarnessAgent. Karena harness bekerja menangani tugas secara interaktif melalui banyak langkah, Anda biasanya menjalankannya dalam loop percakapan: pertahankan AgentSession agar status harness (rencana, daftar tugas, dan riwayat) tetap tersimpan dari satu giliran percakapan ke giliran berikutnya, baca instruksi pengguna selanjutnya, dan stream output agen saat dihasilkan.

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();
}

Sistem ini menangani perencanaan, pelacakan tugas, dan penyimpanan riwayat untuk Anda sepanjang percakapan. Untuk konsol dengan fitur lengkap — dengan prompt persetujuan alat, tampilan todo/mode, dan perintah garis miring — lihat contoh UX terminal.

Tip

Lihat sampel .NET harness untuk aplikasi yang dapat dijalankan penuh.

Sampel lengkap membuat klien obrolan Microsoft Foundry, membungkusnya dengan create_harness_agent, dan menggunakan kembali satu sesi di dua giliran. Harness menambahkan perencanaan, pelacakan to-do, dan pemadatan, sementara sampel menonaktifkan memori file dan pencarian web agar tetap fokus.

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())

Sesi yang dibagikan mempertahankan state harness di antara kedua pemanggilan. Untuk konsol berfitur lengkap - dengan prompt persetujuan alat, to-do dan penyajian mode, dan perintah garis miring - lihat UX terminal sampel.

Tip

Lihat contoh lengkap untuk memulai. Untuk pola lainnya, lihat sampel harness Python.

Nota

Dukungan Go untuk harness agen akan segera tersedia. Lihat repositori Agent Framework Go untuk status terbaru.

Langkah berikutnya

Masuk lebih dalam:

  • Agent Harnesses — pemadatan, perulangan, shell, dan UX terminal sampel
  • Keahlian Agen — memuat keahlian secara bertahap dari sistem berkas