Skip to content

About

No description, website, or topics provided.

Resources

Contributing

Security policy

Stars

4.0k stars

Watchers

182 watching

Forks

Latest commit

 

History

1,561 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Claude SDK for Python

PyPI version

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.

About

No description, website, or topics provided.

Resources

Contributing

Security policy

Stars

4.0k stars

Watchers

182 watching

Forks

Releases

Packages

Used by

Contributors

Languages