为什么建立独立 Python 服务

网站仍使用 Next.js,但 Agent 核心放在 agent_service。Python 生态中的文档加载器、Retriever、评估和 LangGraph 可以独立演进。

@app.post("/chat")
async def chat(request: ChatRequest):
    return StreamingResponse(
        event_stream(request.messages),
        media_type="text/event-stream",
    )

读取 LangChain token

messages 流也经过工具节点,页面只转发自然语言,避免暴露内部 RAG 数据。

async for token, metadata in personal_agent.astream(
    payload, stream_mode="messages"
):
    if metadata.get("langgraph_node") == "tools":
        continue
    if isinstance(token.content, str) and token.content:
        event = {"choices": [{"delta": {"content": token.content}}]}
        yield f"data: {json.dumps(event, ensure_ascii=False)}\n\n"

本地运行

python -m venv .venv
.\.venv\Scripts\python -m pip install -r agent_service\requirements.txt
.\.venv\Scripts\python -m uvicorn main:app --app-dir agent_service --port 8000

以后 Python 服务迁移到容器或云平台时,只需修改 Next.js 的 AGENT_API_URL