Commit 085f908
committed
feat(ai): add concurrent execution control for tools
This commit adds support for configuring whether tools can be executed
concurrently or must be executed sequentially.
Changes:
- Add Concurrent() method to Tool interface to query concurrency support
- Add WithConcurrent() option for configuring tool concurrency settings
- Update all tool definition functions (DefineTool, NewTool, etc.) to
accept optional ToolOption parameters using the functional options pattern
- Store concurrency flag in tool metadata and tool struct
- Modify handleToolRequests() to execute sequential tools first, then
concurrent tools in parallel
- Extract toolExecution struct and executeToolRequest() helper function
to improve code organization and eliminate duplication
By default, all tools support concurrent execution to maintain backward
compatibility. Tools can opt-out by using WithConcurrent(false).
Example usage:
tool := ai.DefineTool(registry, "myTool", "description",
func(ctx *ai.ToolContext, input string) (string, error) {
return "result", nil
},
ai.WithConcurrent(false)) // Sequential execution1 parent c1ad0dc commit 085f908
2 files changed
+150
-54
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
607 | 607 | | |
608 | 608 | | |
609 | 609 | | |
| 610 | + | |
| 611 | + | |
| 612 | + | |
| 613 | + | |
| 614 | + | |
| 615 | + | |
| 616 | + | |
| 617 | + | |
| 618 | + | |
| 619 | + | |
| 620 | + | |
| 621 | + | |
| 622 | + | |
| 623 | + | |
| 624 | + | |
| 625 | + | |
| 626 | + | |
| 627 | + | |
| 628 | + | |
| 629 | + | |
| 630 | + | |
| 631 | + | |
| 632 | + | |
| 633 | + | |
| 634 | + | |
| 635 | + | |
| 636 | + | |
| 637 | + | |
| 638 | + | |
| 639 | + | |
| 640 | + | |
| 641 | + | |
| 642 | + | |
| 643 | + | |
| 644 | + | |
| 645 | + | |
| 646 | + | |
| 647 | + | |
| 648 | + | |
| 649 | + | |
| 650 | + | |
| 651 | + | |
| 652 | + | |
| 653 | + | |
| 654 | + | |
| 655 | + | |
610 | 656 | | |
611 | 657 | | |
612 | | - | |
| 658 | + | |
| 659 | + | |
613 | 660 | | |
614 | 661 | | |
615 | 662 | | |
| |||
624 | 671 | | |
625 | 672 | | |
626 | 673 | | |
627 | | - | |
| 674 | + | |
628 | 675 | | |
629 | 676 | | |
630 | 677 | | |
| 678 | + | |
| 679 | + | |
| 680 | + | |
| 681 | + | |
631 | 682 | | |
632 | 683 | | |
633 | 684 | | |
634 | 685 | | |
635 | 686 | | |
636 | | - | |
637 | | - | |
638 | | - | |
639 | | - | |
640 | | - | |
641 | | - | |
642 | | - | |
643 | | - | |
644 | | - | |
645 | | - | |
646 | | - | |
647 | | - | |
648 | | - | |
649 | | - | |
650 | | - | |
651 | | - | |
652 | | - | |
653 | | - | |
654 | | - | |
655 | | - | |
656 | | - | |
657 | | - | |
658 | | - | |
659 | | - | |
660 | | - | |
| 687 | + | |
| 688 | + | |
| 689 | + | |
| 690 | + | |
| 691 | + | |
| 692 | + | |
661 | 693 | | |
662 | | - | |
663 | | - | |
664 | | - | |
| 694 | + | |
| 695 | + | |
| 696 | + | |
| 697 | + | |
| 698 | + | |
| 699 | + | |
665 | 700 | | |
666 | | - | |
667 | | - | |
668 | | - | |
| 701 | + | |
| 702 | + | |
| 703 | + | |
| 704 | + | |
| 705 | + | |
| 706 | + | |
669 | 707 | | |
670 | | - | |
671 | | - | |
672 | | - | |
673 | | - | |
674 | | - | |
675 | | - | |
| 708 | + | |
| 709 | + | |
| 710 | + | |
| 711 | + | |
676 | 712 | | |
677 | | - | |
678 | | - | |
| 713 | + | |
| 714 | + | |
| 715 | + | |
| 716 | + | |
| 717 | + | |
679 | 718 | | |
680 | 719 | | |
681 | 720 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
54 | 54 | | |
55 | 55 | | |
56 | 56 | | |
| 57 | + | |
57 | 58 | | |
58 | 59 | | |
59 | 60 | | |
| |||
71 | 72 | | |
72 | 73 | | |
73 | 74 | | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
74 | 78 | | |
75 | 79 | | |
76 | 80 | | |
| |||
127 | 131 | | |
128 | 132 | | |
129 | 133 | | |
| 134 | + | |
| 135 | + | |
| 136 | + | |
| 137 | + | |
| 138 | + | |
| 139 | + | |
| 140 | + | |
| 141 | + | |
| 142 | + | |
| 143 | + | |
| 144 | + | |
| 145 | + | |
| 146 | + | |
| 147 | + | |
| 148 | + | |
| 149 | + | |
| 150 | + | |
130 | 151 | | |
| 152 | + | |
131 | 153 | | |
132 | 154 | | |
133 | 155 | | |
134 | 156 | | |
| 157 | + | |
135 | 158 | | |
136 | | - | |
| 159 | + | |
137 | 160 | | |
138 | | - | |
| 161 | + | |
139 | 162 | | |
140 | 163 | | |
141 | 164 | | |
| 165 | + | |
142 | 166 | | |
143 | 167 | | |
144 | 168 | | |
145 | 169 | | |
146 | 170 | | |
| 171 | + | |
147 | 172 | | |
148 | | - | |
| 173 | + | |
149 | 174 | | |
150 | | - | |
| 175 | + | |
151 | 176 | | |
152 | 177 | | |
153 | 178 | | |
154 | | - | |
155 | | - | |
156 | | - | |
| 179 | + | |
| 180 | + | |
| 181 | + | |
157 | 182 | | |
158 | | - | |
| 183 | + | |
159 | 184 | | |
160 | 185 | | |
161 | 186 | | |
162 | | - | |
163 | | - | |
164 | | - | |
| 187 | + | |
| 188 | + | |
| 189 | + | |
165 | 190 | | |
166 | | - | |
| 191 | + | |
| 192 | + | |
| 193 | + | |
| 194 | + | |
| 195 | + | |
| 196 | + | |
| 197 | + | |
| 198 | + | |
| 199 | + | |
| 200 | + | |
| 201 | + | |
| 202 | + | |
| 203 | + | |
| 204 | + | |
| 205 | + | |
| 206 | + | |
| 207 | + | |
| 208 | + | |
| 209 | + | |
| 210 | + | |
| 211 | + | |
167 | 212 | | |
168 | 213 | | |
169 | 214 | | |
| |||
206 | 251 | | |
207 | 252 | | |
208 | 253 | | |
| 254 | + | |
| 255 | + | |
| 256 | + | |
| 257 | + | |
| 258 | + | |
209 | 259 | | |
210 | 260 | | |
211 | 261 | | |
| |||
241 | 291 | | |
242 | 292 | | |
243 | 293 | | |
244 | | - | |
| 294 | + | |
| 295 | + | |
| 296 | + | |
| 297 | + | |
| 298 | + | |
| 299 | + | |
| 300 | + | |
| 301 | + | |
245 | 302 | | |
246 | 303 | | |
247 | 304 | | |
| |||
0 commit comments