Recipes
エージェント Read-URL ツール
LLM エージェントループにそのまま組み込める「この URL を読む」ツール
エージェントに、任意の URL をクリーンな Markdown に変換する単一のツールを与えましょう。エージェントはページを調査する必要があるたびにこのツールを呼び出します —— Thunderbit が JS、ボット対策、コンテンツのクリーニングを処理するため、エージェントのコンテキストはシグナル密度の高い状態を保てます。
ツール定義(Python)
import httpx
API = "https://openapi.thunderbit.com/openapi/v1"
H = {"Authorization": "Bearer YOUR_API_KEY"}
def read_url(url: str) -> str:
"""Fetch a URL and return clean Markdown.
Use for any web research task: docs, articles, search results, product pages.
Returns the page as Markdown with metadata stripped.
"""
resp = httpx.post(f"{API}/distill",
headers=H,
json={"url": url, "renderMode": "basic"},
timeout=60.0)
resp.raise_for_status()
return resp.json()["data"]["markdown"]OpenAI function-calling の例
tools = [{
"type": "function",
"function": {
"name": "read_url",
"description": "Fetch a URL and return clean Markdown for the agent to read.",
"parameters": {
"type": "object",
"properties": {
"url": {"type": "string", "description": "The URL to fetch"}
},
"required": ["url"],
},
},
}]モデルが read_url を呼び出したら、上記の関数にディスパッチし、結果を tool message としてモデルに返します。
ヒント
- エージェント用には
renderModeをbasicのままにしておくとよいでしょう —— コストとカバレッジのバランスがちょうど良いデフォルトです - 返される Markdown の長さに上限(例:8k トークン)を設けてからモデルに渡しましょう
- 大量調査には
/batch/distillが向いています —— RAG ナレッジベース を参照
関連
このレシピは現在 LangChain / LlamaIndex / CrewAI バリアントを追加して拡張中です —— 近日中にご確認ください。