Execute 执行工具
(ctx context.Context, input map[string]any, tc *tools.ToolContext)
| 214 | |
| 215 | // Execute 执行工具 |
| 216 | func (rt *ReasoningTool) Execute(ctx context.Context, input map[string]any, tc *tools.ToolContext) (any, error) { |
| 217 | query, ok := input["query"].(string) |
| 218 | if !ok || query == "" { |
| 219 | return map[string]any{ |
| 220 | "ok": false, |
| 221 | "error": "query is required", |
| 222 | }, nil |
| 223 | } |
| 224 | |
| 225 | // 执行推理 |
| 226 | chain, err := rt.engine.Reason(ctx, query, "") |
| 227 | if err != nil { |
| 228 | return map[string]any{ |
| 229 | "ok": false, |
| 230 | "error": fmt.Sprintf("reasoning failed: %v", err), |
| 231 | }, nil |
| 232 | } |
| 233 | |
| 234 | // 生成摘要 |
| 235 | summary := chain.Summary() |
| 236 | |
| 237 | return map[string]any{ |
| 238 | "ok": true, |
| 239 | "output": summary, |
| 240 | "metadata": map[string]any{ |
| 241 | "chain_id": chain.ID, |
| 242 | "step_count": len(chain.Steps), |
| 243 | "status": chain.Status, |
| 244 | }, |
| 245 | }, nil |
| 246 | } |
| 247 | |
| 248 | // Prompt 返回工具提示 |
| 249 | func (rt *ReasoningTool) Prompt() string { |