Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Un struttura di esecuzione di un agente è l'infrastruttura di runtime che trasforma un modello di linguaggio in un agente in grado di svolgere attività. Gestisce le chiamate ai modelli e agli strumenti, gestisce lo stato e il contesto della conversazione, applica i criteri di approvazione e può far progredire l'agente nello svolgimento di un'attività in più fasi.
Agent Framework offre un ambiente con convenzioni predefinite e completo di tutto il necessario per la ricerca, lo sviluppo, l'analisi dei dati e altre attività di lunga durata. È possibile fornire un client di chat e personalizzare solo le funzionalità necessarie per l'applicazione.
Architecture
Harness compone blocchi predefiniti di Agent Framework esistenti anziché definire un runtime dell'agente separato:
- Client chat : connette l'agente a un modello.
- Pipeline di chat : aggiunge chiamate di funzione, inserimento di messaggi, persistenza della cronologia delle chiamate al servizio e compattazione facoltativa.
- Provider di agenti e del contesto — consentono di aggiungere istruzioni valide per la sessione, strumenti, memoria, stato delle attività, modalità operative e capacità opzionali.
- Middleware e decoratori — aggiungere la gestione delle approvazioni, l'osservabilità e il loop limitato opzionale.
- Esperienza utente dell'applicazione : trasmette le risposte, visualizza lo stato di avanzamento e raccoglie input, ad esempio le approvazioni degli strumenti.
L'oggetto risultante rimane un normale agente di Agent Framework: un HarnessAgent oggetto che deriva da AIAgent in .NET o da un Agent oggetto restituito da create_harness_agent in Python. Le sue sessioni utilizzano le stesse astrazioni di sessione e di provider di contesto degli altri agenti.
Matrice di funzionalità di harness
| Capability | Comportamento dell'imbracatura | Linee guida canoniche |
|---|---|---|
| Chiamata di funzione | Abilitato con un limite di iterazione configurabile per richiesta. | Strumenti per le funzioni |
| Persistenza della cronologia delle chiamate per servizio | Mantiene la cronologia dopo ogni chiamata di modello in un'esecuzione che chiama lo strumento. | Sessioni |
| Compattazione | Abilitata quando vengono forniti limiti di token o una strategia personalizzata. | Compattazione |
| Monitoraggio delle attività | Abilitata per impostazione predefinita. | Pianificazione e attività |
| Modalità dell'agente | Le modalità di pianificazione ed esecuzione sono abilitate per impostazione predefinita. | Pianificazione e attività |
| Memoria file e accesso ai file | La memoria del file di sessione è abilitata per impostazione predefinita; l'accesso ai file condivisi è di consenso esplicito. | Fornitori di contesto |
| Approvazione degli strumenti | Le approvazioni permanenti e le regole di approvazione automatica sono abilitate per impostazione predefinita. | Approvazione degli strumenti |
| OpenTelemetry | L'osservabilità dell'agente è abilitata per impostazione predefinita. | Osservabilità |
| Ricerca Web | Aggiunta per impostazione predefinita in cui il client di chat selezionato lo supporta. | Ricerca Web |
| Competenze dell'agente | Abilitato per impostazione predefinita in .NET; da attivare esplicitamente tramite un provider o percorsi specifici in Python. | Competenze dell'agente |
| Agenti in background | Delega parallela facoltativa ad agenti secondari con nome. | Agenti in background |
| Esecuzione della shell | Assemblato a partire dal pacchetto shell; la factory Python può configurarlo automaticamente. | Strumenti della shell |
| Ciclo | Nuova invocazione facoltativa e limitata, determinata da valutatori o predicati. | Ciclo dell'agente |
La delega dell'agente in background è separata dalle risposte in background gestite dal provider. Gli agenti in background eseguono agenti figlio per attività delegate; le risposte in background interrogano periodicamente o riprendono una richiesta a un provider utilizzando un token di continuazione.
Creare un agente di cablaggio
Il pacchetto Microsoft.Agents.AI.Harness espone HarnessAgent nel namespace Microsoft.Agents.AI. Crearne uno da qualsiasi IChatClient con AsHarnessAgento costruire HarnessAgent direttamente:
using Microsoft.Agents.AI;
using Microsoft.Extensions.AI;
AIAgent agent = chatClient.AsHarnessAgent();
AgentResponse response = await agent.RunAsync("Plan a weekend trip to Seattle.");
Console.WriteLine(response.Text);
Usare HarnessAgentOptions per impostare linee guida operative a livello di harness, istruzioni specifiche dell'agente e opzioni di funzionalità:
AIAgent agent = chatClient.AsHarnessAgent(new HarnessAgentOptions
{
Name = "research-agent",
HarnessInstructions = "Use tools deliberately and report verified results.",
ChatOptions = new ChatOptions
{
Instructions = "You are a research assistant focused on academic sources.",
},
MaxContextWindowTokens = 128_000,
MaxOutputTokens = 16_384,
});
HarnessAgent.DefaultInstructions fornisce le linee guida predefinite per l'imbracatura.
HarnessInstructions viene visualizzato prima di ChatOptions.Instructions.
Personalizzare la composizione
Le funzionalità predefinite includono opzioni di destinazione, tra cui DisableTodoProvider, DisableAgentModeProviderDisableFileMemory, DisableAgentSkillsProvider, DisableWebSearch, DisableToolAutoApprovalDisableOpenTelemetry, , e DisableCompaction.
Aggiungi provider di contesto personalizzati con AIContextProviders. Attivare l'accesso ai file con FileAccessStore, la delega in background con BackgroundAgents e l'esecuzione in ciclo con LoopEvaluators.
Creare un agente di cablaggio
La create_harness_agent factory restituisce un oggetto completamente configurato Agent:
from agent_framework import create_harness_agent
from agent_framework.openai import OpenAIChatClient
agent = create_harness_agent(
client=OpenAIChatClient(model="gpt-4o"),
)
session = agent.create_session()
response = await agent.run("Plan a weekend trip to Seattle.", session=session)
print(response.text)
Imposta separatamente le istruzioni a livello di harness e quelle specifiche per l’agente:
agent = create_harness_agent(
client=client,
name="research-agent",
harness_instructions="Use tools deliberately and report verified results.",
agent_instructions="You are a research assistant focused on academic sources.",
max_context_window_tokens=128_000,
max_output_tokens=16_384,
)
DEFAULT_HARNESS_INSTRUCTIONS fornisce le linee guida predefinite per l'imbracatura.
harness_instructions viene visualizzato prima di agent_instructions.
Personalizzare la composizione
Disabilitare le impostazioni predefinite con opzioni quali disable_todo, disable_modedisable_file_memory, , disable_web_search, disable_tool_auto_approvale disable_compaction.
Sostituire i provider predefiniti con todo_provider o mode_providere aggiungere provider con context_providers. Le abilità richiedono l’adesione esplicita tramite skills_provider o skills_paths; anche l’accesso ai file, gli agenti in background, gli strumenti della shell e l’esecuzione in ciclo richiedono l’adesione esplicita.
Annotazioni
create_harness_agent è rilasciato. I processi in background, l'accesso ai file e l'esecuzione in ciclo rimangono sperimentali, e gli strumenti della shell provengono dal pacchetto prerelease agent-framework-tools.
Annotazioni
Un Go Harness in pacchetto non è attualmente disponibile. Creare direttamente i pacchetti corrispondenti dell'agente Go, del fornitore di contesto, della compattazione e del middleware. Per informazioni aggiornate sul supporto, vedere il repository di Agent Framework Go.
Esperienza utente del terminale di esempio
Harness non prevede un'interfaccia dell'applicazione. Il repository include applicazioni di terminale di esempio che trasmettono l'output in streaming, visualizzano le attività da svolgere e la modalità corrente, mostrano richieste di approvazione degli strumenti e forniscono comandi come /todos, /mode, e /exit.
Importante
Questi progetti console sono esempi, non componenti del framework distribuiti. Usarli come esempi eseguibili o come punto di partenza per l'esperienza del terminale.
Il punto di ingresso di esempio .NET è HarnessConsole.RunAgentAsync:
using Harness.Shared.Console;
await HarnessConsole.RunAgentAsync(
agent,
userPrompt: "Ask me anything to get started.");
Personalizzare l'esempio con osservatori, formattatori degli strumenti, gestori dei comandi e HarnessConsoleOptions. Vedere gli esempi di .NET Harness.
L'esempio Python usa il pacchetto console basato su Textual oltre agli esempi Harness:
from console import run_agent_async
await run_agent_async(agent)
Personalizzare l'esempio con osservatori, formattatori, comandi e componenti dell'interfaccia utente. Vedere gli esempi di Python Harness.
Il repository non include attualmente un esempio di terminale Go Harness in pacchetto.