assistant2: Add Thread::send_to_model
method (#25703)
This PR adds a new `send_to_model` method to the `Thread` to encapsulate more of the thread-specific capabilities. We then call this in `MessageEditor::send_to_model`. Release Notes: - N/A
This commit is contained in:
parent
f0dec2f576
commit
9822d9673c
2 changed files with 30 additions and 20 deletions
|
@ -7,7 +7,7 @@ use gpui::{
|
||||||
pulsating_between, Animation, AnimationExt, App, DismissEvent, Entity, Focusable, Subscription,
|
pulsating_between, Animation, AnimationExt, App, DismissEvent, Entity, Focusable, Subscription,
|
||||||
TextStyle, WeakEntity,
|
TextStyle, WeakEntity,
|
||||||
};
|
};
|
||||||
use language_model::{LanguageModelRegistry, LanguageModelRequestTool};
|
use language_model::LanguageModelRegistry;
|
||||||
use language_model_selector::LanguageModelSelector;
|
use language_model_selector::LanguageModelSelector;
|
||||||
use rope::Point;
|
use rope::Point;
|
||||||
use settings::Settings;
|
use settings::Settings;
|
||||||
|
@ -205,22 +205,7 @@ impl MessageEditor {
|
||||||
.update(&mut cx, |thread, cx| {
|
.update(&mut cx, |thread, cx| {
|
||||||
let context = context_store.read(cx).snapshot(cx).collect::<Vec<_>>();
|
let context = context_store.read(cx).snapshot(cx).collect::<Vec<_>>();
|
||||||
thread.insert_user_message(user_message, context, cx);
|
thread.insert_user_message(user_message, context, cx);
|
||||||
let mut request = thread.to_completion_request(request_kind, cx);
|
thread.send_to_model(model, request_kind, use_tools, cx);
|
||||||
|
|
||||||
if use_tools {
|
|
||||||
request.tools = thread
|
|
||||||
.tools()
|
|
||||||
.tools(cx)
|
|
||||||
.into_iter()
|
|
||||||
.map(|tool| LanguageModelRequestTool {
|
|
||||||
name: tool.name(),
|
|
||||||
description: tool.description(),
|
|
||||||
input_schema: tool.input_schema(),
|
|
||||||
})
|
|
||||||
.collect();
|
|
||||||
}
|
|
||||||
|
|
||||||
thread.stream_completion(request, model, cx)
|
|
||||||
})
|
})
|
||||||
.ok();
|
.ok();
|
||||||
})
|
})
|
||||||
|
|
|
@ -9,9 +9,9 @@ use futures::{FutureExt as _, StreamExt as _};
|
||||||
use gpui::{App, Context, EventEmitter, SharedString, Task};
|
use gpui::{App, Context, EventEmitter, SharedString, Task};
|
||||||
use language_model::{
|
use language_model::{
|
||||||
LanguageModel, LanguageModelCompletionEvent, LanguageModelRegistry, LanguageModelRequest,
|
LanguageModel, LanguageModelCompletionEvent, LanguageModelRegistry, LanguageModelRequest,
|
||||||
LanguageModelRequestMessage, LanguageModelToolResult, LanguageModelToolUse,
|
LanguageModelRequestMessage, LanguageModelRequestTool, LanguageModelToolResult,
|
||||||
LanguageModelToolUseId, MaxMonthlySpendReachedError, MessageContent, PaymentRequiredError,
|
LanguageModelToolUse, LanguageModelToolUseId, MaxMonthlySpendReachedError, MessageContent,
|
||||||
Role, StopReason,
|
PaymentRequiredError, Role, StopReason,
|
||||||
};
|
};
|
||||||
use serde::{Deserialize, Serialize};
|
use serde::{Deserialize, Serialize};
|
||||||
use util::{post_inc, TryFutureExt as _};
|
use util::{post_inc, TryFutureExt as _};
|
||||||
|
@ -314,6 +314,31 @@ impl Thread {
|
||||||
text
|
text
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn send_to_model(
|
||||||
|
&mut self,
|
||||||
|
model: Arc<dyn LanguageModel>,
|
||||||
|
request_kind: RequestKind,
|
||||||
|
use_tools: bool,
|
||||||
|
cx: &mut Context<Self>,
|
||||||
|
) {
|
||||||
|
let mut request = self.to_completion_request(request_kind, cx);
|
||||||
|
|
||||||
|
if use_tools {
|
||||||
|
request.tools = self
|
||||||
|
.tools()
|
||||||
|
.tools(cx)
|
||||||
|
.into_iter()
|
||||||
|
.map(|tool| LanguageModelRequestTool {
|
||||||
|
name: tool.name(),
|
||||||
|
description: tool.description(),
|
||||||
|
input_schema: tool.input_schema(),
|
||||||
|
})
|
||||||
|
.collect();
|
||||||
|
}
|
||||||
|
|
||||||
|
self.stream_completion(request, model, cx);
|
||||||
|
}
|
||||||
|
|
||||||
pub fn to_completion_request(
|
pub fn to_completion_request(
|
||||||
&self,
|
&self,
|
||||||
request_kind: RequestKind,
|
request_kind: RequestKind,
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue