assistant: Track completions for each CodegenAlternative (#19999)
Release Notes: - N/A Co-authored-by: Bennet Bo Fenner <bennet@zed.dev>
This commit is contained in:
parent
ebdc255b73
commit
da7670cd6f
1 changed files with 7 additions and 0 deletions
|
@ -2562,6 +2562,7 @@ pub struct CodegenAlternative {
|
||||||
line_operations: Vec<LineOperation>,
|
line_operations: Vec<LineOperation>,
|
||||||
request: Option<LanguageModelRequest>,
|
request: Option<LanguageModelRequest>,
|
||||||
elapsed_time: Option<f64>,
|
elapsed_time: Option<f64>,
|
||||||
|
completion: Option<String>,
|
||||||
message_id: Option<String>,
|
message_id: Option<String>,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2637,6 +2638,7 @@ impl CodegenAlternative {
|
||||||
range,
|
range,
|
||||||
request: None,
|
request: None,
|
||||||
elapsed_time: None,
|
elapsed_time: None,
|
||||||
|
completion: None,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2849,6 +2851,9 @@ impl CodegenAlternative {
|
||||||
self.diff = Diff::default();
|
self.diff = Diff::default();
|
||||||
self.status = CodegenStatus::Pending;
|
self.status = CodegenStatus::Pending;
|
||||||
let mut edit_start = self.range.start.to_offset(&snapshot);
|
let mut edit_start = self.range.start.to_offset(&snapshot);
|
||||||
|
let completion = Arc::new(Mutex::new(String::new()));
|
||||||
|
let completion_clone = completion.clone();
|
||||||
|
|
||||||
self.generation = cx.spawn(|codegen, mut cx| {
|
self.generation = cx.spawn(|codegen, mut cx| {
|
||||||
async move {
|
async move {
|
||||||
let stream = stream.await;
|
let stream = stream.await;
|
||||||
|
@ -2880,6 +2885,7 @@ impl CodegenAlternative {
|
||||||
response_latency = Some(request_start.elapsed());
|
response_latency = Some(request_start.elapsed());
|
||||||
}
|
}
|
||||||
let chunk = chunk?;
|
let chunk = chunk?;
|
||||||
|
completion_clone.lock().push_str(&chunk);
|
||||||
|
|
||||||
let mut lines = chunk.split('\n').peekable();
|
let mut lines = chunk.split('\n').peekable();
|
||||||
while let Some(line) = lines.next() {
|
while let Some(line) = lines.next() {
|
||||||
|
@ -3049,6 +3055,7 @@ impl CodegenAlternative {
|
||||||
this.status = CodegenStatus::Done;
|
this.status = CodegenStatus::Done;
|
||||||
}
|
}
|
||||||
this.elapsed_time = Some(elapsed_time);
|
this.elapsed_time = Some(elapsed_time);
|
||||||
|
this.completion = Some(completion.lock().clone());
|
||||||
cx.emit(CodegenEvent::Finished);
|
cx.emit(CodegenEvent::Finished);
|
||||||
cx.notify();
|
cx.notify();
|
||||||
})
|
})
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue