File size: 1,297 Bytes
c9bb5fc
 
 
6a19530
c9bb5fc
 
 
6a19530
c9bb5fc
6a19530
 
 
 
 
c9bb5fc
 
 
 
6a19530
 
 
c9bb5fc
6a19530
 
c9bb5fc
6a19530
c9bb5fc
 
6a19530
 
 
c9bb5fc
6a19530
 
 
 
 
 
c9bb5fc
6a19530
c9bb5fc
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
# backend.py

from langgraph.graph import StateGraph, START, END
from typing import TypedDict, Annotated, List, Generator, Union, Dict, Any
from dotenv import load_dotenv
from langgraph.checkpoint.memory import InMemorySaver
from langchain_google_genai import ChatGoogleGenerativeAI
from langchain_core.messages import BaseMessage, HumanMessage, AIMessage, AIMessageChunk
from langgraph.graph.message import add_messages
import logging

# --- Basic logging for debugging ---
# logging.basicConfig(level=logging.DEBUG) # Uncomment for more details during testing
logger = logging.getLogger(__name__)

load_dotenv()
THREAD_ID = "1"

# Initialize the LLM
# Ensure the model name is correct and available (e.g., 'gemini-1.5-flash' or 'gemini-pro')
gen_llm = ChatGoogleGenerativeAI(model='gemini-1.5-flash') 

class ChatState(TypedDict):
    messages: Annotated[list[BaseMessage], add_messages]

def chat_node(state: ChatState):
    messages = state['messages']
    response = gen_llm.invoke(messages)
    return {"messages": [response]}

# Checkpointer
checkpointer = InMemorySaver()

graph = StateGraph(ChatState)
graph.add_node("chat_node", chat_node)
graph.add_edge(START, "chat_node")
graph.add_edge("chat_node", END)

chatbot = graph.compile(checkpointer=checkpointer)
# --- End Build Graph ---