feat: Add LiteLLM provider with automatic prompt caching support (#3380)
Signed-off-by: HikaruEgashira <account@egahika.dev>
This commit is contained in:
@@ -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)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user