File size: 1,060 Bytes
92576ce
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
"""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()