feat: replaced ollama with litellm (#18)
Co-authored-by: Sharang Parnerkar <parnerkarsharang@gmail.com> Reviewed-on: https://gitea.meghsakha.com/sharang/certifai/pulls/18
This commit was merged in pull request #18.
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
//! Unified LLM provider dispatch.
|
||||
//!
|
||||
//! Routes chat completion requests to Ollama, OpenAI, Anthropic, or
|
||||
//! Routes chat completion requests to LiteLLM, OpenAI, Anthropic, or
|
||||
//! HuggingFace based on the session's provider setting. All providers
|
||||
//! except Anthropic use the OpenAI-compatible chat completions format.
|
||||
|
||||
@@ -20,11 +20,11 @@ pub struct ProviderMessage {
|
||||
///
|
||||
/// # Arguments
|
||||
///
|
||||
/// * `state` - Server state (for default Ollama URL/model)
|
||||
/// * `provider` - Provider name (`"ollama"`, `"openai"`, `"anthropic"`, `"huggingface"`)
|
||||
/// * `state` - Server state (for default LiteLLM URL/model)
|
||||
/// * `provider` - Provider name (`"litellm"`, `"openai"`, `"anthropic"`, `"huggingface"`)
|
||||
/// * `model` - Model ID
|
||||
/// * `messages` - Conversation history
|
||||
/// * `api_key` - API key (required for non-Ollama providers)
|
||||
/// * `api_key` - API key (required for non-LiteLLM providers; LiteLLM uses server config)
|
||||
/// * `stream` - Whether to request streaming
|
||||
///
|
||||
/// # Returns
|
||||
@@ -123,11 +123,11 @@ pub async fn send_chat_request(
|
||||
.send()
|
||||
.await
|
||||
}
|
||||
// Default: Ollama (OpenAI-compatible endpoint)
|
||||
// Default: LiteLLM proxy (OpenAI-compatible endpoint)
|
||||
_ => {
|
||||
let base_url = &state.services.ollama_url;
|
||||
let base_url = &state.services.litellm_url;
|
||||
let resolved_model = if model.is_empty() {
|
||||
&state.services.ollama_model
|
||||
&state.services.litellm_model
|
||||
} else {
|
||||
model
|
||||
};
|
||||
@@ -137,12 +137,15 @@ pub async fn send_chat_request(
|
||||
"messages": messages,
|
||||
"stream": stream,
|
||||
});
|
||||
client
|
||||
let litellm_key = &state.services.litellm_api_key;
|
||||
let mut request = client
|
||||
.post(&url)
|
||||
.header("content-type", "application/json")
|
||||
.json(&body)
|
||||
.send()
|
||||
.await
|
||||
.json(&body);
|
||||
if !litellm_key.is_empty() {
|
||||
request = request.header("Authorization", format!("Bearer {litellm_key}"));
|
||||
}
|
||||
request.send().await
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user