Dodaj nowego agenta do systemu TruthSeeker.
Input: Nazwa agenta i jego odpowiedzialność
Steps
- •
Określ rolę agenta
Zdefiniuj:
- •Nazwa (kebab-case): np.
fact-checker - •Klasa Python (PascalCase): np.
FactChecker - •Odpowiedzialność: Co robi agent?
- •Dane wejściowe: Co otrzymuje?
- •Dane wyjściowe: Co zwraca?
- •Nazwa (kebab-case): np.
- •
Utwórz plik agenta
bashcd c:\Users\Trzyb\Desktop\truthseeker\src\agents
Utwórz
<agent_name>.pyz szablonem:python""" <AgentName> Agent Odpowiedzialność: <opis> """ import logging from dataclasses import dataclass from typing import Optional from src.core.config import settings from src.infrastructure.llm_client import LLMClient logger = logging.getLogger(__name__) @dataclass class <AgentName>Input: """Dane wejściowe dla agenta.""" # Zdefiniuj pola wejściowe pass @dataclass class <AgentName>Output: """Wynik pracy agenta.""" success: bool # Zdefiniuj pola wyjściowe error: Optional[str] = None class <AgentName>: """ Agent <nazwa> w systemie TruthSeeker. <Szczegółowy opis roli i odpowiedzialności> """ def __init__(self): self.llm = LLMClient() logger.info(f"Zainicjalizowano agenta <AgentName>") async def process(self, input_data: <AgentName>Input) -> <AgentName>Output: """ Główna metoda przetwarzania. Args: input_data: Dane wejściowe Returns: <AgentName>Output z wynikiem """ try: logger.info(f"Rozpoczynam przetwarzanie: {input_data}") # TODO: Implementacja logiki agenta return <AgentName>Output(success=True) except Exception as e: logger.error(f"Błąd agenta: {e}") return <AgentName>Output(success=False, error=str(e)) - •
Dodaj System Prompt
Dodaj prompt do
truthseeker_prompts.md:markdown## X. Prompt Systemowy dla Agenta <AgentName> ### Definicja Roli <Opisz rolę agenta> ### Zasady Działania <Opisz jak agent ma działać> ### Oczekiwany Wynik <Opisz co agent ma zwracać>
- •
Zarejestruj w Orchestratorze
Edytuj
src/agents/orchestrator.py:pythonfrom src.agents.<agent_name> import <AgentName> class Orchestrator: def __init__(self): # ... istniejący kod ... self.<agent_name> = <AgentName>() - •
Dodaj testy
Utwórz
tests/test_<agent_name>.py:pythonimport pytest from src.agents.<agent_name> import <AgentName>, <AgentName>Input @pytest.mark.asyncio async def test_<agent_name>_basic(): agent = <AgentName>() result = await agent.process(<AgentName>Input(...)) assert result.success - •
Zaktualizuj dokumentację
Edytuj
agents.md- dodaj nowego agenta do listy. Edytujarchitecture.md- dodaj do diagramu.
Guardrails
- •Każdy agent ma jedną odpowiedzialność (SRP)
- •Agent musi mieć Input i Output dataclass
- •Agent musi logować swoje działania
- •Agent musi obsługiwać błędy gracefully
- •Agent musi mieć System Prompt w dokumentacji