Synth AI
WorkshopCookbooksBlogDocsStackStackSign in
WorkshopCookbooksBlogDocsStackStackSign in
Changelog

Graph Evolve: Optimize LLM Workflow Graphs

Automatically evolve multi-step LLM workflows with evolutionary optimization.

Friday, December 12, 20251 min read
graph-optimizationevolveworkflowssdk
Archive
This is historical material. Use the current Managed Research, Research Factory, and GEPA/GELO pages for product decisions.

TL;DR

  • Graph Evolve is now available — evolve entire LLM workflow graphs, not just prompts
  • Supports policy graphs (solve tasks) and verifier graphs (verifier/score outputs)
  • New Python SDK: pip install synth-ai then from synth_ai.products.graph_evolve import ...

What is Graph Evolve?

While standard GEPA optimizes individual prompts, Graph Evolve optimizes entire multi-step workflows:

┌─────────────────────────────────────────────────────────────┐
│  Standard GEPA: Prompt → Better Prompt                      │
│  Graph Evolve:    Workflow → Better Workflow                  │
│                 (structure + prompts + routing)             │
└─────────────────────────────────────────────────────────────┘

The optimizer evolves:

  • Graph structure: Which nodes exist and how they connect
  • Node prompts: What each LLM node does
  • Model selection: Which model powers each node

Graph Types

Policy Graphs

Solve tasks: multi-hop QA, code generation, document analysis.

python
config = GraphOptimizationConfig(
    dataset_name="hotpotqa",
    graph_type="policy",
    graph_structure="dag",
)

Verifier Graphs

Verifier outputs: evaluate code quality, score game traces, calibrate against human labels.

python
config = GraphOptimizationConfig(
    dataset_name="crafter_traces",
    graph_type="verifier",
    scoring_strategy="rubric",
)

New API Endpoints

Start Optimization Job

bash
POST /graph-evolve/jobs

Stream Events (SSE)

bash
GET /graph-evolve/jobs/{job_id}/events

Get Results

bash
GET /graph-evolve/jobs/{job_id}/result

SDK Quick Start

python
from synth_ai.products.graph_evolve import GraphOptimizationConfig, GraphOptimizationClient
 
config = GraphOptimizationConfig.from_toml("config.toml")
 
async with GraphOptimizationClient(base_url="https://api.usesynth.ai") as client:
    job_id = await client.start_job(config)
    
    async for event in client.stream_events(job_id):
        if event.get("type") == "generation_completed":
            print(f"Gen {event['data']['generation']}: {event['data']['best_score']:.2%}")
    
    result = await client.get_result(job_id)
    print(f"Best score: {result['best_score']:.2%}")

Cookbooks

  • HotpotQA Policy Optimization
  • Crafter Verifier Calibration

What's Next

  • VLM (vision) verifier support for multi-modal evaluation
  • Graph registry for saving and loading optimized workflows
  • Expanded dataset integrations
←Back to Changelog

Ready to try Synth?

Get started with serverless RL training and prompt optimization.

Get StartedSchedule Demo
On this page
  • TL;DR
  • What is Graph Evolve?
  • Graph Types
  • Policy Graphs
  • Verifier Graphs
  • New API Endpoints
  • Start Optimization Job
  • Stream Events (SSE)
  • Get Results
  • SDK Quick Start
  • Cookbooks
  • What's Next
© 2026 SynthWorkshopReleasesCookbooksChangelogOpen sourceDocsBook a Demo