Cortex-coder / scripts /main.py
junaid17's picture
Upload 6 files
58ddd29 verified
from dotenv import load_dotenv
from langgraph.graph import StateGraph, START, END
from typing import TypedDict, Annotated, List
from langchain_core.messages import HumanMessage, BaseMessage, AIMessage, SystemMessage
from langgraph.checkpoint.memory import MemorySaver
from langgraph.graph.message import add_messages
from scripts.load_model import get_model
load_dotenv()
SYSTEM_MESSAGE = SystemMessage(
content=(
"You are Cortex, a coding assistant created by Junaid, helping with technical and coding tasks. "
"Answer clearly, stay focused on coding and technical solutions, and keep responses concise."
)
)
llm = get_model()
class ChatState(TypedDict):
messages: Annotated[list[BaseMessage], add_messages]
def chat_node(state: ChatState):
messages = [SYSTEM_MESSAGE] + state["messages"]
response = llm.invoke(messages)
return {"messages": [response]}
checkpointer = MemorySaver()
graph = StateGraph(ChatState)
graph.add_node("chat_node", chat_node)
graph.add_edge(START, "chat_node")
graph.add_edge("chat_node", END)
cortex_chatbot = graph.compile(checkpointer=checkpointer)
def stream_chat_response(user_message: str, thread_id: str):
config = {"configurable": {"thread_id": thread_id}}
for chunk in cortex_chatbot.stream(
{"messages": [HumanMessage(content=user_message)]},
config=config,
stream_mode="messages"
):
yield chunk