Files
anyllm-proxy/docs/codedocs/api-reference/anyllm-translate.md
T
2026-05-23 21:09:23 -05:00

6.3 KiB

title, description
title description
anyllm_translate Reference for the pure translation crate that maps Anthropic Messages to OpenAI Chat Completions, OpenAI Responses, and Gemini native formats.

Source files: crates/translator/src/lib.rs, crates/translator/src/config.rs, crates/translator/src/translate.rs, crates/translator/src/anthropic/messages.rs, crates/translator/src/openai/chat_completions.rs

Import Path

use anyllm_translate::{
    LossyBehavior, TranslationConfig, TranslationConfigBuilder,
    compute_request_warnings, translate_request, translate_response,
    translate_request_responses, translate_response_responses,
    translate_openai_to_anthropic_request, translate_anthropic_to_openai_response,
    translate_request_gemini, translate_response_gemini,
    new_stream_translator, new_responses_stream_translator,
    new_reverse_stream_translator, new_gemini_stream_translator,
};

Core Types

pub enum LossyBehavior {
    Silent,
    Warn,
    Error,
}

pub struct TranslationConfig {
    pub model_map: Vec<(String, String)>,
    pub lossy_behavior: LossyBehavior,
    pub passthrough_unknown_models: bool,
}

pub struct TranslationConfigBuilder { /* builder state */ }

TranslationConfig methods

pub fn builder() -> TranslationConfigBuilder
pub fn map_model(&self, model: &str) -> Result<String, TranslateError>

TranslationConfigBuilder methods

Method Signature Description
model_map pub fn model_map(self, pattern: impl Into<String>, target: impl Into<String>) -> Self Adds an ordered, case-insensitive substring rule.
lossy_behavior pub fn lossy_behavior(self, behavior: LossyBehavior) -> Self Controls whether unsupported features are dropped, warned, or rejected.
passthrough_unknown_models pub fn passthrough_unknown_models(self, passthrough: bool) -> Self Allows or rejects unmapped model ids.
build pub fn build(self) -> TranslationConfig Finalizes the builder.

Top-Level Functions

pub fn compute_request_warnings(req: &MessageCreateRequest) -> TranslationWarnings
pub fn translate_request(
    req: &MessageCreateRequest,
    config: &TranslationConfig,
) -> Result<ChatCompletionRequest, TranslateError>
pub fn translate_response(
    resp: &ChatCompletionResponse,
    original_model: &str,
) -> MessageResponse
pub fn new_stream_translator(model: String) -> StreamingTranslator
pub fn translate_request_responses(
    req: &MessageCreateRequest,
    config: &TranslationConfig,
) -> Result<ResponsesRequest, TranslateError>
pub fn translate_response_responses(
    resp: &ResponsesResponse,
    original_model: &str,
) -> MessageResponse
pub fn translate_openai_to_anthropic_request(
    req: &ChatCompletionRequest,
    warnings: &mut TranslationWarnings,
) -> Result<MessageCreateRequest, TranslateError>
pub fn translate_anthropic_to_openai_response(
    resp: &MessageResponse,
    model: &str,
) -> ChatCompletionResponse
pub fn new_reverse_stream_translator(
    id: String,
    model: String,
) -> ReverseStreamingTranslator
pub fn new_responses_stream_translator(
    model: String,
) -> ResponsesStreamingTranslator
pub fn translate_request_gemini(
    req: &MessageCreateRequest,
    config: &TranslationConfig,
) -> Result<(GenerateContentRequest, String), TranslateError>
pub fn translate_response_gemini(
    resp: &GenerateContentResponse,
    model: &str,
) -> MessageResponse
pub fn new_gemini_stream_translator(model: String) -> GeminiStreamingTranslator

Parameters

Function Key parameters Return type
translate_request req: &MessageCreateRequest, config: &TranslationConfig Result<ChatCompletionRequest, TranslateError>
translate_response resp: &ChatCompletionResponse, original_model: &str MessageResponse
translate_request_responses req: &MessageCreateRequest, config: &TranslationConfig Result<ResponsesRequest, TranslateError>
translate_openai_to_anthropic_request req: &ChatCompletionRequest, warnings: &mut TranslationWarnings Result<MessageCreateRequest, TranslateError>
translate_request_gemini req: &MessageCreateRequest, config: &TranslationConfig Result<(GenerateContentRequest, String), TranslateError>

Key Request And Response Types

pub struct MessageCreateRequest {
    pub model: String,
    pub max_tokens: u32,
    pub messages: Vec<InputMessage>,
    pub system: Option<System>,
    pub temperature: Option<f32>,
    pub top_p: Option<f32>,
    pub top_k: Option<u32>,
    pub stop_sequences: Option<Vec<String>>,
    pub tools: Option<Vec<Tool>>,
    pub tool_choice: Option<ToolChoice>,
    pub metadata: Option<Metadata>,
    pub thinking: Option<ThinkingConfig>,
    pub stream: Option<bool>,
    pub extra: serde_json::Map<String, serde_json::Value>,
}

pub struct Tool {
    pub name: String,
    pub description: Option<String>,
    pub input_schema: serde_json::Value,
}

pub enum ToolChoice {
    Auto { disable_parallel_tool_use: Option<bool> },
    Any { disable_parallel_tool_use: Option<bool> },
    None,
    Tool { name: String },
}
pub struct ChatCompletionRequest {
    pub model: String,
    pub messages: Vec<ChatMessage>,
    pub max_tokens: Option<u32>,
    pub max_completion_tokens: Option<u32>,
    pub temperature: Option<f32>,
    pub top_p: Option<f32>,
    pub stop: Option<Stop>,
    pub tools: Option<Vec<ChatTool>>,
    pub tool_choice: Option<ChatToolChoice>,
    pub stream: Option<bool>,
    pub stream_options: Option<StreamOptions>,
    pub presence_penalty: Option<f32>,
    pub frequency_penalty: Option<f32>,
    pub response_format: Option<ResponseFormat>,
    pub user: Option<String>,
    pub parallel_tool_calls: Option<bool>,
    pub extra: serde_json::Map<String, serde_json::Value>,
}

Example

use anyllm_translate::{TranslationConfig, translate_request};
use anyllm_translate::anthropic::MessageCreateRequest;

let cfg = TranslationConfig::builder()
    .model_map("sonnet", "gpt-4o")
    .build();

let req: MessageCreateRequest = serde_json::from_str(r#"{
  "model": "claude-3-5-sonnet-latest",
  "max_tokens": 64,
  "messages": [{"role": "user", "content": "hello"}]
}"#)?;

let openai = translate_request(&req, &cfg)?;
assert_eq!(openai.model, "gpt-4o");
# Ok::<(), Box<dyn std::error::Error>>(())