GetTool 获取或创建工具实例
(name string)
| 27 | |
| 28 | // GetTool 获取或创建工具实例 |
| 29 | func (b *ToolBridge) GetTool(name string) (tools.Tool, error) { |
| 30 | b.mu.Lock() |
| 31 | defer b.mu.Unlock() |
| 32 | |
| 33 | // 检查缓存 |
| 34 | if tool, exists := b.tools[name]; exists { |
| 35 | return tool, nil |
| 36 | } |
| 37 | |
| 38 | // 从 registry 创建 |
| 39 | tool, err := b.registry.Create(name, nil) |
| 40 | if err != nil { |
| 41 | return nil, fmt.Errorf("get tool %s: %w", name, err) |
| 42 | } |
| 43 | |
| 44 | b.tools[name] = tool |
| 45 | return tool, nil |
| 46 | } |
| 47 | |
| 48 | // CallToolInput 工具调用输入 |
| 49 | type CallToolInput struct { |
no test coverage detected