Skip to content

agent-research

The agent-research worked example.

Run it from sema/:

Terminal window
sema check examples/agent-research
SEMA_STRICT=1 sema run examples/agent-research
sema assure examples/agent-research --grade silver
"""Durable research fan-out/fan-in with typed native agents."""
assure silver
def search(query: str) -> str !{}:
return "source:" + query
agent researcher(question: str) -> str by research_model:
sem "Collect one attributable finding and separate fact from inference"
use tools [search]
budget model_calls=2, tokens=512
ensure len(result) >= 1
agent writer(evidence: list[str]) -> str by writer_model:
sem "Synthesize the evidence with provenance and explicit uncertainty"
budget model_calls=1, tokens=512
ensure len(result) >= 1
circuit synthesize(questions: list[str]) -> str !{model.invoke}:
budget agents=8, spawn_depth=0, model_calls=16, tokens=8000
evidence = parallel [researcher(question) for question in questions]
return writer(evidence)
def main() -> str !{model.invoke}:
result = synthesize(["energy storage", "grid reliability", "source quality"])
print(result)
return result

Durable research fan-out/fan-in with typed native agents.

def search(query: str) -> str !{}

Parameters

nametype
querystr

Returns str

Effects !{}

agent researcher(question: str) -> str

Parameters

nametype
questionstr

Returns str

agent writer(evidence: list[str]) -> str

Parameters

nametype
evidencelist[str]

Returns str

circuit synthesize(questions: list[str]) -> str !{model.invoke}

Parameters

nametype
questionslist[str]

Returns str

Effects !{model.invoke}

def main() -> str !{model.invoke}

Returns str

Effects !{model.invoke}