Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Un harnais d’agent est la structure du runtime qui transforme un modèle de langage en agent capable d’effectuer un travail. Il pilote les appels de modèle et d’outil, gère l’état et le contexte de conversation, applique des stratégies d’approbation et peut maintenir la progression de l’agent via une tâche en plusieurs étapes.
Agent Framework fournit un Harnais opinionné, inclus dans les piles pour la recherche, le codage, l’analyse des données et d’autres travaux de longue durée. Vous fournissez un client de conversation et personnalisez uniquement les fonctionnalités dont votre application a besoin.
Architecture
Le Harnais compose des blocs de construction d’Agent Framework existants plutôt que de définir un runtime d’agent distinct :
- Client de conversation : connecte l’agent à un modèle.
- Pipeline de conversation : ajoute l’appel de fonction, l’injection de messages, la persistance de l’historique des appels par service et la compaction facultative.
- Fournisseurs d’agent et de contexte : ajoutez des instructions, des outils, de la mémoire, de l’état todo, des modes d’exploitation et des fonctionnalités facultatives.
- Intergiciels et décorateurs : ajoutez la gestion des approbations, l’observabilité et le bouclage englobant facultatif.
- Expérience utilisateur de l’application : diffuse les réponses, affiche la progression et collecte des entrées telles que les approbations d’outils.
L’objet résultant reste un agent Agent Framework normal : un HarnessAgent qui dérive de AIAgent .NET ou d’un Agent retourné par create_harness_agent Python. Ses sessions utilisent les mêmes abstractions de fournisseur de session et de contexte que d’autres agents.
Matrice de capacité d’utilisation du harnais
| Capacité | Comportement du harnais | Conseils canoniques |
|---|---|---|
| Invocation de la fonction | Activé avec une limite d’itération configurable par requête. | Outils de fonction |
| Persistance de l’historique des appels par service | Conserve l’historique après chaque appel de modèle dans une exécution d’appel d’outils. | Sessions |
| Compactage | Activé lorsque des limites de jetons ou une stratégie personnalisée sont fournies. | Compactage |
| Suivi des tâches | Option activée par défaut. | Planification et todos |
| Modes d’agent | Les modes de planification et d’exécution sont activés par défaut. | Planification et todos |
| Mémoire de fichier et accès aux fichiers | La mémoire du fichier de session est activée par défaut ; l’accès aux fichiers partagés est opt-in. | Fournisseurs de contexte |
| Approbation de l’outil | Les approbations permanentes et les règles d’approbation automatique sont activées par défaut. | Approbation de l’outil |
| OpenTelemetry | L’observabilité de l’agent est activée par défaut. | Observabilité |
| Recherche web | Ajouté par défaut où le client de conversation sélectionné le prend en charge. | Recherche web |
| Compétences de l’agent | Activé par défaut dans .NET ; opt-in via un fournisseur ou des chemins d’accès dans Python. | Compétences de l’agent |
| Agents en arrière-plan | Délégation parallèle facultative aux agents enfants nommés. | Agents en arrière-plan |
| Exécution du shell | Composé à partir du package d’interpréteur de commandes ; la fabrique Python peut la connecter automatiquement. | Outils Shell |
| Mise en boucle | Réinvocation limitée facultative pilotée par les évaluateurs ou les prédicats. | Boucle d’agent |
La délégation d’agent en arrière-plan est distincte des réponses en arrière-plan gérées par le fournisseur. Les agents en arrière-plan exécutent des agents enfants sur des tâches déléguées ; sondage des réponses en arrière-plan ou reprise d’une demande de fournisseur à l’aide d’un jeton de continuation.
Créer un agent de harnais
Le Microsoft.Agents.AI.Harness package s’expose HarnessAgent dans l’espace Microsoft.Agents.AI de noms. Créez-en un à partir d’un IChatClient avec AsHarnessAgentou construisez HarnessAgent directement :
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);
Permet HarnessAgentOptions de définir des instructions d’exploitation au niveau du harnais, des instructions spécifiques à l’agent et des options de fonctionnalité :
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 fournit les conseils par défaut sur le harnais.
HarnessInstructions apparaît avant ChatOptions.Instructions.
Personnaliser la composition
Les fonctionnalités par défaut ont des options ciblées, notamment DisableTodoProvider, , DisableAgentModeProviderDisableFileMemory, DisableAgentSkillsProviderDisableWebSearch, , DisableToolAutoApproval, DisableOpenTelemetry, et DisableCompaction.
Ajoutez des fournisseurs de contexte personnalisés avec AIContextProviders. Optez pour l’accès aux fichiers avec FileAccessStore, la délégation en arrière-plan avec BackgroundAgentset la boucle avec LoopEvaluators.
Créer un agent de harnais
La create_harness_agent fabrique retourne une configuration complète 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)
Définissez séparément les instructions spécifiques au niveau du harnais et à l’agent :
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 fournit les conseils par défaut sur le harnais.
harness_instructions apparaît avant agent_instructions.
Personnaliser la composition
Désactivez les valeurs par défaut avec des options telles que disable_todo, , disable_mode, disable_file_memorydisable_web_search, , disable_tool_auto_approvalet disable_compaction.
Remplacez les todo_provider fournisseurs intégrés par ou mode_providerajoutez des context_providersfournisseurs par . Les compétences sont opt-in via skills_provider ou skills_paths; l’accès aux fichiers, les agents en arrière-plan, les outils d’interpréteur de commandes et le bouclage sont également opt-in.
Note
create_harness_agent est libéré. Les agents en arrière-plan, l’accès aux fichiers et la boucle restent expérimentaux et les outils d’interpréteur de commandes proviennent du package de préversion agent-framework-tools .
Note
Un Harnais Go empaqueté n’est actuellement pas disponible. Composez directement l’agent Go, le fournisseur de contexte, le compactage et les packages d’intergiciels correspondants. Consultez le référentiel Agent Framework Go pour obtenir la prise en charge actuelle.
Exemple d’expérience utilisateur de terminal
Le Harnais ne prescrit pas d’interface d’application. Le référentiel inclut des exemples d’applications terminales qui diffusent en continu la sortie, affichent des todos et le mode actuel, affichent les invites d’approbation des outils et fournissent des commandes telles que /todos, /modeet /exit.
Important
Ces projets de console sont des exemples, et non des composants d’infrastructure fournis. Utilisez-les comme exemples exécutables ou comme point de départ pour votre propre expérience de terminal.
L’exemple de point d’entrée .NET est HarnessConsole.RunAgentAsync:
using Harness.Shared.Console;
await HarnessConsole.RunAgentAsync(
agent,
userPrompt: "Ask me anything to get started.");
Personnalisez l’exemple avec des observateurs, des formateur d’outils, des gestionnaires de commandes et HarnessConsoleOptions. Consultez les exemples .NET Harness.
L’exemple Python utilise le package textuel console en regard des exemples Harness :
from console import run_agent_async
await run_agent_async(agent)
Personnalisez l’exemple avec des observateurs, des formateurs, des commandes et des composants d’interface utilisateur. Consultez les exemples Python Harness.
Le référentiel n’inclut actuellement pas d’exemple de terminal Go Harness empaqueté.