| from agent.prompts import deep_research_instructions, deep_research_system_message | |
| from langchain_core.messages import HumanMessage, SystemMessage | |
| from agent.models import llm_agents, llm_peripheral | |
| from langgraph.prebuilt import create_react_agent | |
| from agent.tools import deep_research_tools | |
| from langgraph.constants import START, END | |
| from langgraph.graph import StateGraph | |
| from agent.states import PlanResearch | |
| agent = create_react_agent( | |
| llm_agents, | |
| tools=deep_research_tools, | |
| prompt=deep_research_instructions | |
| ) | |
| def planning_node(state: dict): | |
| planer = llm_peripheral.with_structured_output(PlanResearch) | |
| plan = planer.invoke(state['messages'][-1].content) | |
| state.update(plan) | |
| return state | |
| def research_agent(state: dict): | |
| system_message = SystemMessage(deep_research_system_message(state)) | |
| state.update(agent.invoke({ | |
| 'messages': [ | |
| system_message, | |
| HumanMessage(state['messages'][-1].content), | |
| ] | |
| })) | |
| return state | |
| graph = StateGraph(dict) | |
| graph.add_node("planning_node", planning_node) | |
| graph.add_node("research_agent", research_agent) | |
| graph.add_edge(START, "planning_node") | |
| graph.add_edge("planning_node", "research_agent") | |
| graph.add_edge("research_agent", END) | |
| deep_research_agent = graph.compile(name="deep_research_agent") | |