mirror of
https://wget.la/https://github.com/leookun/cursor-byok
synced 2026-10-05 20:44:07 +08:00
45 lines
1.2 KiB
Rust
45 lines
1.2 KiB
Rust
use serde::{Deserialize, Serialize};
|
|
|
|
#[derive(Clone, Debug, Default, Serialize, Deserialize, PartialEq, Eq)]
|
|
pub struct ReasoningSpec {
|
|
pub enabled: bool,
|
|
pub effort: Option<String>,
|
|
}
|
|
|
|
#[derive(Clone, Debug, Default, Serialize, Deserialize, PartialEq, Eq)]
|
|
#[serde(rename_all = "snake_case")]
|
|
pub enum ModelLatency {
|
|
#[default]
|
|
Standard,
|
|
Fast,
|
|
}
|
|
|
|
#[derive(Clone, Debug, Serialize, Deserialize, PartialEq)]
|
|
pub struct ModelSpec {
|
|
pub model_id: String,
|
|
pub display_name: Option<String>,
|
|
pub reasoning: ReasoningSpec,
|
|
pub latency: ModelLatency,
|
|
pub max_output_tokens: Option<u64>,
|
|
pub context_window_tokens: Option<u64>,
|
|
#[serde(default)]
|
|
pub supports_image_generation: bool,
|
|
#[serde(default)]
|
|
pub extra_params: serde_json::Value,
|
|
}
|
|
|
|
impl ModelSpec {
|
|
pub fn new(model_id: impl Into<String>) -> Self {
|
|
Self {
|
|
model_id: model_id.into(),
|
|
display_name: None,
|
|
reasoning: ReasoningSpec::default(),
|
|
latency: ModelLatency::Standard,
|
|
max_output_tokens: None,
|
|
context_window_tokens: None,
|
|
supports_image_generation: false,
|
|
extra_params: serde_json::json!({}),
|
|
}
|
|
}
|
|
}
|