from framework.graph.goal import Goal, SuccessCriterion, Constraint
research_goal = Goal(
id="research-agent-goal",
name="Technical Research Agent",
description="Research technical topics and provide comprehensive summaries",
success_criteria=[
SuccessCriterion(
id="topic-coverage",
description="Covers all major aspects of the topic",
metric="llm_judge",
target=">= 0.9",
weight=0.4,
),
SuccessCriterion(
id="source-quality",
description="Uses credible sources",
metric="llm_judge",
target=">= 0.8",
weight=0.3,
),
SuccessCriterion(
id="clarity",
description="Output is clear and well-structured",
metric="llm_judge",
target=">= 0.85",
weight=0.3,
),
],
constraints=[
Constraint(
id="verify-sources",
description="All information must be from verifiable sources",
constraint_type="hard",
category="quality",
),
Constraint(
id="no-speculation",
description="Do not include unverified speculation",
constraint_type="hard",
category="safety",
),
Constraint(
id="time-limit",
description="Complete research within 5 minutes",
constraint_type="soft",
category="time",
),
],
required_capabilities=["web_search", "llm"],
context={
"domain": "technology",
"audience": "developers",
},
)