Merge pull request #361 from LyricalNanoha/fix/omit-empty-tools-array

This commit is contained in:
leokun
2026-08-28 10:11:09 +08:00
committed by GitHub
3 changed files with 17 additions and 11 deletions
+6 -4
View File
@@ -54,11 +54,13 @@ impl Provider for AnthropicProvider {
.unwrap_or(DEFAULT_MAX_OUTPUT_TOKENS); .unwrap_or(DEFAULT_MAX_OUTPUT_TOKENS);
let mut body = json!({ let mut body = json!({
"model": request.model.model_id, "system": request.prompt.instructions, "messages": messages, "model": request.model.model_id, "system": request.prompt.instructions, "messages": messages,
"max_tokens": max_tokens, "stream": true, "max_tokens": max_tokens, "stream": true
"tools": request.prompt.tools.iter().map(|tool| json!({
"name": tool.name, "description": tool.description, "input_schema": tool.parameters
})).collect::<Vec<_>>()
}); });
if !request.prompt.tools.is_empty() {
body["tools"] = json!(request.prompt.tools.iter().map(|tool| json!({
"name": tool.name, "description": tool.description, "input_schema": tool.parameters
})).collect::<Vec<_>>());
}
apply_model(&mut body, &request.model)?; apply_model(&mut body, &request.model)?;
merge_extra_params(&mut body, &request.model.extra_params)?; merge_extra_params(&mut body, &request.model.extra_params)?;
if let Some(recorder) = &recorder { if let Some(recorder) = &recorder {
+5 -3
View File
@@ -65,12 +65,14 @@ impl Provider for OpenAiChatProvider {
let mut body = json!({ let mut body = json!({
"model": request.model.model_id, "model": request.model.model_id,
"messages": messages, "messages": messages,
"tools": request.prompt.tools.iter().map(|tool| json!({"type":"function","function":{
"name": tool.name, "description": tool.description, "parameters": tool.parameters
}})).collect::<Vec<_>>(),
"stream": true, "stream": true,
"stream_options": {"include_usage": true} "stream_options": {"include_usage": true}
}); });
if !request.prompt.tools.is_empty() {
body["tools"] = json!(request.prompt.tools.iter().map(|tool| json!({"type":"function","function":{
"name": tool.name, "description": tool.description, "parameters": tool.parameters
}})).collect::<Vec<_>>());
}
apply_model(&mut body, &request.model, config.max_output_tokens)?; apply_model(&mut body, &request.model, config.max_output_tokens)?;
merge_extra_params(&mut body, &request.model.extra_params)?; merge_extra_params(&mut body, &request.model.extra_params)?;
apply_openai_prompt_cache_key(&mut body, &request.model.model_id)?; apply_openai_prompt_cache_key(&mut body, &request.model.model_id)?;
+6 -4
View File
@@ -69,12 +69,14 @@ impl Provider for OpenAiResponsesProvider {
let mut body = json!({ let mut body = json!({
"model": request.model.model_id, "input": input, "stream": true, "model": request.model.model_id, "input": input, "stream": true,
"instructions": request.prompt.instructions, "instructions": request.prompt.instructions,
"include": ["reasoning.encrypted_content"], "include": ["reasoning.encrypted_content"]
"tools": request.prompt.tools.iter().map(|tool| json!({ });
if !request.prompt.tools.is_empty() {
body["tools"] = json!(request.prompt.tools.iter().map(|tool| json!({
"type":"function", "name":tool.name, "description":tool.description, "type":"function", "name":tool.name, "description":tool.description,
"parameters":tool.parameters, "strict":false "parameters":tool.parameters, "strict":false
})).collect::<Vec<_>>() })).collect::<Vec<_>>());
}); }
apply_model(&mut body, &request.model, config.max_output_tokens)?; apply_model(&mut body, &request.model, config.max_output_tokens)?;
merge_extra_params(&mut body, &request.model.extra_params)?; merge_extra_params(&mut body, &request.model.extra_params)?;
apply_openai_prompt_cache_key(&mut body, &request.model.model_id)?; apply_openai_prompt_cache_key(&mut body, &request.model.model_id)?;