|
from typing import List, Optional |
|
|
|
from pmcp.agents.agent_base import AgentBlueprint |
|
from langchain_core.tools import BaseTool |
|
from langchain_core.messages import HumanMessage |
|
from langchain_openai import ChatOpenAI |
|
from langgraph.types import Command |
|
|
|
from pmcp.models.resume_trigger import ResumeTrigger |
|
from loguru import logger |
|
|
|
|
|
SYSTEM_PROMPT = """ |
|
You are a Human Resumer Agent responsible for understading the user indication on whether to procede or not with an action. |
|
You have to identify: |
|
- if the user express some changes or confirm directly |
|
- which changes the user wants to apply |
|
|
|
""" |
|
|
|
|
|
class HumanResumeNode: |
|
def __init__(self, llm: ChatOpenAI, tools: Optional[List[BaseTool]] = None): |
|
self.agent = AgentBlueprint( |
|
agent_name="HUMAN_REVIEWER_AGENT", |
|
description="The agent asks for human confirmation", |
|
tools=tools, |
|
system_prompt=SYSTEM_PROMPT.strip(), |
|
llm=llm, |
|
) |
|
|
|
def call_human_interrupt_agent(self, user_message: str): |
|
logger.info("Human resumer agent...") |
|
response = self.agent.call_agent_structured( |
|
[ |
|
HumanMessage(content=user_message), |
|
], |
|
clazz=ResumeTrigger, |
|
) |
|
|
|
return Command(resume=response) |
|
|