Spaces:
Sleeping
Sleeping
| """ | |
| Basis agent node that creates the initial agent with the system prompt. | |
| Need to use the prompt from the prompts/system_prompt.py file | |
| """ | |
| import os | |
| from typing import Dict, Any | |
| from langchain_core.messages import SystemMessage | |
| from langgraph.graph import MessagesState | |
| from langchain.chat_models import init_chat_model | |
| from dotenv import load_dotenv | |
| from ..prompts.system_prompt import SYSTEM_PROMPT | |
| from .tools_node import get_all_tools | |
| # Load environment variables | |
| load_dotenv() | |
| def agent_node(state: MessagesState) -> Dict[str, Any]: | |
| """ | |
| Agent node using LangChain's built-in init_chat_model with env configuration. | |
| Args: | |
| state: MessagesState containing the conversation history | |
| Returns: | |
| Dict containing the updated messages | |
| """ | |
| # Get model configuration from environment variables | |
| model_name = os.getenv("MODEL_NAME", "gpt-5-mini") | |
| model_provider = os.getenv("MODEL_PROVIDER", "openai") | |
| # Use LangChain's built-in init_chat_model with env config | |
| model = init_chat_model( | |
| model=model_name, | |
| model_provider=model_provider, | |
| api_key=os.getenv("OPENAI_API_KEY") | |
| ) | |
| # Get tools and bind them using built-in method | |
| tools = get_all_tools() | |
| model_with_tools = model.bind_tools(tools) | |
| # Get current messages | |
| messages = state["messages"] | |
| # Add system prompt if not present using built-in message handling | |
| if not messages or not isinstance(messages[0], SystemMessage): | |
| system_message = SystemMessage(content=SYSTEM_PROMPT) | |
| messages = [system_message] + messages | |
| # Generate response using built-in invoke | |
| response = model_with_tools.invoke(messages) | |
| return {"messages": [response]} |