MB-ITA

Diese Seite ist passwortgeschützt.

claude-code — api.md
~/wiki/claude-code $ cat api.md

API & Anthropic SDK

Claude API nutzen, Tool Use, Streaming, Prompt Caching, Kosten.

Claude Modelle

ModellIDUse CaseContext
Opus 4.6claude-opus-4-6Komplexe Tasks, Extended Reasoning200k
Sonnet 4.6claude-sonnet-4-6Balance Speed/Qualität, Agent Loops200k
Haiku 4.5claude-haiku-4-5Schnelle, kostengünstige Operationen200k

SDK Installation

# Python pip install anthropic # TypeScript / Node.js npm install @anthropic-ai/sdk # Weitere: Go, Java, C#, Ruby, PHP verfügbar

Messages API Basics

Python
from anthropic import Anthropic client = Anthropic(api_key="sk-...") message = client.messages.create( model="claude-opus-4-6", max_tokens=1024, system="You are a helpful assistant", messages=[ {"role": "user", "content": "Explain quantum computing"} ] ) print(message.content[0].text)

Streaming

with client.messages.stream( model="claude-opus-4-6", max_tokens=1024, messages=[{"role": "user", "content": "Write a poem"}] ) as stream: for text in stream.text_stream: print(text, end="", flush=True)

Tool Use (Function Calling)

tools = [ { "name": "get_weather", "description": "Get weather for a location", "input_schema": { "type": "object", "properties": { "location": {"type": "string"}, "unit": {"enum": ["celsius", "fahrenheit"]} }, "required": ["location"] } } ] response = client.messages.create( model="claude-opus-4-6", max_tokens=1024, tools=tools, messages=[{"role": "user", "content": "Weather in Paris?"}] ) # Tool Loop: Check for tool_use blocks if response.stop_reason == "tool_use": # Extract tool_use block, execute, send result back pass

Extended Thinking

message = client.messages.create( model="claude-opus-4-6", max_tokens=16000, thinking={ "type": "enabled", "budget_tokens": 10000 }, messages=[{"role": "user", "content": "Solve complex problem..."}] ) # Thinking + Antwort extrahieren for block in message.content: if block.type == "thinking": print(f"Reasoning: {block.thinking}") elif block.type == "text": print(f"Answer: {block.text}")

Prompt Caching

Für wiederholte Requests mit großem Kontext — spart Kosten und Latenz:

message = client.messages.create( model="claude-opus-4-6", max_tokens=1024, system=[ {"type": "text", "text": "You are a helpful assistant"}, { "type": "text", "text": large_document_content, "cache_control": {"type": "ephemeral"} # 5 min gültig } ], messages=[{"role": "user", "content": "Summarize the document"}] )

Vision (Bilder analysieren)

message = client.messages.create( model="claude-opus-4-6", max_tokens=1024, messages=[{ "role": "user", "content": [ {"type": "text", "text": "What's in this image?"}, { "type": "image", "source": { "type": "base64", "media_type": "image/png", "data": base64_image_data } } ] }] )

Token Counting & Batch

# Token zählen vor Abfrage token_count = client.messages.count_tokens( model="claude-opus-4-6", messages=[{"role": "user", "content": "How many tokens?"}] ) print(f"Input tokens: {token_count.input_tokens}") # Batch Processing (für große Mengen) batch = client.messages.create_batch( requests=[ {"custom_id": "q-1", "params": {"model": "claude-opus-4-6", ...}}, {"custom_id": "q-2", "params": {"model": "claude-opus-4-6", ...}}, ] )