diff options
| author | sigoden <sigoden@gmail.com> | 2024-11-14 06:03:06 +0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-11-14 06:03:06 +0800 |
| commit | cfa9217422dfa6cf10bed6e6e3fab0722f58588d (patch) | |
| tree | f004b226caae309c860914e7393e516464eecee8 /src/config/session.rs | |
| parent | ff0ea19b48a18e9a1849bd2a653173a3ed4e4560 (diff) | |
| download | aichat-cfa9217422dfa6cf10bed6e6e3fab0722f58588d.tar.gz | |
feat: save function calls in the session (#994)
Diffstat (limited to 'src/config/session.rs')
| -rw-r--r-- | src/config/session.rs | 22 |
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()), |
