anggelomos's picture
Agent working version still not finished WIP
ef58f28
Raw
History Blame Contribute Delete
2.2 kB
import json
from dotenv import load_dotenv
from pathlib import Path
from datetime import datetime
from langchain_core.messages import HumanMessage, SystemMessage, ToolMessage
from langgraph.graph import START, StateGraph
from langgraph.prebuilt import ToolNode
from langgraph.prebuilt import tools_condition
import requests
from agent_state import AgentState
from langchain_google_genai import ChatGoogleGenerativeAI
from langchain_openai import ChatOpenAI
from logging_config import setup_logging, get_logger
from prompts import ASSISTANT_PROMPT
load_dotenv()
# Initialize logging FIRST (before importing agent_tools)
# Create logs folder and generate timestamped log file
logs_dir = Path("logs")
timestamp = datetime.now().strftime("%Y%m%d_%H%M%S")
log_file = logs_dir / f"agent_run_{timestamp}.log"
setup_logging(log_level="INFO", log_file=str(log_file))
logger = get_logger(__name__)
# Now import agent_tools after logging is configured
from agent_tools import download_file, query_spreadsheet, query_media_file, web_search
logger.info("πŸš€ Starting agent...")
logger.info(f"πŸ“ Logs will be saved to: {log_file}")
DEFAULT_API_URL = "https://agents-course-unit4-scoring.hf.space"
questions_url = f"{DEFAULT_API_URL}/random-question"
llm = ChatGoogleGenerativeAI(model="gemini-2.5-flash")
tools = [web_search, download_file, query_spreadsheet, query_media_file]
llm_with_tools = llm.bind_tools(tools, parallel_tool_calls=False)
sys_msg = SystemMessage(content=ASSISTANT_PROMPT)
def assistant(state: AgentState) -> AgentState:
logger.info("πŸ€– Assistant function called")
logger.info(f"πŸ€– Last message type: {type(state['messages'][-1])}")
logger.info(f"πŸ€– Last message: {state['messages'][-1]}")
result = llm_with_tools.invoke([sys_msg] + state["messages"])
logger.info(f"πŸ€– Assistant response: {result.content[:100]}...")
return {"messages": [result]}
graph = StateGraph(AgentState)
graph.add_node("assistant", assistant)
graph.add_node("tools", ToolNode(tools))
graph.add_edge(START, "assistant")
graph.add_conditional_edges(
"assistant",
tools_condition,
)
graph.add_edge("tools", "assistant")
gaia_hf_agent = graph.compile()