Converters API¶
llm_rosetta.converters.base.converter.BaseConverter ¶
Bases: ABC
转换器基类,定义统一的转换接口(功能域组织) Base class for converters, defines a unified conversion interface (functional domain organization)
新的设计原则: - 按功能域组织:content, tools, messages, configs - 明确的转换层次:content → messages → requests/responses - 组合模式:子类通过类属性指定使用的ops类 - 保持高层接口简洁:只暴露必要的转换方法
New design principles: - Organized by functional domains: content, tools, messages, configs - Clear conversion hierarchy: content → messages → requests/responses - Composition pattern: subclasses specify ops classes via class attributes - Keep high-level interface simple: only expose necessary conversion methods
create_conversion_context
classmethod
¶
Create a conversion context for non-streaming conversions.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
**options
|
Any
|
Initial options to populate in the context
(e.g., |
{}
|
Returns:
| Type | Description |
|---|---|
ConversionContext
|
A new ConversionContext instance. |
Source code in src/llm_rosetta/converters/base/converter.py
create_stream_context
classmethod
¶
Create a stream context appropriate for this converter.
Subclasses may override to return a provider-specific context subclass with additional state fields.
Returns:
| Type | Description |
|---|---|
StreamContext
|
A new StreamContext instance. |
Source code in src/llm_rosetta/converters/base/converter.py
message_from_provider ¶
message_from_provider(provider_message: Any, *, context: ConversionContext | None = None, **kwargs: Any) -> Message | ExtensionItem
将provider消息转换为IR格式(便利方法) Convert provider message to IR format (convenience method)
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
provider_message
|
Any
|
Provider格式的消息 |
required |
context
|
ConversionContext | None
|
Optional conversion context. |
None
|
**kwargs
|
Any
|
额外参数 |
{}
|
Returns:
| Type | Description |
|---|---|
Message | ExtensionItem
|
IR格式的消息 |
Source code in src/llm_rosetta/converters/base/converter.py
message_to_provider ¶
message_to_provider(message: Message | ExtensionItem, *, context: ConversionContext | None = None, **kwargs: Any) -> tuple[Any, list[str]]
将单个消息转换为provider格式(便利方法) Convert single message to provider format (convenience method)
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
message
|
Message | ExtensionItem
|
IR格式的单个消息 |
required |
context
|
ConversionContext | None
|
Optional conversion context. |
None
|
**kwargs
|
Any
|
额外参数 |
{}
|
Returns:
| Type | Description |
|---|---|
tuple[Any, list[str]]
|
Tuple[转换后的消息, 警告信息列表] |
Source code in src/llm_rosetta/converters/base/converter.py
messages_from_provider
abstractmethod
¶
messages_from_provider(provider_messages: list[Any], *, context: ConversionContext | None = None, **kwargs: Any) -> list[Message | ExtensionItem]
将provider消息转换为IR消息列表 Convert provider messages to IR message list
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
provider_messages
|
list[Any]
|
Provider格式的消息列表 |
required |
context
|
ConversionContext | None
|
Optional conversion context. |
None
|
**kwargs
|
Any
|
额外参数 |
{}
|
Returns:
| Type | Description |
|---|---|
list[Message | ExtensionItem]
|
IR格式的消息列表 |
Source code in src/llm_rosetta/converters/base/converter.py
messages_to_provider
abstractmethod
¶
messages_to_provider(messages: Sequence[Message | ExtensionItem], *, context: ConversionContext | None = None, **kwargs: Any) -> tuple[list[Any], list[str]]
将消息列表转换为provider消息格式 Convert message list to provider message format
这个方法通常会委托给message_ops_class来处理。 This method typically delegates to message_ops_class for processing.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
messages
|
Sequence[Message | ExtensionItem]
|
IR格式的消息列表(可包含扩展项) |
required |
context
|
ConversionContext | None
|
Optional conversion context. |
None
|
**kwargs
|
Any
|
额外参数 |
{}
|
Returns:
| Type | Description |
|---|---|
tuple[list[Any], list[str]]
|
Tuple[转换后的消息列表, 警告信息列表] |
Source code in src/llm_rosetta/converters/base/converter.py
request_from_provider
abstractmethod
¶
request_from_provider(provider_request: dict[str, Any], *, context: ConversionContext | None = None, **kwargs: Any) -> IRRequest
将provider请求转换为IRRequest Convert provider request to IRRequest
Subclass helper: call self._convert_tools_from_p(tools) to convert
provider tool definitions to IR format.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
provider_request
|
dict[str, Any]
|
Provider格式的请求 |
required |
context
|
ConversionContext | None
|
Optional conversion context. |
None
|
**kwargs
|
Any
|
额外参数 |
{}
|
Returns:
| Type | Description |
|---|---|
IRRequest
|
IR格式的请求 |
Source code in src/llm_rosetta/converters/base/converter.py
request_to_provider
abstractmethod
¶
request_to_provider(ir_request: IRRequest, *, context: ConversionContext | None = None, **kwargs: Any) -> tuple[dict[str, Any], list[str]]
将IRRequest转换为provider请求参数 Convert IRRequest to provider request parameters
这是最高层的转换方法,会调用各个功能域的ops类来完成转换: - 使用message_ops处理messages字段 - 使用config_ops处理generation、stream等配置字段 - 使用tool_ops处理tools、tool_choice等工具字段
This is the highest-level conversion method that calls ops classes from various functional domains: - Uses message_ops to handle messages field - Uses config_ops to handle generation, stream and other config fields - Uses tool_ops to handle tools, tool_choice and other tool fields
Subclass helper: call self._apply_tool_config(ir_request, result, ctx)
to handle the tools / tool_choice / tool_config fields.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
ir_request
|
IRRequest
|
IR格式的完整请求 |
required |
context
|
ConversionContext | None
|
Optional conversion context for carrying warnings, options, and metadata through the pipeline. |
None
|
**kwargs
|
Any
|
额外参数 |
{}
|
Returns:
| Type | Description |
|---|---|
tuple[dict[str, Any], list[str]]
|
Tuple[转换后的请求参数, 警告信息列表] |
Source code in src/llm_rosetta/converters/base/converter.py
response_from_provider
abstractmethod
¶
response_from_provider(provider_response: dict[str, Any], *, context: ConversionContext | None = None, **kwargs: Any) -> IRResponse
将provider响应转换为IRResponse Convert provider response to IRResponse
Subclass helper: call self._build_ir_usage(p_usage) to convert
provider usage to IR format.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
provider_response
|
dict[str, Any]
|
Provider格式的响应 |
required |
context
|
ConversionContext | None
|
Optional conversion context. |
None
|
**kwargs
|
Any
|
额外参数 |
{}
|
Returns:
| Type | Description |
|---|---|
IRResponse
|
IR格式的响应 |
Source code in src/llm_rosetta/converters/base/converter.py
response_to_provider
abstractmethod
¶
response_to_provider(ir_response: IRResponse, *, context: ConversionContext | None = None, **kwargs: Any) -> dict[str, Any]
将IRResponse转换为provider响应 Convert IRResponse to provider response
Subclass helper: call self._build_provider_usage(ir_usage) to convert
IR usage to provider format.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
ir_response
|
IRResponse
|
IR格式的响应 |
required |
context
|
ConversionContext | None
|
Optional conversion context. |
None
|
**kwargs
|
Any
|
额外参数 |
{}
|
Returns:
| Type | Description |
|---|---|
dict[str, Any]
|
Provider格式的响应 |
Source code in src/llm_rosetta/converters/base/converter.py
stream_response_from_provider
abstractmethod
¶
stream_response_from_provider(chunk: dict[str, Any], context: StreamContext | None = None) -> list[IRStreamEvent]
Convert a provider-native stream chunk to a list of IR stream events.
A single provider chunk may produce zero or more IR events depending on the provider's SSE protocol. For example, a chunk that carries both a text delta and a finish reason would yield two events.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
chunk
|
dict[str, Any]
|
Provider-native stream chunk (dict or SDK object that will be normalized internally by each concrete converter). |
required |
context
|
StreamContext | None
|
Optional stream context for stateful conversions. When provided, converters may emit lifecycle events (StreamStart/End, ContentBlockStart/End) and track cross-chunk state. |
None
|
Returns:
| Type | Description |
|---|---|
list[IRStreamEvent]
|
List of IR stream events extracted from the chunk. |
Source code in src/llm_rosetta/converters/base/converter.py
stream_response_to_provider ¶
stream_response_to_provider(event: IRStreamEvent, context: StreamContext | None = None) -> dict[str, Any] | list[dict[str, Any]]
Convert an IR stream event to provider-native stream chunk(s).
Uses _TO_P_DISPATCH to route each event type to its handler,
then applies _post_process_to_provider for any provider-specific
decoration of the result.
Subclasses that need pre-dispatch logic (e.g., context upgrades)
may override this method, perform their pre-processing, and call
super().stream_response_to_provider(event, context).
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
event
|
IRStreamEvent
|
IR stream event to convert. |
required |
context
|
StreamContext | None
|
Optional stream context for stateful conversions. |
None
|
Returns:
| Type | Description |
|---|---|
dict[str, Any] | list[dict[str, Any]]
|
A single provider-native stream chunk dict, or a list of chunk |
dict[str, Any] | list[dict[str, Any]]
|
dicts when the event maps to multiple provider-level messages. |
Source code in src/llm_rosetta/converters/base/converter.py
llm_rosetta.converters.openai_chat.converter.OpenAIChatConverter ¶
Bases: BaseConverter
OpenAI Chat Completions API converter.
Implements the 6 explicit conversion interfaces defined by BaseConverter, plus 2 stream methods for SSE chunk-level conversion.
Uses composition of Ops classes for modular, testable conversion logic.
Source code in src/llm_rosetta/converters/openai_chat/converter.py
messages_from_provider ¶
messages_from_provider(provider_messages: list[Any], *, context: ConversionContext | None = None, **kwargs: Any) -> list[Message | ExtensionItem]
Convert OpenAI Chat messages to IR message list.
Delegates to message_ops.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
provider_messages
|
list[Any]
|
OpenAI Chat messages. |
required |
Returns:
| Type | Description |
|---|---|
list[Message | ExtensionItem]
|
IR messages. |
Source code in src/llm_rosetta/converters/openai_chat/converter.py
messages_to_provider ¶
messages_to_provider(messages: Sequence[Message | ExtensionItem], *, context: ConversionContext | None = None, **kwargs: Any) -> tuple[list[Any], list[str]]
Convert IR message list to OpenAI Chat message format.
Delegates to message_ops.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
messages
|
Sequence[Message | ExtensionItem]
|
IR messages (may contain ExtensionItems). |
required |
Returns:
| Type | Description |
|---|---|
tuple[list[Any], list[str]]
|
Tuple of (converted messages, warnings). |
Source code in src/llm_rosetta/converters/openai_chat/converter.py
request_from_provider ¶
request_from_provider(provider_request: dict[str, Any], *, context: ConversionContext | None = None, **kwargs: Any) -> IRRequest
Convert OpenAI Chat Completions request to IRRequest.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
provider_request
|
dict[str, Any]
|
OpenAI request dict (or SDK object). |
required |
Returns:
| Type | Description |
|---|---|
IRRequest
|
IR request. |
Source code in src/llm_rosetta/converters/openai_chat/converter.py
296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 | |
request_to_provider ¶
request_to_provider(ir_request: IRRequest, *, context: ConversionContext | None = None, **kwargs: Any) -> tuple[dict[str, Any], list[str]]
Convert IRRequest to OpenAI Chat Completions request parameters.
Orchestrates all Ops classes to build the complete provider request.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
ir_request
|
IRRequest
|
IR request. |
required |
Returns:
| Type | Description |
|---|---|
tuple[dict[str, Any], list[str]]
|
Tuple of (provider request dict, warnings list). |
Source code in src/llm_rosetta/converters/openai_chat/converter.py
response_from_provider ¶
response_from_provider(provider_response: dict[str, Any], *, context: ConversionContext | None = None, **kwargs: Any) -> IRResponse
Convert OpenAI Chat Completions response to IRResponse.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
provider_response
|
dict[str, Any]
|
OpenAI response dict (or SDK object). |
required |
Returns:
| Type | Description |
|---|---|
IRResponse
|
IR response. |
Source code in src/llm_rosetta/converters/openai_chat/converter.py
response_to_provider ¶
response_to_provider(ir_response: IRResponse, *, context: ConversionContext | None = None, **kwargs: Any) -> dict[str, Any]
Convert IRResponse to OpenAI Chat Completions response.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
ir_response
|
IRResponse
|
IR response. |
required |
Returns:
| Type | Description |
|---|---|
dict[str, Any]
|
OpenAI response dict. |
Source code in src/llm_rosetta/converters/openai_chat/converter.py
stream_response_from_provider ¶
stream_response_from_provider(chunk: dict[str, Any], context: StreamContext | None = None) -> list[IRStreamEvent]
Convert an OpenAI SSE chunk to IR stream events.
A single chunk may produce multiple events (e.g., text delta + finish).
When a context is provided, lifecycle events (StreamStartEvent,
StreamEndEvent) are emitted and cross-chunk state is tracked.
Without a context the behaviour is identical to the previous
implementation (backward compatible).
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
chunk
|
dict[str, Any]
|
OpenAI SSE chunk dict (or SDK object). |
required |
context
|
StreamContext | None
|
Optional stream context for stateful conversions. |
None
|
Returns:
| Type | Description |
|---|---|
list[IRStreamEvent]
|
List of IR stream events extracted from the chunk. |
Source code in src/llm_rosetta/converters/openai_chat/converter.py
llm_rosetta.converters.openai_responses.converter.OpenAIResponsesConverter ¶
Bases: BaseConverter
OpenAI Responses API converter.
Implements the 6 explicit conversion interfaces defined by BaseConverter.
Uses composition of Ops classes for modular, testable conversion logic.
Note: Responses API uses input for request items and output for
response items, with a flat item list structure.
Source code in src/llm_rosetta/converters/openai_responses/converter.py
create_stream_context
classmethod
¶
Create a stream context with Responses API specific state.
messages_from_provider ¶
messages_from_provider(provider_messages: list[Any], *, context: ConversionContext | None = None, **kwargs: Any) -> list[Message | ExtensionItem]
Convert OpenAI Responses items to IR message list.
Delegates to message_ops.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
provider_messages
|
list[Any]
|
OpenAI Responses items. |
required |
Returns:
| Type | Description |
|---|---|
list[Message | ExtensionItem]
|
IR messages. |
Source code in src/llm_rosetta/converters/openai_responses/converter.py
messages_to_provider ¶
messages_to_provider(messages: Sequence[Message | ExtensionItem], *, context: ConversionContext | None = None, **kwargs: Any) -> tuple[list[Any], list[str]]
Convert IR message list to OpenAI Responses input items.
Delegates to message_ops.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
messages
|
Sequence[Message | ExtensionItem]
|
IR messages (may contain ExtensionItems). |
required |
Returns:
| Type | Description |
|---|---|
tuple[list[Any], list[str]]
|
Tuple of (converted items, warnings). |
Source code in src/llm_rosetta/converters/openai_responses/converter.py
request_from_provider ¶
request_from_provider(provider_request: dict[str, Any], *, context: ConversionContext | None = None, **kwargs: Any) -> IRRequest
Convert OpenAI Responses API request to IRRequest.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
provider_request
|
dict[str, Any]
|
OpenAI Responses request dict (or SDK object). |
required |
Returns:
| Type | Description |
|---|---|
IRRequest
|
IR request. |
Source code in src/llm_rosetta/converters/openai_responses/converter.py
162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 | |
request_to_provider ¶
request_to_provider(ir_request: IRRequest, *, context: ConversionContext | None = None, **kwargs: Any) -> tuple[dict[str, Any], list[str]]
Convert IRRequest to OpenAI Responses API request parameters.
Orchestrates all Ops classes to build the complete provider request.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
ir_request
|
IRRequest
|
IR request. |
required |
Returns:
| Type | Description |
|---|---|
tuple[dict[str, Any], list[str]]
|
Tuple of (provider request dict, warnings list). |
Source code in src/llm_rosetta/converters/openai_responses/converter.py
response_from_provider ¶
response_from_provider(provider_response: dict[str, Any], *, context: ConversionContext | None = None, **kwargs: Any) -> IRResponse
Convert OpenAI Responses API response to IRResponse.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
provider_response
|
dict[str, Any]
|
OpenAI Responses response dict (or SDK object). |
required |
Returns:
| Type | Description |
|---|---|
IRResponse
|
IR response. |
Source code in src/llm_rosetta/converters/openai_responses/converter.py
261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 | |
response_to_provider ¶
response_to_provider(ir_response: IRResponse, *, context: ConversionContext | None = None, **kwargs: Any) -> dict[str, Any]
Convert IRResponse to OpenAI Responses API response.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
ir_response
|
IRResponse
|
IR response. |
required |
Returns:
| Type | Description |
|---|---|
dict[str, Any]
|
OpenAI Responses response dict. |
Source code in src/llm_rosetta/converters/openai_responses/converter.py
342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 | |
stream_response_from_provider ¶
stream_response_from_provider(chunk: dict[str, Any], context: StreamContext | None = None) -> list[IRStreamEvent]
Convert an OpenAI Responses SSE event to IR stream events.
OpenAI Responses API uses fine-grained SSE events with a type field
(e.g. response.output_text.delta) instead of the choices[].delta
structure used by Chat Completions.
A single event typically produces zero or one IR events, but
response.completed may produce both a FinishEvent and a
UsageEvent.
When a context is provided, lifecycle events (StreamStartEvent,
ContentBlockStartEvent, ContentBlockEndEvent,
StreamEndEvent) are emitted and cross-event state is tracked.
Without a context the behaviour is identical to the previous
implementation (backward compatible).
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
chunk
|
dict[str, Any]
|
OpenAI Responses SSE event dict (or SDK object). |
required |
context
|
StreamContext | None
|
Optional stream context for stateful conversions. |
None
|
Returns:
| Type | Description |
|---|---|
list[IRStreamEvent]
|
List of IR stream events extracted from the event. |
Source code in src/llm_rosetta/converters/openai_responses/converter.py
stream_response_to_provider ¶
stream_response_to_provider(event: IRStreamEvent, context: StreamContext | None = None) -> dict[str, Any] | list[dict[str, Any]]
Convert IR stream event with automatic context upgrade.
If a base StreamContext is passed, it is automatically upgraded
to OpenAIResponsesStreamContext (preserving existing state) so
that callers do not need to know about the provider-specific subclass.
Source code in src/llm_rosetta/converters/openai_responses/converter.py
to_provider ¶
Backward-compatible conversion method.
Handles both IRRequest dicts and plain message lists.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
ir_input
|
Either an IRRequest dict or a list of IR messages. |
required | |
tools
|
Optional tool definitions. |
None
|
|
tool_choice
|
Optional tool choice config. |
None
|
Returns:
| Type | Description |
|---|---|
|
Tuple of (provider request dict, warnings list). |
Source code in src/llm_rosetta/converters/openai_responses/converter.py
validate_ir_input ¶
Validate IR input for backward compatibility.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
ir_input
|
IR input to validate. |
required |
Returns:
| Type | Description |
|---|---|
|
List of validation errors, empty if valid. |
Source code in src/llm_rosetta/converters/openai_responses/converter.py
llm_rosetta.converters.anthropic.converter.AnthropicConverter ¶
Bases: BaseConverter
Anthropic Messages API converter.
Implements the 6 explicit conversion interfaces defined by BaseConverter, plus 2 stream methods for SSE event-level conversion.
Uses composition of Ops classes for modular, testable conversion logic.
Source code in src/llm_rosetta/converters/anthropic/converter.py
messages_from_provider ¶
messages_from_provider(provider_messages: list[Any], *, context: ConversionContext | None = None, **kwargs: Any) -> list[Message | ExtensionItem]
Convert Anthropic messages to IR message list.
Delegates to message_ops.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
provider_messages
|
list[Any]
|
Anthropic messages. |
required |
Returns:
| Type | Description |
|---|---|
list[Message | ExtensionItem]
|
IR messages. |
Source code in src/llm_rosetta/converters/anthropic/converter.py
messages_to_provider ¶
messages_to_provider(messages: Sequence[Message | ExtensionItem], *, context: ConversionContext | None = None, **kwargs: Any) -> tuple[list[Any], list[str]]
Convert IR message list to Anthropic message format.
Delegates to message_ops.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
messages
|
Sequence[Message | ExtensionItem]
|
IR messages (may contain ExtensionItems). |
required |
Returns:
| Type | Description |
|---|---|
tuple[list[Any], list[str]]
|
Tuple of (converted messages, warnings). |
Source code in src/llm_rosetta/converters/anthropic/converter.py
request_from_provider ¶
request_from_provider(provider_request: dict[str, Any], *, context: ConversionContext | None = None, **kwargs: Any) -> IRRequest
Convert Anthropic Messages API request to IRRequest.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
provider_request
|
dict[str, Any]
|
Anthropic request dict (or SDK object). |
required |
Returns:
| Type | Description |
|---|---|
IRRequest
|
IR request. |
Source code in src/llm_rosetta/converters/anthropic/converter.py
request_to_provider ¶
request_to_provider(ir_request: IRRequest, *, context: ConversionContext | None = None, **kwargs: Any) -> tuple[dict[str, Any], list[str]]
Convert IRRequest to Anthropic Messages API request parameters.
Orchestrates all Ops classes to build the complete provider request.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
ir_request
|
IRRequest
|
IR request. |
required |
Returns:
| Type | Description |
|---|---|
tuple[dict[str, Any], list[str]]
|
Tuple of (provider request dict, warnings list). |
Source code in src/llm_rosetta/converters/anthropic/converter.py
79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 | |
response_from_provider ¶
response_from_provider(provider_response: dict[str, Any], *, context: ConversionContext | None = None, **kwargs: Any) -> IRResponse
Convert Anthropic Messages API response to IRResponse.
Anthropic returns a single message (not choices list).
We wrap it as choices[0].
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
provider_response
|
dict[str, Any]
|
Anthropic response dict (or SDK object). |
required |
Returns:
| Type | Description |
|---|---|
IRResponse
|
IR response. |
Source code in src/llm_rosetta/converters/anthropic/converter.py
response_to_provider ¶
response_to_provider(ir_response: IRResponse, *, context: ConversionContext | None = None, **kwargs: Any) -> dict[str, Any]
Convert IRResponse to Anthropic Messages API response.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
ir_response
|
IRResponse
|
IR response. |
required |
Returns:
| Type | Description |
|---|---|
dict[str, Any]
|
Anthropic response dict. |
Source code in src/llm_rosetta/converters/anthropic/converter.py
stream_response_from_provider ¶
stream_response_from_provider(chunk: dict[str, Any], context: StreamContext | None = None) -> list[IRStreamEvent]
Convert an Anthropic SSE event to IR stream events.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
chunk
|
dict[str, Any]
|
Anthropic SSE event dict (or SDK object). |
required |
Returns:
| Type | Description |
|---|---|
list[IRStreamEvent]
|
List of IR stream events extracted from the event. |
Source code in src/llm_rosetta/converters/anthropic/converter.py
llm_rosetta.converters.google_genai.converter.GoogleGenAIConverter ¶
Bases: BaseConverter
Google GenAI API converter.
Implements the 6 explicit conversion interfaces defined by BaseConverter.
Uses composition of Ops classes for modular, testable conversion logic.
Source code in src/llm_rosetta/converters/google_genai/converter.py
build_config ¶
build_config(tools: Sequence[ToolDefinition] | None = None, tool_choice: ToolChoice | None = None) -> dict[str, Any] | None
Build Google GenAI config parameters (backward compatibility).
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
tools
|
Sequence[ToolDefinition] | None
|
Tool definition list. |
None
|
tool_choice
|
ToolChoice | None
|
Tool choice configuration. |
None
|
Returns:
| Type | Description |
|---|---|
dict[str, Any] | None
|
Google GenAI config dict, or None if no tool configuration. |
Source code in src/llm_rosetta/converters/google_genai/converter.py
messages_from_provider ¶
messages_from_provider(provider_messages: list[Any], *, context: ConversionContext | None = None, **kwargs: Any) -> list[Message | ExtensionItem]
Convert Google GenAI Content list to IR message list.
Delegates to message_ops.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
provider_messages
|
list[Any]
|
Google Content list. |
required |
Returns:
| Type | Description |
|---|---|
list[Message | ExtensionItem]
|
IR messages. |
Source code in src/llm_rosetta/converters/google_genai/converter.py
messages_to_provider ¶
messages_to_provider(messages: Sequence[Message | ExtensionItem], *, context: ConversionContext | None = None, **kwargs: Any) -> tuple[list[Any], list[str]]
Convert IR message list to Google GenAI Content format.
Delegates to message_ops.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
messages
|
Sequence[Message | ExtensionItem]
|
IR messages (may contain ExtensionItems). |
required |
Returns:
| Type | Description |
|---|---|
tuple[list[Any], list[str]]
|
Tuple of (converted Content list, warnings). |
Source code in src/llm_rosetta/converters/google_genai/converter.py
request_from_provider ¶
request_from_provider(provider_request: dict[str, Any], *, context: ConversionContext | None = None, **kwargs: Any) -> IRRequest
Convert Google GenAI request to IRRequest.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
provider_request
|
dict[str, Any]
|
Google request dict (or SDK object). |
required |
Returns:
| Type | Description |
|---|---|
IRRequest
|
IR request. |
Source code in src/llm_rosetta/converters/google_genai/converter.py
302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 | |
request_to_provider ¶
request_to_provider(ir_request: IRRequest, *, context: ConversionContext | None = None, **kwargs: Any) -> tuple[dict[str, Any], list[str]]
Convert IRRequest to Google GenAI request parameters.
Orchestrates all Ops classes to build the complete provider request.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
ir_request
|
IRRequest
|
IR request. |
required |
**kwargs
|
Any
|
Optional keyword arguments.
|
{}
|
Returns:
| Type | Description |
|---|---|
tuple[dict[str, Any], list[str]]
|
Tuple of (provider request dict, warnings list). |
Source code in src/llm_rosetta/converters/google_genai/converter.py
195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 | |
response_from_provider ¶
response_from_provider(provider_response: dict[str, Any], *, context: ConversionContext | None = None, **kwargs: Any) -> IRResponse
Convert Google GenAI response to IRResponse.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
provider_response
|
dict[str, Any]
|
Google response dict (or SDK object). |
required |
Returns:
| Type | Description |
|---|---|
IRResponse
|
IR response. |
Source code in src/llm_rosetta/converters/google_genai/converter.py
response_to_provider ¶
response_to_provider(ir_response: IRResponse, *, context: ConversionContext | None = None, **kwargs: Any) -> dict[str, Any]
Convert IRResponse to Google GenAI response.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
ir_response
|
IRResponse
|
IR response. |
required |
Returns:
| Type | Description |
|---|---|
dict[str, Any]
|
Google response dict. |
Source code in src/llm_rosetta/converters/google_genai/converter.py
stream_response_from_provider ¶
stream_response_from_provider(chunk: dict[str, Any], context: StreamContext | None = None) -> list[IRStreamEvent]
Convert a Google GenAI stream chunk to IR stream events.
Google GenAI stream chunks are complete GenerateContentResponse
objects. Each chunk contains incremental content in
candidates[].content.parts[].
When a context is provided, lifecycle events (StreamStartEvent,
StreamEndEvent) are emitted and cross-chunk state is tracked.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
chunk
|
dict[str, Any]
|
Google GenAI stream chunk dict (or SDK object). |
required |
context
|
StreamContext | None
|
Optional stream context for stateful conversions. |
None
|
Returns:
| Type | Description |
|---|---|
list[IRStreamEvent]
|
List of IR stream events extracted from the chunk. |
Source code in src/llm_rosetta/converters/google_genai/converter.py
771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 | |
to_provider ¶
to_provider(ir_input: IRInput | IRRequest, tools: Sequence[ToolDefinition] | None = None, tool_choice: ToolChoice | None = None, **kwargs: Any) -> tuple[dict[str, Any], list[str]]
Convert IR format to Google GenAI format (backward compatibility).
Supports both IRInput (message list) and IRRequest (full request).
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
ir_input
|
IRInput | IRRequest
|
IR input list or request object. |
required |
tools
|
Sequence[ToolDefinition] | None
|
Tool definition list. |
None
|
tool_choice
|
ToolChoice | None
|
Tool choice configuration. |
None
|
Returns:
| Type | Description |
|---|---|
tuple[dict[str, Any], list[str]]
|
(Google GenAI format dict, warning list) |