| from typing import List, Optional | |
| from pmcp.agents.agent_base import AgentBlueprint | |
| from langchain_core.tools import BaseTool | |
| from langchain_openai import ChatOpenAI | |
| from pmcp.models.state import PlanningState | |
| from loguru import logger | |
| SYSTEM_PROMPT = """ | |
| You are an assistant that can manage Trello boards and projects. | |
| You will be given a set of tools to work with. | |
| """ | |
| class GithubAgent: | |
| def __init__(self, llm: ChatOpenAI, tools: Optional[List[BaseTool]] = None): | |
| self.agent = AgentBlueprint( | |
| agent_name="GITHUB_AGENT", | |
| description="The agent that performs actions on Github", | |
| tools=tools, | |
| system_prompt=SYSTEM_PROMPT.strip(), | |
| llm=llm, | |
| ) | |
| def call_github_agent(self, state: PlanningState): | |
| logger.info("Calling Github agent...") | |
| response = self.agent.call_agent(state.messages) | |
| return {"messages": [response]} | |
| async def acall_github_agent(self, state: PlanningState): | |
| logger.info("Calling Github agent...") | |
| response = await self.agent.acall_agent(state.messages) | |
| return {"messages": [response]} | |