feat: more models, make decisions a wrapper for system one

This commit is contained in:
2026-10-10 19:06:02 -04:00
parent 9a848e2c78
commit e0e1f0781e
7 changed files with 248 additions and 167 deletions

View File

@@ -32,6 +32,7 @@ pub struct V1SystemOnePath;
)]
#[strum(serialize_all = "lowercase")]
pub enum Shortcut {
S,
M,
}
@@ -41,14 +42,26 @@ impl Shortcut {
use Shortcut as S;
match self {
S::S => {
vec![
(P::LiquidAi, "d1:free".into()),
(P::CloudflareWorkersAi, "clef-omni".into()),
(P::CloudflareWorkersAi, "clef-flash".into()),
(P::OpenRouter, "respan/span-01-lite:free".into()),
(P::OpenRouter, "respan/span-01-lite".into()),
]
}
S::M => {
vec![(P::LiquidAi, "d1:free".into())]
vec![
(P::CloudflareWorkersAi, "clef".into()),
(P::OpenRouter, "inception/mercury-decide:free".into()),
]
}
}
}
}
pub struct SystemOneResponse(openai::system_one::SystemOneResponse<String>);
pub struct SystemOneResponse(pub openai::system_one::SystemOneResponse<String>);
impl IntoResponse for SystemOneResponse {
fn into_response(self) -> Response {
@@ -94,7 +107,7 @@ pub async fn create_system_one(
}| {
Upstream::builder()
.url(
format!("https://api.cloudflare.com/client/v4/accounts/{account_id}/ai/v1/systemone")
format!("https://api.cloudflare.com/client/v4/accounts/{account_id}/run/@cf/cloudflare/{model}")
.parse()
.expect("TODO"),
)
@@ -147,15 +160,22 @@ pub async fn create_system_one(
tracing::info!(?model, ?upstream);
let openai::system_one::SystemOneRequest { model: _shortcut, state, questions } = request.clone();
let openai::system_one::SystemOneRequest {
model: _shortcut,
state,
files,
images,
questions,
} = request.clone();
let request = openai::system_one::SystemOneRequest {
model,
state,
files,
images,
questions,
};
let client = reqwest::Client::builder()
.tls_certs_only(
webpki_root_certs::TLS_SERVER_ROOT_CERTS
@@ -165,9 +185,7 @@ pub async fn create_system_one(
.build()
.expect("TODO");
let mut upstream_request = client
.post(upstream.url)
.json(&request);
let mut upstream_request = client.post(upstream.url).json(&request);
if let Some(api_key) = upstream.api_key {
let authorization =
@@ -200,16 +218,15 @@ pub async fn create_system_one(
continue;
};
let response = match upstream_response.json().await {
Ok(response) => response,
Err(json_error) => {
tracing::error!(?json_error);
continue;
}
};
let response = match upstream_response.json().await {
Ok(response) => response,
Err(json_error) => {
tracing::error!(?json_error);
continue;
}
};
return Ok(SystemOneResponse(response));
return Ok(SystemOneResponse(response));
}
Err(SystemOneError::NoneSucceeded)
}