ハーネスは、エージェントが長いマルチステップ タスク (計画/実行モード、計画対象の todo リスト、コンテキスト圧縮、ファイル メモリ、ファイル アクセス、および再要求しないツールの承認) を実行するために必要なスキャフォールディングを使用してチャット クライアントをラップします。 これらのパーツを自分で組み立てる代わりに、ハーネス エージェントを作成すれば、すぐに使える状態で利用できます。
IChatClient拡張メソッドを使用して、任意のAsHarnessAgentからハーネス エージェントを作成します。 ハーネスは多くのステップにわたって対話的にタスクを処理するため、通常は会話ループでこれを動かします。つまり、ハーネスの状態(プラン、ToDo、履歴)がターンをまたいで維持されるように 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();
}
ハーネスは、会話全体にわたって計画、Todo 追跡、履歴の永続化を処理します。 ツール承認プロンプト、todo/mode レンダリング、スラッシュ コマンドを備えたフル機能のコンソールについては、 サンプルターミナル UX を参照してください。
Tip
完全に実行可能なアプリケーションについては、.NETハーネスのサンプルを参照してください。
create_harness_agent ファクトリでハーネスエージェントを作成します。 ハーネスは多数のステップにわたってタスクを対話的に進めるため、通常は会話ループ内で駆動します。セッションを維持して、ハーネスの状態(プラン、ToDo、履歴)がターンをまたいで保持されるようにし、ユーザーの次の指示を読み取り、生成されるエージェントの出力をストリーミングします。
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()
ハーネスは、会話全体にわたって計画、Todo 追跡、履歴の永続化を処理します。 ツール承認プロンプト、todo/mode レンダリング、スラッシュ コマンドを備えたフル機能のコンソールについては、 サンプルターミナル UX を参照してください。
Tip
完全に実行可能なアプリケーションについては、Pythonハーネスのサンプルを参照してください。
Note
エージェント ハーネスの Go サポートは近日公開予定です。 最新の状態については、 Agent Framework Go リポジトリ を参照してください。
次のステップ
より深く進む:
- エージェント ハーネス — 圧縮、ループ、シェル、サンプル ターミナル UX
- エージェント スキル — ファイル システムからスキルを段階的に読み込む