feat: Add intelligent clarification feature in coordinate step for research queries (#613)

* fix: support local models by making thought field optional in Plan model

- Make thought field optional in Plan model to fix Pydantic validation errors with local models
- Add Ollama configuration example to conf.yaml.example
- Update documentation to include local model support
- Improve planner prompt with better JSON format requirements

Fixes local model integration issues where models like qwen3:14b would fail
due to missing thought field in JSON output.

* feat: Add intelligent clarification feature for research queries

- Add multi-turn clarification process to refine vague research questions
- Implement three-dimension clarification standard (Tech/App, Focus, Scope)
- Add clarification state management in coordinator node
- Update coordinator prompt with detailed clarification guidelines
- Add UI settings to enable/disable clarification feature (disabled by default)
- Update workflow to handle clarification rounds recursively
- Add comprehensive test coverage for clarification functionality
- Update documentation with clarification feature usage guide

Key components:
- src/graph/nodes.py: Core clarification logic and state management
- src/prompts/coordinator.md: Detailed clarification guidelines
- src/workflow.py: Recursive clarification handling
- web/: UI settings integration
- tests/: Comprehensive test coverage
- docs/: Updated configuration guide

* fix: Improve clarification conversation continuity

- Add comprehensive conversation history to clarification context
- Include previous exchanges summary in system messages
- Add explicit guidelines for continuing rounds in coordinator prompt
- Prevent LLM from starting new topics during clarification
- Ensure topic continuity across clarification rounds

Fixes issue where LLM would restart clarification instead of building upon previous exchanges.

* fix: Add conversation history to clarification context

* fix: resolve clarification feature message to planer, prompt, test issues

- Optimize coordinator.md prompt template for better clarification flow
- Simplify final message sent to planner after clarification
- Fix API key assertion issues in test_search.py

* fix: Add configurable max_clarification_rounds and comprehensive tests

- Add max_clarification_rounds parameter for external configuration
- Add comprehensive test cases for clarification feature in test_app.py
- Fixes issues found during interactive mode testing where:
  - Recursive call failed due to missing initial_state parameter
  - Clarification exited prematurely at max rounds
  - Incorrect logging of max rounds reached

* Move clarification tests to test_nodes.py and add max_clarification_rounds to zh.json
This commit is contained in:
jimmyuconn1982
2025-10-13 22:35:57 -07:00
committed by GitHub
parent 81c91dda43
commit 2510cc61de
26 changed files with 830 additions and 57 deletions

View File

@@ -44,9 +44,56 @@ Your primary responsibilities are:
- Respond in plain text with a polite rejection
- If you need to ask user for more context:
- Respond in plain text with an appropriate question
- **For vague or overly broad research questions**: Ask clarifying questions to narrow down the scope
- Examples needing clarification: "research AI", "analyze market", "AI impact on e-commerce"(which AI application?), "research cloud computing"(which aspect?)
- Ask about: specific applications, aspects, timeframe, geographic scope, or target audience
- Maximum 3 clarification rounds, then use `handoff_after_clarification()` tool
- For all other inputs (category 3 - which includes most questions):
- call `handoff_to_planner()` tool to handoff to planner for research without ANY thoughts.
# Clarification Process (When Enabled)
Goal: Get 2+ dimensions before handing off to planner.
## Three Key Dimensions
A specific research question needs at least 2 of these 3 dimensions:
1. Specific Tech/App: "Kubernetes", "GPT model" vs "cloud computing", "AI"
2. Clear Focus: "architecture design", "performance optimization" vs "technology aspect"
3. Scope: "2024 China e-commerce", "financial sector"
## When to Continue vs. Handoff
- 0-1 dimensions: Ask for missing ones with 3-5 concrete examples
- 2+ dimensions: Call handoff_to_planner() or handoff_after_clarification()
- Max rounds reached: Must call handoff_after_clarification() regardless
## Response Guidelines
When user responses are missing specific dimensions, ask clarifying questions:
**Missing specific technology:**
- User says: "AI technology"
- Ask: "Which specific technology: machine learning, natural language processing, computer vision, robotics, or deep learning?"
**Missing clear focus:**
- User says: "blockchain"
- Ask: "What aspect: technical implementation, market adoption, regulatory issues, or business applications?"
**Missing scope boundary:**
- User says: "renewable energy"
- Ask: "Which type (solar, wind, hydro), what geographic scope (global, specific country), and what time frame (current status, future trends)?"
## Continuing Rounds
When continuing clarification (rounds > 0):
1. Reference previous exchanges
2. Ask for missing dimensions only
3. Focus on gaps
4. Stay on topic
# Notes
- Always identify yourself as DeerFlow when relevant