refactor starlette as API, langgraph from openrouter

This commit is contained in:
Sebarocks 2025-07-21 18:15:51 -04:00
parent 1dec5d49ec
commit 4527ed19cc
7 changed files with 450 additions and 170 deletions

29
chatgraph.py Normal file
View file

@ -0,0 +1,29 @@
from typing import TypedDict
from langgraph.graph import StateGraph, START
from langgraph.checkpoint.memory import MemorySaver
from langchain_openai import ChatOpenAI
from os import getenv
from dotenv import load_dotenv
load_dotenv()
class State(TypedDict):
messages: list
llm = ChatOpenAI(
openai_api_key=getenv("OPENROUTER_API_KEY"),
openai_api_base=getenv("OPENROUTER_BASE_URL"),
model_name="qwen/qwen3-235b-a22b-07-25",
)
def call_model(state: State):
# simple memory trim example: keep last 20 messages
trimmed = state["messages"][-20:]
response = llm.invoke(trimmed)
return {"messages": [response]}
workflow = StateGraph(State)
workflow.add_node("model", call_model)
workflow.add_edge(START, "model")
memory = MemorySaver()
app_graph = workflow.compile(checkpointer=memory)