KI-Konzil/_bmad-output/implementation-artifacts/stories/2-2-master-agent-node-implementieren.md
copilot-swe-agent[bot] d4cfb34423 Changes before error encountered
Co-authored-by: Kenearos <86194771+Kenearos@users.noreply.github.com>
2026-03-12 15:00:09 +00:00

2.2 KiB
Raw Blame History

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

  1. Bei leerem feedback_history → Initialer Draft auf Basis von input_topic
  2. Bei befülltem feedback_history → User-Prompt enthält Feedback-Einträge
  3. Rückgabe enthält current_draft (nicht leer), messages (3 Elemente), active_node = "master_agent"
  4. iteration_count wird um 1 erhöht
  5. LLM: Claude 3.5 Sonnet, temperature=0.7

Tasks / Subtasks

  • Task 1: agents/master_agent.py implementieren (AC: 15)
    • 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, AIMessage in messages
  • Task 2: agents/__init__.py mit Exports
  • Task 3: Unit-Tests (AC: 14)
    • 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.py
  • backend/agents/__init__.py
  • backend/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 via if not state["feedback_history"] zwischen erstem Aufruf und Iterations.
  • feedback_block formatiert alle Feedback-Runden nummeriert.

File List

  • backend/agents/master_agent.py
  • backend/agents/__init__.py