Killian Mahé
Init project
4863f6e
raw
history blame
1.44 kB
import os
from typing import TypedDict, Annotated
from langchain_huggingface import ChatHuggingFace, HuggingFaceEndpoint, HuggingFaceEmbeddings
from langchain_community.tools import DuckDuckGoSearchRun
from langgraph.graph import StateGraph, START
from langchain_core.messages import AnyMessage, SystemMessage
from langgraph.graph.message import add_messages
from langgraph.prebuilt import ToolNode, tools_condition
from langchain_openai import ChatOpenAI
from tools import multiply, divide, add, substract
available_tools = [multiply, divide, add, substract, DuckDuckGoSearchRun(output_format="list", max_results=5)]
with os.read("system_prompt.txt", "r") as file:
sys_prompt = SystemMessage(content=file.read())
class AgentState(TypedDict):
messages: Annotated[list[AnyMessage], add_messages]
chat = ChatOpenAI(model="o4-mini",)
chat.bind_tools(available_tools)
def assistant(state: AgentState):
return {
"messages": [chat.invoke(state["messages"])]
}
def init_step(state: AgentState):
return {
"messages": [sys_prompt]
}
builder = StateGraph(AgentState)
builder.add_node("assistant", assistant)
builder.add_node("init", init_step)
builder.add_node("tools", ToolNode(available_tools))
builder.add_edge(START, "init")
builder.add_edge("ini", "assistant")
builder.add_conditional_edges("assistant", tools_condition)
builder.add_edge("tools", "assistant")
gaia_agent = builder.compile()