File size: 1,901 Bytes
ccca999 14cafef ccca999 14cafef 2171e7d ccca999 a7becf3 14cafef ccca999 bf4d9ee ccca999 61d8471 ccca999 |
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 48 49 50 51 52 53 54 55 56 57 58 |
import os
from typing import TypedDict, Annotated
from langgraph.graph.message import add_messages
from langchain_core.messages import AnyMessage, HumanMessage, AIMessage, ToolMessage, SystemMessage
from langchain_groq import ChatGroq
from langgraph.prebuilt import ToolNode
from langgraph.graph import START, StateGraph, END
from langgraph.prebuilt import tools_condition
from tools import (retriever, web_search, wiki_search, youtube_analysis,
add_numbers, subtract_numbers, multiply_numbers, divide_numbers, modulus_numbers,
detect_objects, run_python
)
from prompt import text_prompt
from dotenv import load_dotenv
#from PIL import Image
#from io import StringIO
#load_dotenv()
os.environ["GROQ_API_KEY"] = os.getenv("GROQ_API_KEY")
class State(TypedDict):
messages: Annotated[list[AnyMessage], add_messages]
tools = [retriever, web_search, wiki_search, youtube_analysis,
add_numbers, subtract_numbers, multiply_numbers, divide_numbers, modulus_numbers,
detect_objects, run_python]
#model = "qwen/qwen3-32b"
model = "deepseek-r1-distill-llama-70b"
llm = ChatGroq(
model= model,
temperature=0.0,
max_tokens= None,
reasoning_format="parsed",
timeout=None,
max_retries=2,
)
llm_with_tools = llm.bind_tools(tools)
def ask_agent(agent_state: State):
system_prompt = SystemMessage(
content = text_prompt
)
query = agent_state["messages"][-1] # HumanMessage
response = llm_with_tools.invoke(text_prompt + query.content)
return {"messages": [response]}
graph_builder = StateGraph(State)
graph_builder.add_node("agent", ask_agent)
graph_builder.add_node("tools", ToolNode(tools))
graph_builder.add_edge(START, "agent")
graph_builder.add_conditional_edges(
"agent",
tools_condition
)
graph_builder.add_edge("tools", "agent")
alfred = graph_builder.compile() |