anthropic-python
Anthropic Python SDK for Claude API integration. Covers messages API, streaming, tool use, vision, error handling, and best practices. Use when building Python applications that call the Claude API. USE WHEN: user mentions "anthropic", "claude api", "anthropic sdk", "anthropic.Anthropic()", "client.messages.create", "claude-opus", "claude-sonnet", "tool_use", "streaming claude", "claude python" DO NOT USE FOR: OpenAI API, other LLM providers, JavaScript/TypeScript Anthropic SDK
What this skill does
# Anthropic Python SDK
## Installation
```bash
pip install anthropic>=0.25.0
```
## Basic Usage
```python
import anthropic
client = anthropic.Anthropic() # reads ANTHROPIC_API_KEY from env
message = client.messages.create(
model="claude-opus-4-6",
max_tokens=1024,
messages=[
{"role": "user", "content": "Analyze this tag list and identify patterns."}
]
)
print(message.content[0].text)
```
## Model Selection
| Model | ID | Best For |
|-------|-----|---------|
| Claude Opus 4.6 | `claude-opus-4-6` | Complex analysis, expert reasoning |
| Claude Sonnet 4.6 | `claude-sonnet-4-6` | Balanced performance/cost |
| Claude Haiku 4.5 | `claude-haiku-4-5-20251001` | Fast, lightweight tasks |
## System Prompts
```python
message = client.messages.create(
model="claude-sonnet-4-6",
max_tokens=2048,
system="You are an industrial automation expert specializing in DCS engineering.",
messages=[
{"role": "user", "content": "Review this motor tag list for ISA-5.1 compliance."}
]
)
```
## Multi-Turn Conversations
```python
def chat(client: anthropic.Anthropic, history: list, user_message: str) -> tuple[str, list]:
history.append({"role": "user", "content": user_message})
response = client.messages.create(
model="claude-sonnet-4-6",
max_tokens=1024,
messages=history,
)
assistant_text = response.content[0].text
history.append({"role": "assistant", "content": assistant_text})
return assistant_text, history
```
## Streaming
```python
with client.messages.stream(
model="claude-sonnet-4-6",
max_tokens=1024,
messages=[{"role": "user", "content": "Generate a motor PRT template."}],
) as stream:
for text in stream.text_stream:
print(text, end="", flush=True)
# Or get final message after stream
with client.messages.stream(...) as stream:
message = stream.get_final_message()
```
## Tool Use (Function Calling)
```python
tools = [
{
"name": "validate_tag",
"description": "Validate an ISA-5.1 tag name and return structured info",
"input_schema": {
"type": "object",
"properties": {
"tag": {"type": "string", "description": "The tag name to validate"},
"area": {"type": "integer", "description": "Expected area code"},
},
"required": ["tag"],
},
}
]
response = client.messages.create(
model="claude-sonnet-4-6",
max_tokens=1024,
tools=tools,
messages=[{"role": "user", "content": "Validate tag 11301.FIC.056A for area 11301"}],
)
# Process tool calls
if response.stop_reason == "tool_use":
for block in response.content:
if block.type == "tool_use":
tool_name = block.name
tool_input = block.input
result = handle_tool(tool_name, tool_input)
```
## Vision (Image Input)
```python
import base64
from pathlib import Path
def encode_image(path: str) -> str:
return base64.standard_b64encode(Path(path).read_bytes()).decode("utf-8")
response = client.messages.create(
model="claude-opus-4-6",
max_tokens=1024,
messages=[
{
"role": "user",
"content": [
{
"type": "image",
"source": {
"type": "base64",
"media_type": "image/png",
"data": encode_image("p&id_diagram.png"),
},
},
{"type": "text", "text": "Identify all motor symbols and extract their tag names."},
],
}
],
)
```
## Error Handling
```python
from anthropic import APIError, APIConnectionError, RateLimitError, APIStatusError
def safe_claude_call(client: anthropic.Anthropic, prompt: str) -> str | None:
try:
message = client.messages.create(
model="claude-sonnet-4-6",
max_tokens=1024,
messages=[{"role": "user", "content": prompt}],
)
return message.content[0].text
except RateLimitError:
# Exponential backoff
import time
time.sleep(60)
return None
except APIConnectionError as e:
print(f"Connection error: {e}")
return None
except APIStatusError as e:
print(f"API error {e.status_code}: {e.message}")
return None
```
## Async Client
```python
import asyncio
import anthropic
async def analyze_batch(prompts: list[str]) -> list[str]:
client = anthropic.AsyncAnthropic()
async def call(prompt: str) -> str:
msg = await client.messages.create(
model="claude-haiku-4-5-20251001",
max_tokens=512,
messages=[{"role": "user", "content": prompt}],
)
return msg.content[0].text
return await asyncio.gather(*[call(p) for p in prompts])
```
## Usage Tracking
```python
response = client.messages.create(...)
print(response.usage.input_tokens) # tokens sent
print(response.usage.output_tokens) # tokens received
# Total cost = input_tokens * price_in + output_tokens * price_out
```
## Integration with Streamlit
```python
import streamlit as st
import anthropic
@st.cache_resource
def get_anthropic_client() -> anthropic.Anthropic:
return anthropic.Anthropic(api_key=st.secrets["anthropic"]["api_key"])
def stream_to_streamlit(prompt: str) -> str:
client = get_anthropic_client()
response_placeholder = st.empty()
full_text = ""
with client.messages.stream(
model="claude-sonnet-4-6",
max_tokens=2048,
messages=[{"role": "user", "content": prompt}],
) as stream:
for text in stream.text_stream:
full_text += text
response_placeholder.markdown(full_text + "▌")
response_placeholder.markdown(full_text)
return full_text
```
## Best Practices
| Practice | Why |
|----------|-----|
| Use `@st.cache_resource` for client | Avoid creating new client per request |
| Store API key in secrets.toml / env | Never hardcode keys |
| Set `max_tokens` explicitly | Avoid runaway costs |
| Use Haiku for classification/routing | 10x cheaper than Sonnet |
| Use Opus for complex analysis | Best reasoning quality |
| Stream long responses | Better UX, fail faster |
| Handle `RateLimitError` with backoff | API has rate limits |
| Track usage per request | Cost monitoring |
Related in Backend & APIs
jfrog
IncludedInteract with the JFrog Platform via the JFrog CLI and REST/GraphQL APIs. Use this skill when the user wants to manage Artifactory repositories, upload or download artifacts, manage builds, configure permissions, manage users and groups, work with access tokens, configure JFrog CLI servers, search artifacts, manage properties, set up replication, manage JFrog Projects, run security audits or scans, look up CVE details, query exposures scan results from JFrog Advanced Security, manage release bundles and lifecycle operations, aggregate or export platform data, or perform any JFrog Platform administration task. Also use when the user mentions jf, jfrog, artifactory, xray, distribution, evidence, apptrust, onemodel, graphql, workers, mission control, curation, advanced security, exposures, or any JFrog product name.
cupynumeric-migration-readiness
IncludedPre-migration readiness assessor for porting NumPy to cuPyNumeric. Use BEFORE substantial porting work begins when the user asks whether code will scale on GPU, whether they should migrate to cuPyNumeric, which NumPy patterns transfer cleanly, what must be refactored before porting, or mentions pre-port assessment, scaling analysis, or refactor planning. Inspect the user's source code, look up NumPy usage, cross-reference the cuPyNumeric API support manifest, and distinguish distributed-scaling-friendly patterns from blockers such as unsupported APIs, scalar synchronization, host round-trips, Python/object-heavy control flow, shape/data-dependent branching, and in-place mutation hazards. Produce a verdict of READY, LIGHT REFACTOR, SIGNIFICANT REFACTOR, or NOT RECOMMENDED, with concrete refactor pointers.
alibabacloud-data-agent-skill
IncludedInvoke Alibaba Cloud Apsara Data Agent for Analytics via CLI to perform natural language-driven data analysis on enterprise databases. Data Agent for Analytics is an intelligent data analysis agent developed by Alibaba Cloud Database team for enterprise users. It automatically completes requirement analysis, data understanding, analysis insights, and report generation based on natural language descriptions. This tool supports: discovering data resources (instances/databases/tables) managed in DMS, initiating query or deep analysis sessions, real-time progress tracking, and retrieving analysis conclusions and generated reports. Use this Skill when users need to query databases, analyze data trends, generate data reports, ask questions in natural language, or mention "Data Agent", "data analysis", "database query", "SQL analysis", "data insights".
token-optimizer
IncludedReduce OpenClaw token usage and API costs through smart model routing, heartbeat optimization, budget tracking, and native 2026.2.15 features (session pruning, bootstrap size limits, cache TTL alignment). Use when token costs are high, API rate limits are being hit, or hosting multiple agents at scale. The 4 executable scripts (context_optimizer, model_router, heartbeat_optimizer, token_tracker) are local-only — no network requests, no subprocess calls, no system modifications. Reference files (PROVIDERS.md, config-patches.json) document optional multi-provider strategies that require external API keys and network access if you choose to use them. See SECURITY.md for full breakdown.
resend-cli
IncludedUse this skill when the task is specifically about operating Resend from an AI agent, terminal session, or CI job via the official resend CLI: installing/authenticating the CLI, sending/listing/updating/cancelling emails, batch sends, domains and DNS, webhooks and local listeners, inbound receiving, contacts, topics, segments, broadcasts, templates, API keys, profiles, or debugging Resend CLI/API failures. Trigger on mentions of Resend CLI, `resend`, `resend doctor`, `resend emails send`, `resend domains`, `resend webhooks listen`, `resend emails receiving`, or agent-friendly terminal automation.
alibabacloud-odps-maxframe-coding
IncludedUse this skill for MaxFrame SDK development and documentation navigation on Alibaba Cloud MaxCompute (ODPS). Helps answer MaxFrame API, concept, official example, and supported pandas API questions; create data processing programs; read/write MaxCompute tables; debug jobs (remote or local); and build custom DPE runtime images. Trigger when users mention MaxFrame, MaxCompute with MaxFrame, ODPS table processing, DPE runtime, MaxFrame docs/examples, DataFrame/Tensor operations, or GPU runtime setup. Works for both English and Chinese queries about Alibaba Cloud data processing with MaxFrame.