"""Devil's Advocate agent: 1st-person worst-case scenario for a flagged clause.""" from __future__ import annotations import logging from typing import ClassVar from app.agents.base import BaseAgent from app.schemas import AgentName, Clause logger = logging.getLogger(__name__) class DevilAdvocateAgent(BaseAgent): name: ClassVar[AgentName] = "devil_advocate" prompt_file: ClassVar[str] = "devil" async def run(self, clause: Clause) -> str: user_prompt = _format_prompt(clause) response = await self._call( user_prompt, max_tokens=350, temperature=0.4, clause_id=clause.id, log_label=f"severity={clause.severity}", ) scenario = response.text.strip().strip("`").strip('"').strip() if scenario: self._emit_message(f"[Worst case] {scenario}", clause_id=clause.id) return scenario def _format_prompt(clause: Clause) -> str: return ( f"Clause type: {clause.type}\n" f"Severity assigned by Risk Analyst: {clause.severity}\n" f"Risk Analyst's rationale: {clause.rationale}\n\n" f"\n{clause.text}\n\n\n" "Now write the worst-case scenario paragraph described in your role instructions." )