Commit 653fb9c 1 parent aa7909e commit 653fb9c Copy full SHA for 653fb9c
File tree 1 file changed +16
-9
lines changed
nerve-core/src/agent/generator
1 file changed +16
-9
lines changed Original file line number Diff line number Diff line change @@ -266,16 +266,23 @@ impl Client for OpenAIClient {
266
266
let mut attributes = HashMap :: new ( ) ;
267
267
let mut payload = None ;
268
268
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
+ } ) ?;
277
277
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 ( ) ;
279
286
if name == "payload" {
280
287
payload = Some ( str_val) ;
281
288
} else {
You can’t perform that action at this time.
0 commit comments