summaryrefslogtreecommitdiffstats
path: root/src/config/session.rs
diff options
context:
space:
mode:
authorsigoden <sigoden@gmail.com>2024-11-14 06:03:06 +0800
committerGitHub <noreply@github.com>2024-11-14 06:03:06 +0800
commitcfa9217422dfa6cf10bed6e6e3fab0722f58588d (patch)
treef004b226caae309c860914e7393e516464eecee8 /src/config/session.rs
parentff0ea19b48a18e9a1849bd2a653173a3ed4e4560 (diff)
downloadaichat-cfa9217422dfa6cf10bed6e6e3fab0722f58588d.tar.gz
feat: save function calls in the session (#994)
Diffstat (limited to 'src/config/session.rs')
-rw-r--r--src/config/session.rs22
1 files changed, 19 insertions, 3 deletions
diff --git a/src/config/session.rs b/src/config/session.rs
index c072d1c..34d6393 100644
--- a/src/config/session.rs
+++ b/src/config/session.rs
@@ -160,7 +160,11 @@ impl Session {
Ok(output)
}
- pub fn render(&self, render: &mut MarkdownRender) -> Result<String> {
+ pub fn render(
+ &self,
+ render: &mut MarkdownRender,
+ agent_info: &Option<(String, Vec<String>)>,
+ ) -> Result<String> {
let mut items = vec![];
if let Some(path) = &self.path {
@@ -205,7 +209,10 @@ impl Session {
for message in &self.messages {
match message.role {
MessageRole::System => {
- lines.push(render.render(&message.content.render_input(resolve_url_fn)));
+ lines.push(
+ render
+ .render(&message.content.render_input(resolve_url_fn, agent_info)),
+ );
}
MessageRole::Assistant => {
if let MessageContent::Text(text) = &message.content {
@@ -217,9 +224,12 @@ impl Session {
lines.push(format!(
"{}){}",
self.name,
- message.content.render_input(resolve_url_fn)
+ message.content.render_input(resolve_url_fn, agent_info)
));
}
+ MessageRole::Tool => {
+ lines.push(message.content.render_input(resolve_url_fn, agent_info));
+ }
}
}
}
@@ -409,6 +419,12 @@ impl Session {
.push(Message::new(MessageRole::User, input.message_content()));
}
self.data_urls.extend(input.data_urls());
+ if let Some(tool_results) = input.tool_results() {
+ self.messages.push(Message::new(
+ MessageRole::Tool,
+ MessageContent::ToolResults(tool_results.clone()),
+ ))
+ }
self.messages.push(Message::new(
MessageRole::Assistant,
MessageContent::Text(output.to_string()),