diff --git a/crates/ai/src/assistant.rs b/crates/ai/src/assistant.rs index 4aca6ae626990f94f5001ed518fceb72b33c0dfe..46756ad5693b9b7a3928b4600c9f2892471d256a 100644 --- a/crates/ai/src/assistant.rs +++ b/crates/ai/src/assistant.rs @@ -581,9 +581,6 @@ impl AssistantPanel { None }; let language_name = language_name.as_deref(); - let model = settings::get::(cx) - .default_open_ai_model - .clone(); let mut prompt = String::new(); if let Some(language_name) = language_name { @@ -673,25 +670,30 @@ impl AssistantPanel { writeln!(prompt, "Always wrap your response in a Markdown codeblock.").unwrap(); writeln!(prompt, "Never make remarks about the output.").unwrap(); - let mut request = OpenAIRequest { - model: model.full_name().into(), - messages: Vec::new(), - stream: true, - }; + let mut messages = Vec::new(); + let mut model = settings::get::(cx) + .default_open_ai_model + .clone(); if let Some(conversation) = conversation { let conversation = conversation.read(cx); let buffer = conversation.buffer.read(cx); - request.messages.extend( + messages.extend( conversation .messages(cx) .map(|message| message.to_open_ai_message(buffer)), ); + model = conversation.model.clone(); } - request.messages.push(RequestMessage { + messages.push(RequestMessage { role: Role::User, content: prompt, }); + let request = OpenAIRequest { + model: model.full_name().into(), + messages, + stream: true, + }; let response = stream_completion(api_key, cx.background().clone(), request); let editor = editor.downgrade();