CtrlK
BlogDocsLog inGet started
Tessl Logo

tessl/pypi-anthropic

The official Python library for the anthropic API

Pending

Quality

Pending

Does it follow best practices?

Impact

Pending

No eval scenarios have been run

Overview
Eval results
Files

streaming.mddocs/quick-reference/

Streaming API - Quick Reference

Compact API signatures for streaming. For examples and patterns, see Streaming API Reference.

stream()

def stream(
    self,
    *,
    model: str,
    messages: list[MessageParam],
    max_tokens: int,
    **kwargs  # All messages.create() parameters supported
) -> MessageStreamManager

Async: async def stream(...) -> AsyncMessageStreamManager

MessageStreamManager

class MessageStreamManager:
    def __enter__(self) -> MessageStream
    def __exit__(self, exc_type, exc_val, exc_tb) -> None

MessageStream

class MessageStream:
    def __iter__(self) -> Iterator[MessageStreamEvent]

    @property
    def text_stream(self) -> Iterator[str]:
        """Iterate over text deltas only"""
        ...

    @property
    def current_message_snapshot(self) -> Message:
        """Current accumulated message during streaming"""
        ...

    def get_final_message(self) -> Message:
        """Complete message after stream ends"""
        ...

    def get_final_text(self) -> str:
        """Accumulated text after stream ends"""
        ...

Async: AsyncMessageStream with async versions of all methods

Stream Events

MessageStreamEvent = Union[
    MessageStartEvent,       # Stream started
    MessageDeltaEvent,       # Usage/stop_reason updated
    MessageStopEvent,        # Stream completed
    ContentBlockStartEvent,  # New content block
    ContentBlockDeltaEvent,  # Content delta
    ContentBlockStopEvent,   # Block completed
]

class MessageStartEvent(BaseModel):
    type: Literal["message_start"]
    message: Message  # Initial skeleton

class ContentBlockDeltaEvent(BaseModel):
    type: Literal["content_block_delta"]
    index: int
    delta: ContentBlockDelta  # TextDelta | InputJSONDelta

class TextDelta(BaseModel):
    type: Literal["text_delta"]
    text: str  # Incremental text to append

class MessageDeltaEvent(BaseModel):
    type: Literal["message_delta"]
    delta: MessageDelta  # stop_reason, stop_sequence
    usage: MessageDeltaUsage  # output_tokens

class MessageStopEvent(BaseModel):
    type: Literal["message_stop"]

Common Patterns

# Text streaming
with client.messages.stream(...) as stream:
    for text in stream.text_stream:
        print(text, end="", flush=True)

# Event processing
with client.messages.stream(...) as stream:
    for event in stream:
        if event.type == "content_block_delta":
            if event.delta.type == "text_delta":
                print(event.delta.text, end="")

# Get final message
with client.messages.stream(...) as stream:
    for text in stream.text_stream:
        print(text, end="")
message = stream.get_final_message()

See Also

Install with Tessl CLI

npx tessl i tessl/pypi-anthropic

docs

index.md

tile.json