beam_search_reasoning
Perform beam search reasoning to explore multiple solution paths for complex problems, maintaining top candidate sequences for step-by-step analysis.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| prompt | Yes | The problem or query to reason about | |
| thought | Yes | Current reasoning step | |
| thoughtNumber | Yes | Current step number | |
| totalThoughts | Yes | Total expected steps | |
| nextThoughtNeeded | Yes | Whether another step is needed | |
| beamWidth | No | Number of top paths to maintain (n-sampling) |
Implementation Reference
- src/tools/reasoning-tools.ts:87-136 (handler)The async handler function implementing the beam_search_reasoning tool logic: validates inputs, simulates beam search reasoning step, generates next thought placeholder, and returns structured JSON response.async ({ prompt, thought, thoughtNumber, totalThoughts, nextThoughtNeeded, beamWidth }) => { try { // Validate parameters if (!prompt) { throw new ValidationError("Prompt is required"); } if (!thought) { throw new ValidationError("Current thought is required"); } // In a real implementation, this would connect to an external Beam Search algorithm // For now, we'll simulate the reasoning process // Simulated next thought generation based on Beam Search let nextThought = ""; if (nextThoughtNeeded) { // Logic for generating next thought would go here // For now, we'll return a simple placeholder nextThought = `Beam Search Reasoning (Step ${thoughtNumber + 1}/${totalThoughts}): ` + `Considering ${beamWidth} alternative paths from "${thought.slice(0, 50)}...", ` + `the most promising direction is... ` + `[This would be actual Beam Search-based reasoning content]`; } return { content: [ { type: "text", text: JSON.stringify({ strategy: "beam_search", originalPrompt: prompt, currentThought: thought, thoughtNumber: thoughtNumber, totalThoughts: totalThoughts, nextThought: nextThought, complete: !nextThoughtNeeded || thoughtNumber >= totalThoughts }, null, 2) } ] }; } catch (error) { if (error instanceof ValidationError) { throw error; } else { throw new ReasoningError(`Beam Search reasoning failed: ${error instanceof Error ? error.message : String(error)}`); } } }
- src/tools/reasoning-tools.ts:79-86 (schema)Zod schema defining input parameters for the beam_search_reasoning tool: prompt, thought, thoughtNumber, totalThoughts, nextThoughtNeeded, and beamWidth.{ prompt: z.string().describe("The problem or query to reason about"), thought: z.string().describe("Current reasoning step"), thoughtNumber: z.number().int().min(1).describe("Current step number"), totalThoughts: z.number().int().min(1).describe("Total expected steps"), nextThoughtNeeded: z.boolean().describe("Whether another step is needed"), beamWidth: z.number().int().min(1).max(10).default(3).describe("Number of top paths to maintain (n-sampling)") },
- src/tools/reasoning-tools.ts:77-137 (registration)Local registration of the beam_search_reasoning tool within registerReasoningTools using server.tool(), including schema and inline handler.server.tool( "beam_search_reasoning", { prompt: z.string().describe("The problem or query to reason about"), thought: z.string().describe("Current reasoning step"), thoughtNumber: z.number().int().min(1).describe("Current step number"), totalThoughts: z.number().int().min(1).describe("Total expected steps"), nextThoughtNeeded: z.boolean().describe("Whether another step is needed"), beamWidth: z.number().int().min(1).max(10).default(3).describe("Number of top paths to maintain (n-sampling)") }, async ({ prompt, thought, thoughtNumber, totalThoughts, nextThoughtNeeded, beamWidth }) => { try { // Validate parameters if (!prompt) { throw new ValidationError("Prompt is required"); } if (!thought) { throw new ValidationError("Current thought is required"); } // In a real implementation, this would connect to an external Beam Search algorithm // For now, we'll simulate the reasoning process // Simulated next thought generation based on Beam Search let nextThought = ""; if (nextThoughtNeeded) { // Logic for generating next thought would go here // For now, we'll return a simple placeholder nextThought = `Beam Search Reasoning (Step ${thoughtNumber + 1}/${totalThoughts}): ` + `Considering ${beamWidth} alternative paths from "${thought.slice(0, 50)}...", ` + `the most promising direction is... ` + `[This would be actual Beam Search-based reasoning content]`; } return { content: [ { type: "text", text: JSON.stringify({ strategy: "beam_search", originalPrompt: prompt, currentThought: thought, thoughtNumber: thoughtNumber, totalThoughts: totalThoughts, nextThought: nextThought, complete: !nextThoughtNeeded || thoughtNumber >= totalThoughts }, null, 2) } ] }; } catch (error) { if (error instanceof ValidationError) { throw error; } else { throw new ReasoningError(`Beam Search reasoning failed: ${error instanceof Error ? error.message : String(error)}`); } } } );
- src/index.ts:22-22 (registration)Top-level registration call to registerReasoningTools(server) in the main MCP server setup, which includes the beam_search_reasoning tool.registerReasoningTools(server);