fix(gemini): resolve compilation errors and final parameter alignment
This commit is contained in:
@@ -12,8 +12,20 @@ pub struct ChatCompletionRequest {
|
||||
#[serde(default)]
|
||||
pub temperature: Option<f64>,
|
||||
#[serde(default)]
|
||||
pub top_p: Option<f64>,
|
||||
#[serde(default)]
|
||||
pub top_k: Option<u32>,
|
||||
#[serde(default)]
|
||||
pub n: Option<u32>,
|
||||
#[serde(default)]
|
||||
pub stop: Option<Value>, // Can be string or array of strings
|
||||
#[serde(default)]
|
||||
pub max_tokens: Option<u32>,
|
||||
#[serde(default)]
|
||||
pub presence_penalty: Option<f64>,
|
||||
#[serde(default)]
|
||||
pub frequency_penalty: Option<f64>,
|
||||
#[serde(default)]
|
||||
pub stream: Option<bool>,
|
||||
#[serde(default, skip_serializing_if = "Option::is_none")]
|
||||
pub tools: Option<Vec<Tool>>,
|
||||
@@ -194,7 +206,13 @@ pub struct UnifiedRequest {
|
||||
pub model: String,
|
||||
pub messages: Vec<UnifiedMessage>,
|
||||
pub temperature: Option<f64>,
|
||||
pub top_p: Option<f64>,
|
||||
pub top_k: Option<u32>,
|
||||
pub n: Option<u32>,
|
||||
pub stop: Option<Vec<String>>,
|
||||
pub max_tokens: Option<u32>,
|
||||
pub presence_penalty: Option<f64>,
|
||||
pub frequency_penalty: Option<f64>,
|
||||
pub stream: bool,
|
||||
pub has_images: bool,
|
||||
pub tools: Option<Vec<Tool>>,
|
||||
@@ -326,12 +344,28 @@ impl TryFrom<ChatCompletionRequest> for UnifiedRequest {
|
||||
})
|
||||
.collect();
|
||||
|
||||
let stop = match req.stop {
|
||||
Some(Value::String(s)) => Some(vec![s]),
|
||||
Some(Value::Array(a)) => Some(
|
||||
a.into_iter()
|
||||
.filter_map(|v| v.as_str().map(|s| s.to_string()))
|
||||
.collect(),
|
||||
),
|
||||
_ => None,
|
||||
};
|
||||
|
||||
Ok(UnifiedRequest {
|
||||
client_id: String::new(), // Will be populated by auth middleware
|
||||
model: req.model,
|
||||
messages,
|
||||
temperature: req.temperature,
|
||||
top_p: req.top_p,
|
||||
top_k: req.top_k,
|
||||
n: req.n,
|
||||
stop,
|
||||
max_tokens: req.max_tokens,
|
||||
presence_penalty: req.presence_penalty,
|
||||
frequency_penalty: req.frequency_penalty,
|
||||
stream: req.stream.unwrap_or(false),
|
||||
has_images,
|
||||
tools: req.tools,
|
||||
|
||||
Reference in New Issue
Block a user