mirror of
https://github.com/outbackdingo/optimclaw.git
synced 2026-08-26 15:40:18 +00:00
feat: support per-request model override in /v1/chat/completions (#103)
* feat: support per-request model override for /v1/chat/completions - add optional model override to completion request types\n- forward request model through gateway, worker, and orchestrator proxy paths\n- use request model in NEAR AI providers with fallback to active model\n- replace model-mismatch integration test with override propagation checks\n- update FEATURE_PARITY.md note for OpenAI-compatible API behavior\n\nRefs #49 * Wire gateway OpenAI-compatible routes to active LLM provider * Validate OpenAI model name length before streaming * Address PR103 review feedback on model override and validation * Report effective model in OpenAI-compatible responses * Use async mutexes in OpenAI compatibility integration tests * fix tests for per-request model field in response cache * fix formatting and clippy lint after main merge * Fix model override reporting and cache correctness --------- Co-authored-by: Illia Polosukhin <[email protected]>
This commit is contained in:
co-authored by
Illia Polosukhin
parent
89fdd81420
commit
ccf60055f4
@@ -40,6 +40,7 @@ pub struct JobDescription {
|
||||
#[derive(Debug, Serialize, Deserialize)]
|
||||
pub struct ProxyCompletionRequest {
|
||||
pub messages: Vec<ChatMessage>,
|
||||
pub model: Option<String>,
|
||||
pub max_tokens: Option<u32>,
|
||||
pub temperature: Option<f32>,
|
||||
pub stop_sequences: Option<Vec<String>>,
|
||||
@@ -57,6 +58,7 @@ pub struct ProxyCompletionResponse {
|
||||
pub struct ProxyToolCompletionRequest {
|
||||
pub messages: Vec<ChatMessage>,
|
||||
pub tools: Vec<ToolDefinition>,
|
||||
pub model: Option<String>,
|
||||
pub max_tokens: Option<u32>,
|
||||
pub temperature: Option<f32>,
|
||||
pub tool_choice: Option<String>,
|
||||
@@ -210,6 +212,7 @@ impl WorkerHttpClient {
|
||||
) -> Result<CompletionResponse, WorkerError> {
|
||||
let proxy_req = ProxyCompletionRequest {
|
||||
messages: request.messages.clone(),
|
||||
model: request.model.clone(),
|
||||
max_tokens: request.max_tokens,
|
||||
temperature: request.temperature,
|
||||
stop_sequences: request.stop_sequences.clone(),
|
||||
@@ -236,6 +239,7 @@ impl WorkerHttpClient {
|
||||
let proxy_req = ProxyToolCompletionRequest {
|
||||
messages: request.messages.clone(),
|
||||
tools: request.tools.clone(),
|
||||
model: request.model.clone(),
|
||||
max_tokens: request.max_tokens,
|
||||
temperature: request.temperature,
|
||||
tool_choice: request.tool_choice.clone(),
|
||||
|
||||
Reference in New Issue
Block a user