agent2: Set thread_id, prompt_id, temperature on request (#36246)
Release Notes: - N/A
This commit is contained in:
parent
10a2426a58
commit
1e41d86b31
1 changed files with 54 additions and 3 deletions
|
@ -28,6 +28,48 @@ use smol::stream::StreamExt;
|
||||||
use std::{cell::RefCell, collections::BTreeMap, path::Path, rc::Rc, sync::Arc};
|
use std::{cell::RefCell, collections::BTreeMap, path::Path, rc::Rc, sync::Arc};
|
||||||
use std::{fmt::Write, ops::Range};
|
use std::{fmt::Write, ops::Range};
|
||||||
use util::{ResultExt, markdown::MarkdownCodeBlock};
|
use util::{ResultExt, markdown::MarkdownCodeBlock};
|
||||||
|
use uuid::Uuid;
|
||||||
|
|
||||||
|
#[derive(
|
||||||
|
Debug, PartialEq, Eq, PartialOrd, Ord, Hash, Clone, Serialize, Deserialize, JsonSchema,
|
||||||
|
)]
|
||||||
|
pub struct ThreadId(Arc<str>);
|
||||||
|
|
||||||
|
impl ThreadId {
|
||||||
|
pub fn new() -> Self {
|
||||||
|
Self(Uuid::new_v4().to_string().into())
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl std::fmt::Display for ThreadId {
|
||||||
|
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
|
||||||
|
write!(f, "{}", self.0)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl From<&str> for ThreadId {
|
||||||
|
fn from(value: &str) -> Self {
|
||||||
|
Self(value.into())
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// The ID of the user prompt that initiated a request.
|
||||||
|
///
|
||||||
|
/// This equates to the user physically submitting a message to the model (e.g., by pressing the Enter key).
|
||||||
|
#[derive(Debug, PartialEq, Eq, PartialOrd, Ord, Hash, Clone, Serialize, Deserialize)]
|
||||||
|
pub struct PromptId(Arc<str>);
|
||||||
|
|
||||||
|
impl PromptId {
|
||||||
|
pub fn new() -> Self {
|
||||||
|
Self(Uuid::new_v4().to_string().into())
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl std::fmt::Display for PromptId {
|
||||||
|
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
|
||||||
|
write!(f, "{}", self.0)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#[derive(Debug, Clone, PartialEq, Eq)]
|
#[derive(Debug, Clone, PartialEq, Eq)]
|
||||||
pub enum Message {
|
pub enum Message {
|
||||||
|
@ -412,6 +454,8 @@ pub struct ToolCallAuthorization {
|
||||||
}
|
}
|
||||||
|
|
||||||
pub struct Thread {
|
pub struct Thread {
|
||||||
|
id: ThreadId,
|
||||||
|
prompt_id: PromptId,
|
||||||
messages: Vec<Message>,
|
messages: Vec<Message>,
|
||||||
completion_mode: CompletionMode,
|
completion_mode: CompletionMode,
|
||||||
/// Holds the task that handles agent interaction until the end of the turn.
|
/// Holds the task that handles agent interaction until the end of the turn.
|
||||||
|
@ -442,6 +486,8 @@ impl Thread {
|
||||||
) -> Self {
|
) -> Self {
|
||||||
let profile_id = AgentSettings::get_global(cx).default_profile.clone();
|
let profile_id = AgentSettings::get_global(cx).default_profile.clone();
|
||||||
Self {
|
Self {
|
||||||
|
id: ThreadId::new(),
|
||||||
|
prompt_id: PromptId::new(),
|
||||||
messages: Vec::new(),
|
messages: Vec::new(),
|
||||||
completion_mode: CompletionMode::Normal,
|
completion_mode: CompletionMode::Normal,
|
||||||
running_turn: None,
|
running_turn: None,
|
||||||
|
@ -553,6 +599,7 @@ impl Thread {
|
||||||
T: Into<UserMessageContent>,
|
T: Into<UserMessageContent>,
|
||||||
{
|
{
|
||||||
log::info!("Thread::send called with model: {:?}", self.model.name());
|
log::info!("Thread::send called with model: {:?}", self.model.name());
|
||||||
|
self.advance_prompt_id();
|
||||||
|
|
||||||
let content = content.into_iter().map(Into::into).collect::<Vec<_>>();
|
let content = content.into_iter().map(Into::into).collect::<Vec<_>>();
|
||||||
log::debug!("Thread::send content: {:?}", content);
|
log::debug!("Thread::send content: {:?}", content);
|
||||||
|
@ -976,15 +1023,15 @@ impl Thread {
|
||||||
log::info!("Request includes {} tools", tools.len());
|
log::info!("Request includes {} tools", tools.len());
|
||||||
|
|
||||||
let request = LanguageModelRequest {
|
let request = LanguageModelRequest {
|
||||||
thread_id: None,
|
thread_id: Some(self.id.to_string()),
|
||||||
prompt_id: None,
|
prompt_id: Some(self.prompt_id.to_string()),
|
||||||
intent: Some(completion_intent),
|
intent: Some(completion_intent),
|
||||||
mode: Some(self.completion_mode.into()),
|
mode: Some(self.completion_mode.into()),
|
||||||
messages,
|
messages,
|
||||||
tools,
|
tools,
|
||||||
tool_choice: None,
|
tool_choice: None,
|
||||||
stop: Vec::new(),
|
stop: Vec::new(),
|
||||||
temperature: None,
|
temperature: AgentSettings::temperature_for_model(self.model(), cx),
|
||||||
thinking_allowed: true,
|
thinking_allowed: true,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -1072,6 +1119,10 @@ impl Thread {
|
||||||
|
|
||||||
markdown
|
markdown
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn advance_prompt_id(&mut self) {
|
||||||
|
self.prompt_id = PromptId::new();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub trait AgentTool
|
pub trait AgentTool
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue