Skip to main content

validation-driven-llm-workflow

Validation-driven LLM workflow pattern - using verification loops to ensure LLM-generated outputs are correct. Extracted from 'Generating Statistical Charts with Validation-Driven LLM Workflows' (arXiv 2026-05-01). Applicable to code generation, data visualization, document generation, and any task requiring correctness guarantees.

Quellinformationen

Repository
hiyenwong/ai_collection
Letzte Quellaktivität
4. Juni 2026 um 13:32
Erkannte Sprache von SKILL.md
Englisch
Sterne
2
Forks
0

Installationsoptionen

Standardmäßig ist der Prompt ausgewählt, der zuerst die Quelle prüft. Sie können zu einem direkten Befehl wechseln oder eine lokale Kopie herunterladen.

Quelldateien prüfen

Lesen Sie SKILL.md und alle von SkillsMP angezeigten Begleitdateien, bevor Sie sich für eine Installation entscheiden.

SKILL.md wird angezeigt

SKILL.md
Quellanweisungen · Schreibgeschützte Vorschau
name
validation-driven-llm-workflow
description
Validation-driven LLM workflow pattern - using verification loops to ensure LLM-generated outputs are correct. Extracted from 'Generating Statistical Charts with Validation-Driven LLM Workflows' (arXiv 2026-05-01). Applicable to code generation, data visualization, document generation, and any task requiring correctness guarantees.
category
llm-patterns
# Validation-Driven LLM Workflow ## Description A reusable pattern for ensuring LLM-generated outputs meet correctness criteria through iterative verification loops. Instead of trusting LLM output directly, this pattern wraps generation in a validate-regenerate cycle until the output passes verification or reaches a maximum iteration limit. ## Activation Keywords - validation-driven workflow - verify LLM output - LLM validation loop - 验证驱动工作流 - LLM 验证循环 - generate with verification - self-correcting generation ## Core Pattern ### Step 1: Define Validation Criteria Before generation, establish clear, measurable validation criteria: - **Syntax checks**: Code compiles, JSON parses, etc. - **Semantic checks**: Output matches expected format, contains required fields - **Execution checks**: Generated code runs without errors, produces expected results - **Domain checks**: Statistical chart has correct axis labels, data matches source ### Step 2: Generate Initial Output ``` prompt = "Generate {task_description}" output = llm.generate(prompt) ``` ### Step 3: Validate Output ``` validation_result = validator.check(output) if validation_result.passed: return output else: feedback = validation_result.feedback ``` ### Step 4: Regenerate with Feedback ``` improved_prompt = f"{original_prompt}\n\nPrevious attempt failed: {feedback}\nPlease fix these issues and regenerate." output = llm.generate(improved_prompt) ``` ### Step 5: Iterate with Limits ``` max_iterations = 3 for i in range(max_iterations): output = generate() result = validate(output) if result.passed: return output output = regenerate_with_feedback(result.feedback) return best_output_so_far # fallback ``` ## Implementation Examples ### Code Generation ```python def generate_validated_code(spec, max_retries=3): code = llm.generate(f"Write Python code: {spec}") for _ in range(max_retries): errors = run_syntax_check(code) if not errors: errors = run_unit_tests(code) if not errors: return code code = llm.generate(f"Fix these errors in the code:\n{errors}\n\nCode:\n{code}") return code ``` ### Data Visualization ```python def generate_validated_chart(data, chart_type, max_retries=3): spec = llm.generate(f"Create {chart_type} spec for this data: {data}") for _ in range(max_retries): chart = render_chart(spec, data) errors = validate_chart(chart) # check axes, labels, data integrity if not errors: return chart spec = llm.generate(f"Fix chart issues: {errors}\n\nCurrent spec: {spec}") return chart ``` ## Best Practices 1. **Make validators deterministic**: Use programmatic checks, not LLM-based validation (avoid LLM verifying LLM) 2. **Provide specific feedback**: Vague "this is wrong" feedback doesn't help; specify what failed and why 3. **Set reasonable iteration limits**: 3-5 retries is usually enough; more indicates a fundamental prompt issue 4. **Cache successful patterns**: When validation passes, save the prompt-output pair for future reference 5. **Graceful degradation**: Always return the best attempt, not just success/failure ## Error Handling | Error | Recovery | |-------|----------| | Validator always fails | Review validation criteria - may be too strict or wrong | | LLM produces same error repeatedly | Change the approach, not just the prompt | | Timeout on validation | Set timeout limits for execution-based validators | | Infinite regeneration loop | Hard cap iterations, return best result | ## Related Patterns - **Constraint-Guided Execution**: Add constraints to the validation criteria - **Self-Verification**: LLM verifies its own output (less reliable than external validators) - **Test-Driven Development**: Write tests first, then generate code to pass them ## Resources - Source paper: "Generating Statistical Charts with Validation-Driven LLM Workflows" (arXiv 2026-05-01) - Related: "RunAgent: Interpreting Natural-Language Plans with Constraint-Guided Execution"
Auf GitHub ansehen