Build an LLM request from a message
(&self, message: &AgentMessage)
| 143 | |
| 144 | /// Build an LLM request from a message |
| 145 | fn build_llm_request(&self, message: &AgentMessage) -> LlmRequest { |
| 146 | let mut messages = Vec::new(); |
| 147 | |
| 148 | // Add system prompt if available |
| 149 | if !self.config.system_prompt.is_empty() { |
| 150 | messages.push(crate::llm::LlmMessage::system(&self.config.system_prompt)); |
| 151 | } |
| 152 | |
| 153 | // Add the user message |
| 154 | let content = match &message.content { |
| 155 | MessageContent::Text(text) => text.clone(), |
| 156 | MessageContent::Data(data) => data.to_string(), |
| 157 | MessageContent::ToolCall { |
| 158 | tool_name, |
| 159 | parameters, |
| 160 | } => { |
| 161 | format!("Tool call: {tool_name} with parameters: {parameters}") |
| 162 | } |
| 163 | MessageContent::ToolResponse { |
| 164 | tool_name, |
| 165 | result, |
| 166 | success, |
| 167 | } => { |
| 168 | format!("Tool {tool_name} response (success: {success}): {result}") |
| 169 | } |
| 170 | MessageContent::Error { |
| 171 | error_code, |
| 172 | error_message, |
| 173 | } => { |
| 174 | format!("Error {error_code}: {error_message}") |
| 175 | } |
| 176 | }; |
| 177 | |
| 178 | messages.push(crate::llm::LlmMessage::user(content)); |
| 179 | |
| 180 | // Create request with messages |
| 181 | let mut request = LlmRequest::with_messages(messages); |
| 182 | |
| 183 | // Apply configuration |
| 184 | if let Some(max_tokens) = self.config.max_tokens { |
| 185 | request = request.with_max_tokens(max_tokens); |
| 186 | } |
| 187 | |
| 188 | if let Some(temperature) = self.config.temperature { |
| 189 | request = request.with_temperature(temperature); |
| 190 | } |
| 191 | |
| 192 | request |
| 193 | } |
| 194 | |
| 195 | /// Convert LLM response to agent message |
| 196 | fn llm_response_to_message( |
no test coverage detected