Add the ability to use LLM Providers from the Arch config (#112)

Signed-off-by: José Ulises Niño Rivera <junr03@users.noreply.github.com>
This commit is contained in:
José Ulises Niño Rivera 2024-10-03 10:57:01 -07:00 committed by GitHub
parent 1b57a49c9d
commit 8ea917aae5
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
16 changed files with 295 additions and 210 deletions

View file

@ -1,7 +1,7 @@
use std::{collections::HashMap, time::Duration};
use duration_string::DurationString;
use serde::{Deserialize, Deserializer, Serialize};
use std::fmt::Display;
use std::{collections::HashMap, time::Duration};
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct Overrides {
@ -59,6 +59,19 @@ pub struct PromptGuards {
pub input_guards: HashMap<GuardType, GuardOptions>,
}
impl PromptGuards {
pub fn jailbreak_on_exception_message(&self) -> Option<&str> {
self.input_guards
.get(&GuardType::Jailbreak)?
.on_exception
.as_ref()?
.message
.as_ref()?
.as_str()
.into()
}
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq, Hash)]
pub enum GuardType {
#[serde(rename = "jailbreak")]
@ -96,7 +109,7 @@ pub struct Header {
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Ratelimit {
pub provider: String,
pub model: String,
pub selector: Header,
pub limit: Limit,
}
@ -134,7 +147,7 @@ pub struct EmbeddingProviver {
//TODO: use enum for model, but if there is a new model, we need to update the code
pub struct LlmProvider {
pub name: String,
//TODO: handle env var replacement
pub provider: String,
pub access_key: Option<String>,
pub model: String,
pub default: Option<bool>,
@ -142,6 +155,12 @@ pub struct LlmProvider {
pub rate_limits: Option<LlmRatelimit>,
}
impl Display for LlmProvider {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
write!(f, "{}", self.name)
}
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Endpoint {
pub endpoint: Option<String>,