AIが道具を使う仕組みを自作
How to Design an OpenHarness Style Agent Runtime with Tools, Memory, Permissions, Skills, and Multi-Agent Coordination

このチュートリアルでは、AIが道具を使ったり、記憶したり、他のAIと協力する仕組みを、実際にコードを書きながら深く理解できます。AIの内部動作を知る上で非常に役立ちます。
このチュートリアルでは、実用的なエージェントハーネスがどのように機能するかをよりよく理解するために、OpenHarnessをゼロから構築します。ツール利用、型付きツールスキーマ、権限、ライフサイクルフック、メモリ、スキル、コンテキスト圧縮、リトライロジック、コスト追跡、マルチエージェント連携など、エージェントシステムを便利にする主要な構成要素を再現します。エージェントフレームワークをブラックボックスとして扱うのではなく、完全な制御フローを公開し、ハーネスがユーザーのタスクを受け取り、モデルが次のアクションを決定し、ツール呼び出しを検証して実行し、観測結果を返し、タスクが完了するまでループを続ける様子を観察します。また、APIキーや複雑なインフラストラクチャを必要とせずにアーキテクチャを実験できるように、実装は実行可能な状態に保ちます。OpenHarnessコアのセットアップ コードをコピー コピー済み 別のブラウザを使用してください from __future__ import annotations import asyncio import contextlib import dataclasses import fnmatch import io import json import os import re import tempfile import textwrap import time import traceback import types import typing import urllib.error import urllib.request from dataclasses import dataclass, field from enum import Enum MISSING = dataclasses.MISSING UnionType = getattr(types, "UnionType", None) def run_async(coro): """Run a coroutine to completion from sync code, even inside a live loop.""" try: loop = asyncio.get_running_loop() except RuntimeError: loop = None if loop is not None and loop.is_running(): try: import nest_asyncio nest_asyncio.apply() return loop.run_until_complete(coro) except Exception: import threading box: dict = {} def _runner(): new_loop = asyncio.new_event_loop() try: box["value"] = new_loop.run_until_complete(coro) finally: new_loop.close() t = threading.Thread(target=_runner) t.start() t.join() return box["value"] return asyncio.run(coro) BANNER = "═" * 78 def banner(title: str) -> None: print("\n" + BANNER) print(f" {title}") print(BANNER) def explain(title: str, body: str) -> None: banner(title) print(tex
この記事について質問
記事の内容に答えます。記事外のことは都度ウェブで調べます。