feat: Add LiteLLM provider with automatic prompt caching support (#3380)

Signed-off-by: HikaruEgashira <account@egahika.dev>
This commit is contained in:
hikae
2025-07-19 19:07:01 +09:00
committed by GitHub
parent c38c7f16dc
commit 78b30cc0ca
8 changed files with 411 additions and 10 deletions
+10 -7
View File
@@ -199,23 +199,20 @@ fn update_request_for_anthropic(original_payload: &Value) -> Value {
}
fn create_request_based_on_model(
model_config: &ModelConfig,
provider: &OpenRouterProvider,
system: &str,
messages: &[Message],
tools: &[Tool],
) -> anyhow::Result<Value, Error> {
let mut payload = create_request(
model_config,
&provider.model,
system,
messages,
tools,
&super::utils::ImageFormat::OpenAi,
)?;
if model_config
.model_name
.starts_with(OPENROUTER_MODEL_PREFIX_ANTHROPIC)
{
if provider.supports_cache_control() {
payload = update_request_for_anthropic(&payload);
}
@@ -259,7 +256,7 @@ impl Provider for OpenRouterProvider {
tools: &[Tool],
) -> Result<(Message, ProviderUsage), ProviderError> {
// Create the base payload
let payload = create_request_based_on_model(&self.model, system, messages, tools)?;
let payload = create_request_based_on_model(self, system, messages, tools)?;
// Make request
let response = self.post(payload.clone()).await?;
@@ -365,4 +362,10 @@ impl Provider for OpenRouterProvider {
models.sort();
Ok(Some(models))
}
fn supports_cache_control(&self) -> bool {
self.model
.model_name
.starts_with(OPENROUTER_MODEL_PREFIX_ANTHROPIC)
}
}