Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Ett ramverk omsluter en chattklient med den struktur som en agent behöver för att arbeta sig igenom långa uppgifter i flera steg – planerings- och körlägen, en att göra-lista att planera utifrån, kontextkomprimering, filminne, filåtkomst och verktygsgodkännande av typen ”fråga inte igen”. Istället för att montera dessa bitar själv skapar du en seleagent och får ut dem ur lådan.
Skapa en seleagent från valfri IChatClient med AsHarnessAgent tilläggsmetoden. Eftersom en harness arbetar sig igenom uppgifter interaktivt över många steg styr du den vanligtvis via en konversationsloop: behåll ett AgentSession så att harnessens tillstånd (plan, att göra-listor och historik) bevaras mellan turerna, läs användarens nästa instruktion och strömma agentens utdata allt eftersom den genereras.
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();
}
Ramverket hanterar planering, uppföljning av att göra-punkter och historiklagring åt dig under hela konversationen. För en fullfjädrad konsol – med verktygsgodkännandepromptar, rendering av att göra-listor och lägen samt snedstreckskommandon – se exempelterminalens användarupplevelse.
Tip
Se exempel på test harness för .NET för kompletta, körbara program.
Det fullständiga exemplet skapar en Microsoft Foundry-chattklient, omsluter den med create_harness_agent och återanvänder en session över två interaktioner. Ramverket lägger till planering, to-do-spårning och komprimering medan exemplet inaktiverar filminne och webbsökning för att behålla 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())
Den delade sessionen bevarar harness-tillståndet för båda anropen. En komplett konsol – med uppmaningar om godkännande av verktyg, to-do- och lägesåtergivning och snedstreckskommandon – finns i exempelterminalens UX.
Tip
Se det fullständiga introduktionsexemplet. Fler mönster finns i Python-harness-exempel.
Anmärkning
Stöd för agent-ramverk i Go kommer snart. Se Agent Framework Go-lagringsplatsen för den senaste statusen.
Nästa steg
Gå djupare:
- Agentselar – komprimering, loopning, gränssnitt och exempelterminalens UX
- Agentfärdigheter — läs in färdigheter gradvis från filsystemet