पाठ 7 / 25
tool_choice और Parallel Calls
नियंत्रित करें कि tools उपयोग हों या नहीं, और एक reply में लौटे कई tool calls सँभालें।
दिशा देना और एक साथ चलाना
Claude API में tool_choice tool उपयोग नियंत्रित करता है: auto में model तय करता है, any उसे कोई tool उपयोग करने पर बाध्य करता है, tool ख़ास tool पर, और none tools बंद करता है। जब calls स्वतंत्र हों तो model एक reply में कई tool_use blocks भी लौटा सकता है; आप सब चलाते हैं और हर block के लिए एक tool_result, id से मिलाकर, एक ही user message में लौटाते हैं।
Parallel नतीजे लौटाना
हर नतीजा अपने अनुरोध की id रखता है, इसलिए क्रम मायने नहीं रखता। यह जैसा दिखाया गया वैसा ही चला।
calls = [("c1", "get_balance", {"account_id": 1}),
("c2", "get_balance", {"account_id": 2})]
results = [{"tool_use_id": cid, "content": call_tool(n, a)["content"]}
for cid, n, a in calls]
print(results)
Output:
[{'tool_use_id': 'c1', 'content': 'account 1: 1500'}, {'tool_use_id': 'c2', 'content': 'account 2: 1500'}]स्वतंत्र calls साथ चलाएँ
तीन tool calls एक-दूसरे पर निर्भर न हों तो प्रतीक्षा घटाने के लिए उन्हें threads या asyncio से चलाएँ। साझा state बदलने वाले calls को क्रम से चलाना पड़ सकता है।
त्वरित जाँच: Parallel tool results को अनुरोधों से कैसे मिलाया जाता है?
- tool_use id से
- उनके ख़त्म होने के क्रम से
- वर्णमाला के क्रम से
- फ़ाइल आकार से
Answer
tool_use id से — हर tool_result उस call की tool_use_id रखता है जिसका वह उत्तर है।