Add src/agent.py
This commit is contained in:
@@ -0,0 +1,45 @@
|
||||
"""Agent wrapper that uses LangChain's create_agent.
|
||||
|
||||
This module demonstrates how to create an agent that can run the
|
||||
research brief graph. It imports ``create_agent`` from
|
||||
``langchain.agents`` as required by the task.
|
||||
"""
|
||||
|
||||
from langchain.agents import create_agent
|
||||
from langchain_openai import ChatOpenAI
|
||||
from langchain_core.tools import BaseTool
|
||||
from typing import Dict, Any
|
||||
|
||||
# Import the graph builder
|
||||
from .brief import build_graph
|
||||
|
||||
class RunBriefTool(BaseTool):
|
||||
"""Tool that runs the research brief graph for a given topic."""
|
||||
|
||||
name: str = "run_brief"
|
||||
description: str = "Run the research brief graph for a given topic."
|
||||
|
||||
def _run(self, topic: str) -> str:
|
||||
# Build the graph and run it
|
||||
graph = build_graph()
|
||||
state: Dict[str, Any] = {
|
||||
"topic": topic,
|
||||
"outline": None,
|
||||
"step_index": 0,
|
||||
"notes": [],
|
||||
"final_brief": None,
|
||||
}
|
||||
result = graph.invoke(state)
|
||||
return result.get("final_brief", "No brief produced.")
|
||||
|
||||
# Create the agent using the required create_agent function
|
||||
llm = ChatOpenAI()
|
||||
agent = create_agent(model=llm, tools=[RunBriefTool()])
|
||||
|
||||
# Expose a simple helper for external use
|
||||
|
||||
def run_agent(topic: str) -> str:
|
||||
"""Invoke the agent with the given topic and return the brief."""
|
||||
response = agent.invoke({"messages": [{"role": "user", "content": topic}]})
|
||||
# The agent will return the tool output as a string
|
||||
return response
|
||||
Reference in New Issue
Block a user