--- title: "anyllm_translate" description: "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 ```rust 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 ```rust 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 ```rust pub fn builder() -> TranslationConfigBuilder pub fn map_model(&self, model: &str) -> Result ``` ### `TranslationConfigBuilder` methods | Method | Signature | Description | |---|---|---| | `model_map` | `pub fn model_map(self, pattern: impl Into, target: impl Into) -> 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 ```rust pub fn compute_request_warnings(req: &MessageCreateRequest) -> TranslationWarnings pub fn translate_request( req: &MessageCreateRequest, config: &TranslationConfig, ) -> Result 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 pub fn translate_response_responses( resp: &ResponsesResponse, original_model: &str, ) -> MessageResponse pub fn translate_openai_to_anthropic_request( req: &ChatCompletionRequest, warnings: &mut TranslationWarnings, ) -> Result 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` | | `translate_response` | `resp: &ChatCompletionResponse`, `original_model: &str` | `MessageResponse` | | `translate_request_responses` | `req: &MessageCreateRequest`, `config: &TranslationConfig` | `Result` | | `translate_openai_to_anthropic_request` | `req: &ChatCompletionRequest`, `warnings: &mut TranslationWarnings` | `Result` | | `translate_request_gemini` | `req: &MessageCreateRequest`, `config: &TranslationConfig` | `Result<(GenerateContentRequest, String), TranslateError>` | ## Key Request And Response Types ```rust pub struct MessageCreateRequest { pub model: String, pub max_tokens: u32, pub messages: Vec, pub system: Option, pub temperature: Option, pub top_p: Option, pub top_k: Option, pub stop_sequences: Option>, pub tools: Option>, pub tool_choice: Option, pub metadata: Option, pub thinking: Option, pub stream: Option, pub extra: serde_json::Map, } pub struct Tool { pub name: String, pub description: Option, pub input_schema: serde_json::Value, } pub enum ToolChoice { Auto { disable_parallel_tool_use: Option }, Any { disable_parallel_tool_use: Option }, None, Tool { name: String }, } ``` ```rust pub struct ChatCompletionRequest { pub model: String, pub messages: Vec, pub max_tokens: Option, pub max_completion_tokens: Option, pub temperature: Option, pub top_p: Option, pub stop: Option, pub tools: Option>, pub tool_choice: Option, pub stream: Option, pub stream_options: Option, pub presence_penalty: Option, pub frequency_penalty: Option, pub response_format: Option, pub user: Option, pub parallel_tool_calls: Option, pub extra: serde_json::Map, } ``` ## Example ```rust 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>(()) ```