mirror of
https://github.com/Significant-Gravitas/AutoGPT.git
synced 2026-04-08 03:00:28 -04:00
dx(backend/copilot): clarify ambiguous agent goals using find_block before generation (#12601)
### Why / What / How **Why:** When a user asks CoPilot to build an agent with an ambiguous goal (output format, delivery channel, data source, or trigger unspecified), the agent generator previously made assumptions and jumped straight into JSON generation. This produced agents that didn't match what the user actually wanted, requiring multiple correction cycles. **What:** Adds a "Clarifying Before Building" section to the agent generation guide. When the goal is ambiguous, CoPilot first calls `find_block` to discover what the platform actually supports for the ambiguous dimension, then asks the user one concrete question grounded in real platform options (e.g. "The platform supports Gmail, Slack, and Google Docs — which should the agent use for delivery?"). Only after the user answers does the full agent generation workflow proceed. **How:** The clarification instruction is added to `agent_generation_guide.md` — the guide loaded on-demand via `get_agent_building_guide` when the LLM is about to build an agent. This avoids polluting the system prompt supplement (which loads for every CoPilot conversation, not just agent building). No dedicated tool is needed — the LLM asks naturally in conversation text after discovering real platform options via `find_block`. ### Changes 🏗️ - `backend/copilot/sdk/agent_generation_guide.md`: Adds "Clarifying Before Building" section before the workflow steps. Instructs the model to call `find_block` for the ambiguous dimension, ask the user one grounded question, wait for the answer, then proceed to generation. - `backend/copilot/prompting_test.py`: New test file verifying the guide contains the clarification section and references `find_block`. ### Checklist 📋 #### For code changes: - [x] I have clearly listed my changes in the PR description - [x] I have made a test plan - [x] I have tested my changes according to the test plan: - [ ] Ask CoPilot to "build an agent to send a report" (ambiguous output) — verify it calls `find_block` for delivery options and asks one grounded question before generating JSON - [ ] Ask CoPilot to "build an agent to scrape prices from Amazon and email me daily" (specific goal) — verify it skips clarification and proceeds directly to agent generation - [ ] Verify the clarification question lists real block options (e.g. Gmail, Slack, Google Docs) rather than abstract options --------- Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com> Co-authored-by: Zamil Majdy <zamil.majdy@agpt.co>
This commit is contained in:
21
autogpt_platform/backend/backend/copilot/prompting_test.py
Normal file
21
autogpt_platform/backend/backend/copilot/prompting_test.py
Normal file
@@ -0,0 +1,21 @@
|
||||
"""Tests for agent generation guide — verifies clarification section."""
|
||||
|
||||
from pathlib import Path
|
||||
|
||||
|
||||
class TestAgentGenerationGuideContainsClarifySection:
|
||||
"""The agent generation guide must include the clarification section."""
|
||||
|
||||
def test_guide_includes_clarify_before_building(self):
|
||||
guide_path = Path(__file__).parent / "sdk" / "agent_generation_guide.md"
|
||||
content = guide_path.read_text(encoding="utf-8")
|
||||
assert "Clarifying Before Building" in content
|
||||
|
||||
def test_guide_mentions_find_block_for_clarification(self):
|
||||
guide_path = Path(__file__).parent / "sdk" / "agent_generation_guide.md"
|
||||
content = guide_path.read_text(encoding="utf-8")
|
||||
# find_block must appear in the clarification section (before the workflow)
|
||||
clarify_section = content.split("Clarifying Before Building")[1].split(
|
||||
"### Workflow"
|
||||
)[0]
|
||||
assert "find_block" in clarify_section
|
||||
@@ -3,6 +3,21 @@
|
||||
You can create, edit, and customize agents directly. You ARE the brain —
|
||||
generate the agent JSON yourself using block schemas, then validate and save.
|
||||
|
||||
### Clarifying Before Building
|
||||
|
||||
Before starting the workflow below, check whether the user's goal is
|
||||
**ambiguous** — missing the output format, delivery channel, data source,
|
||||
or trigger. If so:
|
||||
1. Call `find_block` with a query targeting the ambiguous dimension to
|
||||
discover what the platform actually supports.
|
||||
2. Ask the user **one concrete question** grounded in the discovered
|
||||
options (e.g. "The platform supports Gmail, Slack, and Google Docs —
|
||||
which should the agent use for delivery?").
|
||||
3. **Wait for the user's answer** before proceeding.
|
||||
|
||||
**Skip this** when the goal already specifies all dimensions (e.g.
|
||||
"scrape prices from Amazon and email me daily").
|
||||
|
||||
### Workflow for Creating/Editing Agents
|
||||
|
||||
1. **Discover blocks**: Call `find_block(query, include_schemas=true)` to
|
||||
|
||||
Reference in New Issue
Block a user