/\ ATFGraph /docs
README Downloads
Examples / ATFGraph
Framework reference

This article is retained from the existing framework docs. Self-hosting commands and server-admin access differ from the managed CLI workflow. Start with Get started for the installed product.

Research path

Directory examples/python/research_path

Plan bounded research tasks, run independent searches together, and build dependent findings from saved evidence. Live search supports Tavily or Parallel. The planner rejects cycles, missing dependencies and tasks beyond its budget.

Agent node label research_path, version 1.0.0.

Capabilities

CapabilityKindSignatureModuleSummary
create_research_plantraversal(research_question: str, max_depth: int = 1, max_tasks_per_level: int = 2) -> dictexamples/python/research_path/main.py
execute_deep_researchtraversal(research_question: str, max_depth: int = 1, max_tasks_per_level: int = 2) -> dictexamples/python/research_path/main.py
execute_research_tasktraversal(task: dict, dependencies: list[dict] | None = None) -> dictexamples/python/research_path/main.py

Commands

Taken from this example's own README and module docstrings.

EXAMPLE_MODE=fixture python -m atfgraph.worker --module examples.python.research_path.main:app
atfg install ./examples/python/research_path
atfg run research_path
atfg server start
atfg traverse research_path.execute_deep_research --in '{"research_question": "How does vector retrieval work?", "max_depth": 1, "max_tasks_per_level": 2}'
python -m examples.python.research_path.call

Files

  • examples/python/research_path/README.md
  • examples/python/research_path/__init__.py
  • examples/python/research_path/agentnode.yaml
  • examples/python/research_path/call.py
  • examples/python/research_path/main.py
  • examples/python/research_path/node.py
  • examples/python/research_path/requirements.txt
  • examples/python/research_path/support.py

README

Rendered from examples/python/research_path/README.md; the source file is not modified.

Plan bounded research tasks, run independent searches together, and build dependent findings from saved evidence. Live search supports Tavily or Parallel. The planner rejects cycles, missing dependencies and tasks beyond its budget.

Run locally

With the SDK installed, run from the repository root:

atfg server start
EXAMPLE_MODE=fixture python -m atfgraph.worker --module examples.python.research_path.main:app
# In a second terminal:
python -m examples.python.research_path.call

Or install this folder as a managed node:

atfg install ./examples/python/research_path
atfg run research_path

node.py also runs from a copied project folder. Default server: http://127.0.0.1:18880. Inspect child work in its /ui/ Console.

Call with the CLI

atfg traverse research_path.execute_deep_research --in '{"research_question": "How does vector retrieval work?", "max_depth": 1, "max_tasks_per_level": 2}'

Providers

Default fixture mode uses deterministic local data without external model/search calls. It validates the orchestration flow rather than research quality.

For live decisions, set EXAMPLE_MODE=live, model URL/name and any required API key before starting the worker. Missing configuration and provider errors remain visible instead of switching to fixtures.

Python client

from atfgraph import Client

async with Client("http://127.0.0.1:18880") as client:
    result = await client.traverse(
        "research_path.execute_deep_research",
        {'research_question': 'How does vector retrieval work?', 'max_depth': 1, 'max_tasks_per_level': 2},
        timeout=300,
    )
    print(result)

For live search, select Tavily with SEARCH_PROVIDER=tavily/TAVILY_API_KEY, or Parallel with SEARCH_PROVIDER=parallel/PARALLEL_API_KEY. Endpoint overrides support gateways and tests. Each independent task gets at most five results, with depth 0–2 and 1–4 tasks per depth. Dependent tasks reuse evidence rather than issuing another search. fixture:// citations identify synthetic material, not real web pages.

ATFGraph documentationHosted workflow · Framework reference