Spaces:
Runtime error
Runtime error
File size: 2,197 Bytes
bb41dbe ef58f28 bb41dbe ef58f28 bb41dbe ef58f28 bb41dbe ef58f28 bb41dbe ef58f28 bb41dbe ef58f28 bb41dbe ef58f28 bb41dbe ef58f28 bb41dbe ef58f28 bb41dbe ef58f28 bb41dbe ef58f28 bb41dbe ef58f28 | 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 59 60 61 62 63 64 65 66 67 68 69 70 | 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()
|