Return OllamaResult from Message::tool_response instead of panicking
Replaced unwrap() with ? operator so serialization errors propagate as OllamaError::ResponseParseError instead of panicking. This is safer for a library API where callers should decide how to handle errors.
This commit is contained in:
@@ -74,7 +74,7 @@ async fn main() -> Result<(), Box<dyn Error>> {
|
||||
let tool_call = &response.message.tool_calls[0];
|
||||
let arg: GetWeatherArgs = serde_json::from_value(tool_call.function.arguments.clone())?;
|
||||
let result = get_weather(&arg.city);
|
||||
messages.push(Message::tool_response(&result));
|
||||
messages.push(Message::tool_response(&result)?);
|
||||
}
|
||||
Ok(())
|
||||
}
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
use serde::{Deserialize, Serialize};
|
||||
use serde_json::Value;
|
||||
|
||||
use crate::error::OllamaResult;
|
||||
use crate::types::common::Options;
|
||||
|
||||
#[derive(Clone, Debug, Serialize, Deserialize)]
|
||||
@@ -38,12 +39,12 @@ impl Message {
|
||||
}
|
||||
}
|
||||
|
||||
pub fn tool_response(content: &Value) -> Self {
|
||||
Message {
|
||||
content: serde_json::to_string(content).unwrap(),
|
||||
pub fn tool_response(content: &Value) -> OllamaResult<Self> {
|
||||
Ok(Message {
|
||||
content: serde_json::to_string(content)?,
|
||||
role: Role::Tool,
|
||||
tool_calls: vec![],
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user