README.md
Claude SDK for Python
The Claude SDK for Python provides access to the Claude API from Python applications.
Documentation
Tool helpers (@beta_tool, the tool runner and ToolError) are documented in tools.md. The browser and computer toolset classes have their own guides, browser-toolset.md and computer-toolset.md.
Full documentation is available at platform.claude.com/docs/en/api/sdks/python.
Installation
pip install anthropic
Upgrading from a 0.x release? See the v1 migration guide.
Getting started
import os
from anthropic import Anthropic
client = Anthropic(
api_key=os.environ.get("ANTHROPIC_API_KEY"), # This is the default and can be omitted
)
message = client.messages.create(
max_tokens=1024,
messages=[
{
"role": "user",
"content": "Hello, Claude",
}
],
model="claude-opus-5-5",
)
print(message.content)
OpenTelemetry
The SDK reports each API call as an OpenTelemetry span when your application has registered a tracer provider.
It depends on opentelemetry-api, a required dependency, and never on an OpenTelemetry SDK.
# a provider other than the registered one
client = Anthropic(open_telemetry={"tracer_provider": tracer_provider})
# no spans
quiet = Anthropic(open_telemetry=False)
# adds prompts and completions
verbose = Anthropic(open_telemetry={"traces": {"content_mode": "content"}})
# keeps the content of one span within this size
bounded = Anthropic(
open_telemetry={"traces": {"content_mode": "content", "max_content_bytes": 65_536}}
)
# sends no trace context headers, for an application whose HTTP client instrumentation already sends them, so that
# a request does not carry them twice
unpropagated = Anthropic(open_telemetry={"propagation": False})
# sets gen_ai.conversation.id on the spans of one conversation's requests. with_options replaces the whole option,
# so start from client.open_telemetry, which has the client's
conversation = client.with_options(
open_telemetry={**client.open_telemetry, "conversation_id": conversation_id}
)
conversation.messages.create(...)
A client that is given no open_telemetry option reads these environment variables when it is constructed: ANTHROPIC_OPEN_TELEMETRY=false turns its spans off, ANTHROPIC_OPEN_TELEMETRY_TRACES_CONTENT_MODE=content adds prompts and completions, ANTHROPIC_OPEN_TELEMETRY_TRACES_MAX_CONTENT_BYTES sets max_content_bytes, and ANTHROPIC_OPEN_TELEMETRY_PROPAGATION=false sends no trace context headers.
A client that is given the option, even {} or a tracer_provider alone, reads none of them: what the option leaves out has its default (spans on, trace context headers sent, no prompts or completions, 750,000 bytes).
A copy made with with_options or copy keeps its client's option unless it is given its own.
Requirements
Python 3.10+
Contributing
See CONTRIBUTING.md.
License
This project is licensed under the MIT License. See the LICENSE file for details.
Rendered from the public repository anthropics/anthropic-sdk-python on GitHub; content belongs to its authors. Cached for up to an hour.