vibe.llm_providers.message_converter

MessageConverter - Visitor pattern for converting Message objects to provider formats.

Each LLM provider has a different message format. This module provides the abstract base class that all converters implement. Concrete converters are defined in their respective provider modules (e.g., OpenAIChatConverter in openai.py).

Design principles: - Message classes remain pure data containers - Each provider defines its own converter in its module - New providers add converters without touching Message classes - Conversion logic is co-located with provider code - Uses singledispatch for type-based dispatch (replaces isinstance chains)

MessageConverter

Abstract base for message converters.

Each provider implements this to convert our internal Message types to their specific API format.

convert_system

convert_system(msg: SystemMessage) -> object

Convert a system message to provider format.

convert_user

convert_user(msg: UserMessage) -> object

Convert a user message to provider format.

convert_assistant

convert_assistant(msg: AssistantMessage) -> object

Convert an assistant message to provider format.

convert_tool_result

convert_tool_result(msg: ToolResult) -> object

Convert a tool result to provider format.

convert

convert(msg: Message) -> object

Convert a single message by dispatching to the appropriate method.

This is the main entry point for single message conversion. Uses singledispatch for type-based dispatch instead of isinstance chains.

convert_all

convert_all(messages: list[Message]) -> object

Convert a list of messages to provider format.

Default implementation converts each message individually. Subclasses may override for providers that need special handling (e.g., Anthropic requiring alternating roles, or batching tool results).

InternalFormatConverter

Converter that uses message_to_dict() for internal dict format.

Used by providers that work with our internal dict format (like Ollama).

convert_system

convert_system(msg: SystemMessage) -> dict[str, Any]

Serialize system message to internal dict format.

convert_user

convert_user(msg: UserMessage) -> dict[str, Any]

Serialize user message to internal dict format.

convert_assistant

convert_assistant(msg: AssistantMessage) -> dict[str, Any]

Serialize assistant message to internal dict format.

convert_tool_result

convert_tool_result(msg: ToolResult) -> dict[str, Any]

Serialize tool result to internal dict format.

IdentityConverter

Converter that returns Message objects unchanged.

Used by providers that work with Message objects natively (like MockProvider).

convert_system

convert_system(msg: SystemMessage) -> SystemMessage

Return system message unchanged.

convert_user

convert_user(msg: UserMessage) -> UserMessage

Return user message unchanged.

convert_assistant

convert_assistant(msg: AssistantMessage) -> AssistantMessage

Return assistant message unchanged.

convert_tool_result

convert_tool_result(msg: ToolResult) -> ToolResult

Return tool result unchanged.