Skip to content

Commit 653fb9c

Browse files
committed
fix: better payload escaping
1 parent aa7909e commit 653fb9c

File tree

1 file changed

+16
-9
lines changed

1 file changed

+16
-9
lines changed

nerve-core/src/agent/generator/openai.rs

+16-9
Original file line numberDiff line numberDiff line change
@@ -266,16 +266,23 @@ impl Client for OpenAIClient {
266266
let mut attributes = HashMap::new();
267267
let mut payload = None;
268268

269-
let map: HashMap<String, String> = serde_json::from_str(&call.function.arguments)
270-
.map_err(|e| {
271-
log::error!(
272-
"failed to parse tool call arguments: {e} - {}",
273-
call.function.arguments
274-
);
275-
anyhow!(e)
276-
})?;
269+
let map: HashMap<String, serde_json::Value> =
270+
serde_json::from_str(&call.function.arguments).map_err(|e| {
271+
log::error!(
272+
"failed to parse tool call arguments: {e} - {}",
273+
call.function.arguments
274+
);
275+
anyhow!(e)
276+
})?;
277277
for (name, value) in map {
278-
let str_val = value.to_string().trim_matches('"').to_string();
278+
log::debug!("openai.tool_call.arg={} = {:?}", name, value);
279+
280+
let mut content = value.to_string();
281+
if let serde_json::Value::String(escaped_json) = &value {
282+
content = escaped_json.to_string();
283+
}
284+
285+
let str_val = content.trim_matches('"').to_string();
279286
if name == "payload" {
280287
payload = Some(str_val);
281288
} else {

0 commit comments

Comments
 (0)