Spaces:
Runtime error
Runtime error
| 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() | |