"""Anthropic Claude client - messages, tool use, prompt caching.""" import os import requests BASE = os.getenv("ANTHROPIC_API_BASE", "https://api.anthropic.com/v1") KEY = os.getenv("ANTHROPIC_API_KEY") def _h(): if not KEY: raise RuntimeError("ANTHROPIC_API_KEY not set") return {"x-api-key": KEY, "anthropic-version": "2023-06-01"} def messages(prompt, model="claude-opus", system=None, tools=None, max_tokens=4096, **kwargs): body = {"model": model, "max_tokens": max_tokens, "messages": [{"role": "user", "content": prompt}]} if system: body["system"] = system if tools: body["tools"] = tools body.update(kwargs) return requests.post(f"{BASE}/messages", headers=_h(), json=body, timeout=120).json() def tool_result_reply(tool_results, model="claude-opus", max_tokens=4096): """Continue a tool-use loop with tool results.""" body = {"model": model, "max_tokens": max_tokens, "messages": tool_results} return requests.post(f"{BASE}/messages", headers=_h(), json=body, timeout=120).json()