运行框架会为聊天客户端提供代理完成长时间、多步骤任务所需的支撑能力,包括规划/执行模式、用于据此规划的待办事项列表、上下文压缩、文件记忆、文件访问,以及“不再询问”的工具授权。 你不必自己组装这些碎片,而是创建一个线束代理,并将它们从箱子里拿出来。
通过 IChatClient 扩展方法,从任何 AsHarnessAgent 创建 harness 代理。 由于该框架会在多个步骤中以交互方式逐步完成任务,因此通常需要通过对话循环来驱动它:保留一个 AgentSession,以便框架状态(计划、待办事项和历史记录)在各轮对话之间持续存在;读取用户的下一条指令;并以流式方式输出代理生成的内容。
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();
}
该框架会在整个对话过程中为你处理规划、待办事项跟踪和历史记录持久化。 有关功能齐全的控制台(包含工具审批提示、待办事项/模式呈现和斜杠命令),请参阅 示例终端 UX。
Tip
有关可完整运行的应用程序,请参阅 .NET harness 示例。
使用 create_harness_agent 工厂创建 Harness 代理程序。 由于该框架会在多个步骤中以交互方式处理任务,因此通常需要通过会话循环来驱动它:保留一个会话,以便让框架状态(计划、待办事项和历史记录)在多轮之间持续保留,读取用户的下一条指令,并将代理生成的输出流式传回。
from agent_framework import create_harness_agent
from agent_framework.openai import OpenAIChatClient
agent = create_harness_agent(
OpenAIChatClient(model="gpt-4o"),
)
# A session carries the harness state (plan, todos, history) across turns.
session = agent.create_session()
print("Harness agent ready. Type 'exit' to quit.")
while True:
user_input = input("> ")
if user_input.strip().lower() in {"exit", "quit"}:
break
# Stream this turn's output as the harness plans and works through the request.
async for chunk in agent.run(user_input, session=session, stream=True):
if chunk.text:
print(chunk.text, end="", flush=True)
print()
该框架会在整个对话过程中为你处理规划、待办事项跟踪和历史记录持久化。 有关功能齐全的控制台(包含工具审批提示、待办事项/模式呈现和斜杠命令),请参阅 示例终端 UX。
Tip
有关可运行的完整应用程序,请参阅Python工具示例。
注释
针对代理 harness 的 Go 语言支持即将推出。 有关最新状态,请参阅 Agent Framework Go 存储库 。
后续步骤
更深入: