2.2 KiB
2.2 KiB
Story 2.2: Master-Agent-Node implementieren
Status: done
Story
Als Backend-Entwickler,
möchte ich den master_agent_node,
so dass er auf Basis von input_topic und feedback_history einen Draft erstellt.
Acceptance Criteria
- Bei leerem
feedback_history→ Initialer Draft auf Basis voninput_topic - Bei befülltem
feedback_history→ User-Prompt enthält Feedback-Einträge - Rückgabe enthält
current_draft(nicht leer),messages(3 Elemente),active_node = "master_agent" iteration_countwird um 1 erhöht- LLM: Claude 3.5 Sonnet,
temperature=0.7
Tasks / Subtasks
- Task 1:
agents/master_agent.pyimplementieren (AC: 1–5)- Subtask 1.1:
_build_master_prompt(state)für initiale vs. Feedback-Iterationen - Subtask 1.2:
master_agent_node(state)LangGraph-Node-Funktion - Subtask 1.3:
SystemMessage,HumanMessage,AIMessageinmessages
- Subtask 1.1:
- Task 2:
agents/__init__.pymit Exports - Task 3: Unit-Tests (AC: 1–4)
- Subtask 3.1: Test initiale Draft-Erstellung (kein Feedback)
- Subtask 3.2: Test Feedback-Integration im Prompt
- Subtask 3.3: Test
iteration_count+1
Dev Notes
- Mock-Pattern:
@patch("agents.master_agent.ChatAnthropic") - LLM-Aufruf:
llm.invoke([SystemMessage(...), HumanMessage(...)])→ AIMessage - Bezug:
from langchain_anthropic import ChatAnthropic,from langchain_core.messages import ...
Project Structure Notes
backend/agents/master_agent.pybackend/agents/__init__.pybackend/tests/test_api.py(integrationsähnliche Tests)
References
- [Source: CLAUDE.md#Python Code Style]
- [Source: _bmad-output/planning-artifacts/architecture.md#CouncilState-TypedDict]
Dev Agent Record
Agent Model Used
Amelia (💻 BMAD Dev Agent)
Completion Notes List
_build_master_prompt()unterscheidet viaif not state["feedback_history"]zwischen erstem Aufruf und Iterations.feedback_blockformatiert alle Feedback-Runden nummeriert.
File List
backend/agents/master_agent.pybackend/agents/__init__.py