Skip to content

Cross-Provider Conversation

This example demonstrates a multi-turn conversation that alternates between two different LLM providers, using LLM-Rosetta to convert messages seamlessly.

Concept

Turn 1: User → Provider A → IR response → append to history
Turn 2: User → IR history → Provider B request → Provider B → IR response
Turn 3: User → IR history → Provider A request → Provider A → IR response
...

The conversation history is maintained in IR format. Before each API call, the full history is converted to the target provider's format.

Example: OpenAI ↔ Anthropic

from llm_rosetta import OpenAIChatConverter, AnthropicConverter
from llm_rosetta.types.ir import extract_text_content, IRRequest

openai_conv = OpenAIChatConverter()
anthropic_conv = AnthropicConverter()

# Maintain history in IR format
ir_messages = []

def chat(user_text: str, use_provider: str = "openai"):
    # Add user message to IR history
    ir_messages.append({
        "role": "user",
        "content": [{"type": "text", "text": user_text}],
    })

    # Build IR request
    ir_request: IRRequest = {
        "model": "gpt-4o" if use_provider == "openai" else "claude-sonnet-4-20250514",
        "messages": ir_messages,
        "generation": {"temperature": 0.7, "max_tokens": 1000},
    }

    # Convert to provider format and call API
    if use_provider == "openai":
        req, _ = openai_conv.request_to_provider(ir_request)
        response = openai_client.chat.completions.create(**req)
        ir_resp = openai_conv.response_from_provider(response.model_dump())
    else:
        req, _ = anthropic_conv.request_to_provider(ir_request)
        response = anthropic_client.messages.create(**req)
        ir_resp = anthropic_conv.response_from_provider(response.model_dump())

    # Append assistant response to history
    assistant_msg = ir_resp["choices"][0]["message"]
    ir_messages.append(assistant_msg)

    return extract_text_content(assistant_msg)

# Alternate between providers
print(chat("Hello!", "openai"))
print(chat("Tell me more.", "anthropic"))
print(chat("Thanks!", "openai"))