Spaces:
Sleeping
Sleeping
File size: 1,442 Bytes
4863f6e |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
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() |