yym68686 commited on
Commit
894ff24
·
1 Parent(s): 2ec0842

Fix the bug where Claude cannot use tool use.

Browse files
Files changed (1) hide show
  1. request.py +10 -8
request.py CHANGED
@@ -387,9 +387,10 @@ async def get_vertex_claude_payload(request, engine, provider):
387
 
388
  messages = []
389
  system_prompt = None
 
390
  for msg in request.messages:
391
- tool_calls = None
392
  tool_call_id = None
 
393
  if isinstance(msg.content, list):
394
  content = []
395
  for item in msg.content:
@@ -402,6 +403,7 @@ async def get_vertex_claude_payload(request, engine, provider):
402
  else:
403
  content = msg.content
404
  tool_calls = msg.tool_calls
 
405
  tool_call_id = msg.tool_call_id
406
 
407
  if tool_calls:
@@ -414,11 +416,10 @@ async def get_vertex_claude_payload(request, engine, provider):
414
  "input": json.loads(tool_call.function.arguments),
415
  })
416
  messages.append({"role": msg.role, "content": tool_calls_list})
417
- elif tool_call_id and tool_calls:
418
- tool_call = tool_calls[0]
419
  messages.append({"role": "user", "content": [{
420
  "type": "tool_result",
421
- "tool_use_id": tool_call.id,
422
  "content": content
423
  }]})
424
  elif msg.role != "system":
@@ -650,9 +651,10 @@ async def get_claude_payload(request, engine, provider):
650
 
651
  messages = []
652
  system_prompt = None
 
653
  for msg in request.messages:
654
- tool_calls = None
655
  tool_call_id = None
 
656
  if isinstance(msg.content, list):
657
  content = []
658
  for item in msg.content:
@@ -665,6 +667,7 @@ async def get_claude_payload(request, engine, provider):
665
  else:
666
  content = msg.content
667
  tool_calls = msg.tool_calls
 
668
  tool_call_id = msg.tool_call_id
669
 
670
  if tool_calls:
@@ -677,11 +680,10 @@ async def get_claude_payload(request, engine, provider):
677
  "input": json.loads(tool_call.function.arguments),
678
  })
679
  messages.append({"role": msg.role, "content": tool_calls_list})
680
- elif tool_call_id and tool_calls:
681
- tool_call = tool_calls[0]
682
  messages.append({"role": "user", "content": [{
683
  "type": "tool_result",
684
- "tool_use_id": tool_call.id,
685
  "content": content
686
  }]})
687
  elif msg.role != "system":
 
387
 
388
  messages = []
389
  system_prompt = None
390
+ tool_id = None
391
  for msg in request.messages:
 
392
  tool_call_id = None
393
+ tool_calls = None
394
  if isinstance(msg.content, list):
395
  content = []
396
  for item in msg.content:
 
403
  else:
404
  content = msg.content
405
  tool_calls = msg.tool_calls
406
+ tool_id = tool_calls[0].id if tool_calls else None or tool_id
407
  tool_call_id = msg.tool_call_id
408
 
409
  if tool_calls:
 
416
  "input": json.loads(tool_call.function.arguments),
417
  })
418
  messages.append({"role": msg.role, "content": tool_calls_list})
419
+ elif tool_call_id:
 
420
  messages.append({"role": "user", "content": [{
421
  "type": "tool_result",
422
+ "tool_use_id": tool_id,
423
  "content": content
424
  }]})
425
  elif msg.role != "system":
 
651
 
652
  messages = []
653
  system_prompt = None
654
+ tool_id = None
655
  for msg in request.messages:
 
656
  tool_call_id = None
657
+ tool_calls = None
658
  if isinstance(msg.content, list):
659
  content = []
660
  for item in msg.content:
 
667
  else:
668
  content = msg.content
669
  tool_calls = msg.tool_calls
670
+ tool_id = tool_calls[0].id if tool_calls else None or tool_id
671
  tool_call_id = msg.tool_call_id
672
 
673
  if tool_calls:
 
680
  "input": json.loads(tool_call.function.arguments),
681
  })
682
  messages.append({"role": msg.role, "content": tool_calls_list})
683
+ elif tool_call_id:
 
684
  messages.append({"role": "user", "content": [{
685
  "type": "tool_result",
686
+ "tool_use_id": tool_id,
687
  "content": content
688
  }]})
689
  elif msg.role != "system":