Skip to content

Upgrading anthropic 0.26 to 0.27

Breaking0.26.1 → 0.27.0Breaking3New2Fixed1Other9

BreakingUpgrade verdict

3 breaking changes.

  • The way streamed message events are delivered has changed shape, so code that reads the stream may need updating.
  • Streamed tool events now come through the new event iterator, so code consuming them may need updating.
  • Stream event type names have been renamed with a Raw prefix, so code referring to the old names must be updated.
3 items need code or config changes
Breaking3
Refactors messages streaming to an event iterator structure.
Refactors tools streaming to an event iterator structure.
Adds a Raw prefix to API stream event type names.

Generated by DepDelta from published Python source. Not mixed with prose notes.

  • added: export ContentBlockStopEvent
  • added: export InputJsonEvent
  • added: export MessageStopEvent
  • added: export MessageStreamEvent
  • added: export TextEvent
  • removed: export AsyncToolsBetaMessageStream
  • removed: export AsyncToolsBetaMessageStreamManager
  • removed: export AsyncToolsBetaMessageStreamT
  • removed: export ToolsBetaMessageStream
  • removed: export ToolsBetaMessageStreamManager
  • removed: export ToolsBetaMessageStreamT
  • removed: export AsyncBeta
  • removed: export AsyncBetaWithRawResponse
  • removed: export AsyncBetaWithStreamingResponse
  • removed: export Beta
  • removed: export BetaWithRawResponse
  • removed: export BetaWithStreamingResponse
  • removed: export AsyncBeta
  • removed: export AsyncBetaWithRawResponse
  • removed: export AsyncBetaWithStreamingResponse
  • removed: export AsyncTools
  • removed: export AsyncToolsWithRawResponse
  • removed: export AsyncToolsWithStreamingResponse
  • removed: export Beta
  • removed: export BetaWithRawResponse
  • removed: export BetaWithStreamingResponse
  • removed: export Tools
  • removed: export ToolsWithRawResponse
  • removed: export ToolsWithStreamingResponse
  • removed: class AsyncBeta(AsyncAPIResource)
  • removed: class Beta(SyncAPIResource)
  • removed: property AsyncBeta.tools -> AsyncTools
  • removed: property AsyncBeta.with_raw_response -> AsyncBetaWithRawResponse
  • removed: property AsyncBeta.with_streaming_response -> AsyncBetaWithStreamingResponse
  • removed: property Beta.tools -> Tools
  • removed: property Beta.with_raw_response -> BetaWithRawResponse
  • removed: property Beta.with_streaming_response -> BetaWithStreamingResponse
  • removed: export AsyncMessages
  • removed: export AsyncMessagesWithRawResponse
  • removed: export AsyncMessagesWithStreamingResponse
  • removed: export AsyncTools
  • removed: export AsyncToolsWithRawResponse
  • removed: export AsyncToolsWithStreamingResponse
  • removed: export Messages
  • removed: export MessagesWithRawResponse
  • removed: export MessagesWithStreamingResponse
  • removed: export Tools
  • removed: export ToolsWithRawResponse
  • removed: export ToolsWithStreamingResponse
  • removed: async method AsyncMessages.create(*, max_tokens: int, messages: Iterable[ToolsBetaMessageParam], model: str, metadata: message_create_params.Metadata | NotGiven=…, stop_sequences: List[str] | NotGiven=…, stream: Literal[False] | NotGiven=…, system: str | NotGiven=…, temperature: float | NotGiven=…, tool_choice: message_create_params.ToolChoice | NotGiven=…, tools: Iterable[ToolParam] | NotGiven=……
  • removed: class AsyncMessages(AsyncAPIResource)
  • removed: class Messages(SyncAPIResource)
  • removed: method AsyncMessages.stream(*, max_tokens: int, messages: Iterable[ToolsBetaMessageParam], model: str, metadata: message_create_params.Metadata | NotGiven=…, stop_sequences: List[str] | NotGiven=…, system: str | NotGiven=…, temperature: float | NotGiven=…, tool_choice: message_create_params.ToolChoice | NotGiven=…, tools: Iterable[ToolParam] | NotGiven=…, top_k: int | NotGiven=…, top_p: float | N…
  • removed: method Messages.create(*, max_tokens: int, messages: Iterable[ToolsBetaMessageParam], model: str, metadata: message_create_params.Metadata | NotGiven=…, stop_sequences: List[str] | NotGiven=…, stream: Literal[False] | NotGiven=…, system: str | NotGiven=…, temperature: float | NotGiven=…, tool_choice: message_create_params.ToolChoice | NotGiven=…, tools: Iterable[ToolParam] | NotGiven=…, top_k: in…
  • removed: method Messages.stream(*, max_tokens: int, messages: Iterable[ToolsBetaMessageParam], model: str, metadata: message_create_params.Metadata | NotGiven=…, stop_sequences: List[str] | NotGiven=…, system: str | NotGiven=…, temperature: float | NotGiven=…, tool_choice: message_create_params.ToolChoice | NotGiven=…, tools: Iterable[ToolParam] | NotGiven=…, top_k: int | NotGiven=…, top_p: float | NotGiv…
  • removed: property AsyncMessages.with_raw_response -> AsyncMessagesWithRawResponse
  • removed: property AsyncMessages.with_streaming_response -> AsyncMessagesWithStreamingResponse
  • removed: property Messages.with_raw_response -> MessagesWithRawResponse
  • removed: property Messages.with_streaming_response -> MessagesWithStreamingResponse
  • removed: class AsyncTools(AsyncAPIResource)
  • removed: class Tools(SyncAPIResource)
  • removed: property AsyncTools.messages -> AsyncMessages
  • removed: property AsyncTools.with_raw_response -> AsyncToolsWithRawResponse
  • removed: property AsyncTools.with_streaming_response -> AsyncToolsWithStreamingResponse
  • removed: property Tools.messages -> Messages
  • removed: property Tools.with_raw_response -> ToolsWithRawResponse
  • removed: property Tools.with_streaming_response -> ToolsWithStreamingResponse
  • added: export InputJsonDelta
  • added: export RawContentBlockDeltaEvent
  • added: export RawContentBlockStartEvent
  • added: export RawContentBlockStopEvent
  • added: export RawMessageDeltaEvent
  • added: export RawMessageStartEvent
  • added: export RawMessageStopEvent
  • added: export RawMessageStreamEvent
  • added: export ToolParam
  • added: export ToolResultBlockParam
  • added: export ToolUseBlock
  • added: export ToolUseBlockParam
  • removed: export InputJsonDelta
  • removed: export MessageCreateParams
  • removed: export ToolParam
  • removed: export ToolResultBlockParam
  • removed: export ToolUseBlock
  • removed: export ToolUseBlockParam
  • removed: export ToolsBetaContentBlock
  • removed: export ToolsBetaContentBlockDeltaEvent
  • removed: export ToolsBetaContentBlockStartEvent
  • removed: export ToolsBetaMessage
  • removed: export ToolsBetaMessageParam
  • removed: export ToolsBetaMessageStreamEvent
  • removed: class InputJsonDelta(BaseModel)
  • removed: field InputJsonDelta.partial_json: str
  • removed: field InputJsonDelta.type: Literal['input_json_delta']
  • removed: class MessageCreateParamsBase(TypedDict)
  • removed: class MessageCreateParamsNonStreaming(MessageCreateParamsBase)
  • removed: class MessageCreateParamsStreaming(MessageCreateParamsBase)
  • removed: class Metadata(TypedDict)
  • removed: class ToolChoiceToolChoiceAny(TypedDict)
  • removed: class ToolChoiceToolChoiceAuto(TypedDict)
  • removed: class ToolChoiceToolChoiceTool(TypedDict)
  • removed: field MessageCreateParamsBase.max_tokens: Required[int]
  • removed: field MessageCreateParamsBase.messages: Required[Iterable[ToolsBetaMessageParam]]
  • removed: field MessageCreateParamsBase.metadata: Metadata
  • removed: field MessageCreateParamsBase.model: Required[str]
  • removed: field MessageCreateParamsBase.stop_sequences: List[str]
  • removed: field MessageCreateParamsBase.system: str
  • removed: field MessageCreateParamsBase.temperature: float
  • removed: field MessageCreateParamsBase.tool_choice: ToolChoice
  • removed: field MessageCreateParamsBase.tools: Iterable[ToolParam]
  • removed: field MessageCreateParamsBase.top_k: int
  • removed: field MessageCreateParamsBase.top_p: float
  • removed: field MessageCreateParamsNonStreaming.stream: Literal[False]
  • removed: field MessageCreateParamsStreaming.stream: Required[Literal[True]]
  • removed: field Metadata.user_id: Optional[str]
  • removed: field ToolChoiceToolChoiceAny.type: Required[Literal['any']]
  • removed: field ToolChoiceToolChoiceAuto.type: Required[Literal['auto']]
  • removed: field ToolChoiceToolChoiceTool.name: Required[str]
  • removed: field ToolChoiceToolChoiceTool.type: Required[Literal['tool']]
  • removed: variable ToolChoice
  • removed: class ToolParam(TypedDict)
  • removed: field ToolParam.description: str
  • removed: field ToolParam.input_schema: Required[InputSchema]
  • removed: field ToolParam.name: Required[str]
  • removed: variable InputSchema
  • removed: class ToolResultBlockParam(TypedDict)
  • removed: field ToolResultBlockParam.content: Iterable[Content]
  • removed: field ToolResultBlockParam.is_error: bool
  • removed: field ToolResultBlockParam.tool_use_id: Required[str]
  • removed: field ToolResultBlockParam.type: Required[Literal['tool_result']]
  • removed: variable Content
  • removed: class ToolUseBlock(BaseModel)
  • removed: field ToolUseBlock.id: str
  • removed: field ToolUseBlock.input: object
  • removed: field ToolUseBlock.name: str
  • removed: field ToolUseBlock.type: Literal['tool_use']
  • removed: class ToolUseBlockParam(TypedDict)
  • removed: field ToolUseBlockParam.id: Required[str]
  • removed: field ToolUseBlockParam.input: Required[object]
  • removed: field ToolUseBlockParam.name: Required[str]
  • removed: field ToolUseBlockParam.type: Required[Literal['tool_use']]
  • removed: variable ToolsBetaContentBlock
  • removed: class ToolsBetaContentBlockDeltaEvent(BaseModel)
  • removed: field ToolsBetaContentBlockDeltaEvent.delta: Delta
  • removed: field ToolsBetaContentBlockDeltaEvent.index: int
  • removed: field ToolsBetaContentBlockDeltaEvent.type: Literal['content_block_delta']
  • removed: variable Delta
  • removed: class ToolsBetaContentBlockStartEvent(BaseModel)
  • removed: field ToolsBetaContentBlockStartEvent.content_block: ContentBlock
  • removed: field ToolsBetaContentBlockStartEvent.index: int
  • removed: field ToolsBetaContentBlockStartEvent.type: Literal['content_block_start']
  • removed: variable ContentBlock
  • removed: class ToolsBetaMessage(BaseModel)
  • removed: field ToolsBetaMessage.content: List[ToolsBetaContentBlock]
  • removed: field ToolsBetaMessage.id: str
  • removed: field ToolsBetaMessage.model: str
  • removed: field ToolsBetaMessage.role: Literal['assistant']
  • removed: field ToolsBetaMessage.stop_reason: Optional[Literal['end_turn', 'max_tokens', 'stop_sequence', 'tool_use']]
  • removed: field ToolsBetaMessage.stop_sequence: Optional[str]
  • removed: field ToolsBetaMessage.type: Literal['message']
  • removed: field ToolsBetaMessage.usage: Usage
  • removed: class ToolsBetaMessageParam(TypedDict)
  • removed: field ToolsBetaMessageParam.content: Required[Union[str, Iterable[Union[TextBlockParam, ImageBlockParam, ToolUseBlockParam, ToolResultBlockParam, ToolsBetaContentBlock]]]]
  • removed: field ToolsBetaMessageParam.role: Required[Literal['user', 'assistant']]
  • removed: variable ToolsBetaMessageStreamEvent
  • removed: class ContentBlockDeltaEvent(BaseModel)
  • removed: field ContentBlockDeltaEvent.delta: TextDelta
  • removed: field ContentBlockDeltaEvent.index: int
  • removed: field ContentBlockDeltaEvent.type: Literal['content_block_delta']
  • added: variable ContentBlockDeltaEvent
  • removed: class ContentBlockStartEvent(BaseModel)
  • removed: field ContentBlockStartEvent.content_block: TextBlock
  • removed: field ContentBlockStartEvent.index: int
  • removed: field ContentBlockStartEvent.type: Literal['content_block_start']
  • added: variable ContentBlockStartEvent
  • removed: class ContentBlockStopEvent(BaseModel)
  • removed: field ContentBlockStopEvent.index: int
  • removed: field ContentBlockStopEvent.type: Literal['content_block_stop']
  • added: variable ContentBlockStopEvent
  • added: class InputJsonDelta(BaseModel)
  • added: field InputJsonDelta.partial_json: str
  • added: field InputJsonDelta.type: Literal['input_json_delta']
  • changed: field Message.content: List[TextBlock] → field Message.content: List[ContentBlock]
  • changed: field Message.stop_reason: Optional[Literal['end_turn', 'max_tokens', 'stop_sequence']] → field Message.stop_reason: Optional[Literal['end_turn', 'max_tokens', 'stop_sequence', 'tool_use']]
  • added: class ToolChoiceToolChoiceAny(TypedDict)
  • added: class ToolChoiceToolChoiceAuto(TypedDict)
  • added: class ToolChoiceToolChoiceTool(TypedDict)
  • added: field MessageCreateParamsBase.tool_choice: ToolChoice
  • added: field MessageCreateParamsBase.tools: Iterable[ToolParam]
  • added: field ToolChoiceToolChoiceAny.type: Required[Literal['any']]
  • added: field ToolChoiceToolChoiceAuto.type: Required[Literal['auto']]
  • added: field ToolChoiceToolChoiceTool.name: Required[str]
  • added: field ToolChoiceToolChoiceTool.type: Required[Literal['tool']]
  • added: variable ToolChoice
  • removed: class Delta(BaseModel)
  • removed: class MessageDeltaEvent(BaseModel)
  • removed: field Delta.stop_reason: Optional[Literal['end_turn', 'max_tokens', 'stop_sequence']]
  • removed: field Delta.stop_sequence: Optional[str]
  • removed: field MessageDeltaEvent.delta: Delta
  • removed: field MessageDeltaEvent.type: Literal['message_delta']
  • removed: field MessageDeltaEvent.usage: MessageDeltaUsage
  • added: variable MessageDeltaEvent
  • changed: field MessageParam.content: Required[Union[str, Iterable[Union[TextBlockParam, ImageBlockParam, ContentBlock]]]] → field MessageParam.content: Required[Union[str, Iterable[Union[TextBlockParam, ImageBlockParam, ToolUseBlockParam, ToolResultBlockParam, ContentBlock]]]]
  • removed: class MessageStartEvent(BaseModel)
  • removed: field MessageStartEvent.message: Message
  • removed: field MessageStartEvent.type: Literal['message_start']
  • added: variable MessageStartEvent
  • removed: class MessageStopEvent(BaseModel)
  • removed: field MessageStopEvent.type: Literal['message_stop']
  • added: variable MessageStopEvent
  • added: class RawContentBlockDeltaEvent(BaseModel)
  • added: field RawContentBlockDeltaEvent.delta: Delta
  • added: field RawContentBlockDeltaEvent.index: int
  • added: field RawContentBlockDeltaEvent.type: Literal['content_block_delta']
  • added: variable Delta
  • added: class RawContentBlockStartEvent(BaseModel)
  • added: field RawContentBlockStartEvent.content_block: ContentBlock
  • added: field RawContentBlockStartEvent.index: int
  • added: field RawContentBlockStartEvent.type: Literal['content_block_start']
  • added: variable ContentBlock
  • added: class RawContentBlockStopEvent(BaseModel)
  • added: field RawContentBlockStopEvent.index: int
  • added: field RawContentBlockStopEvent.type: Literal['content_block_stop']
  • added: class Delta(BaseModel)
  • added: class RawMessageDeltaEvent(BaseModel)
  • added: field Delta.stop_reason: Optional[Literal['end_turn', 'max_tokens', 'stop_sequence', 'tool_use']]
  • added: field Delta.stop_sequence: Optional[str]
  • added: field RawMessageDeltaEvent.delta: Delta
  • added: field RawMessageDeltaEvent.type: Literal['message_delta']
  • added: field RawMessageDeltaEvent.usage: MessageDeltaUsage
  • added: class RawMessageStartEvent(BaseModel)
  • added: field RawMessageStartEvent.message: Message
  • added: field RawMessageStartEvent.type: Literal['message_start']
  • added: class RawMessageStopEvent(BaseModel)
  • added: field RawMessageStopEvent.type: Literal['message_stop']
  • added: variable RawMessageStreamEvent
  • added: class ToolParam(TypedDict)
  • added: field ToolParam.description: str
  • added: field ToolParam.input_schema: Required[InputSchema]
  • added: field ToolParam.name: Required[str]
  • added: variable InputSchema
  • added: class ToolResultBlockParam(TypedDict)
  • added: field ToolResultBlockParam.content: Iterable[Content]
  • added: field ToolResultBlockParam.is_error: bool
  • added: field ToolResultBlockParam.tool_use_id: Required[str]
  • added: field ToolResultBlockParam.type: Required[Literal['tool_result']]
  • added: variable Content
  • added: class ToolUseBlock(BaseModel)
  • added: field ToolUseBlock.id: str
  • added: field ToolUseBlock.input: object
  • added: field ToolUseBlock.name: str
  • added: field ToolUseBlock.type: Literal['tool_use']
  • added: class ToolUseBlockParam(TypedDict)
  • added: field ToolUseBlockParam.id: Required[str]
  • added: field ToolUseBlockParam.input: Required[object]
  • added: field ToolUseBlockParam.name: Required[str]
  • added: field ToolUseBlockParam.type: Required[Literal['tool_use']]