# tool_choice और Parallel Calls — AI Agents और Tool Use

Source: https://www.geekswithgeeks.com/hi/ai-agents-mcp/use-choice-parallel

> नियंत्रित करें कि 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 रखता है, इसलिए क्रम मायने नहीं रखता। यह जैसा दिखाया गया वैसा ही चला।

```python
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 को क्रम से चलाना पड़ सकता है।

**Quiz:** Parallel tool results को अनुरोधों से कैसे मिलाया जाता है?

- [x] tool_use id से
- [ ] उनके ख़त्म होने के क्रम से
- [ ] वर्णमाला के क्रम से
- [ ] फ़ाइल आकार से

*Answer:* tool_use id से. हर tool_result उस call की tool_use_id रखता है जिसका वह उत्तर है।
