使用 Python + LangChain + Vue3 构建 LLM 聊天应用
使用 Python LangChain Vue3 构建 LLM 聊天应用从零搭建一个支持流式对话的全栈 LLM 应用FastAPI 后端 Vue3 前端 DeepSeek API。目录使用 Python LangChain Vue3 构建 LLM 聊天应用目录项目结构技术栈技术栈选择AI Agent 主流框架环境配置1. 安装 Python2. 配置 API 密钥3. 编辑器学习路径1. Python 基础2. FastAPI 入门核心概念快速示例Pydantic 要点CORS3. LLM 与 OpenAI 接口核心代码关键概念消息角色4. LangChain 框架安装 运行LCEL 链式语法相关文件消息模板对照5. 后端实现SSE 流式协议API 接口6. 前端实现创建项目功能清单文件说明SSE 前端处理要点运行与验证后端前端请求链路拓展阅读项目结构simple-llm-app/ ├── test/ # 学习 实验代码 │ ├── test.py # 环境变量 OpenAI 接口测试 │ ├── server.py # FastAPI 路由 / Pydantic / CORS 示例 │ ├── llm-app.py # LangChain 链式调用入门 │ ├── llm-app-message.py # LangChain 消息模板 │ └── prompt-template.py # PromptTemplate 示例 ├── backend/ # 生产后端 │ ├── server.py # API 层路由 SSE CORS 启动入口 │ ├── llm_app.py # 业务层LLM 封装与流式生成 │ ├── models.py # 数据层Pydantic 模型 │ ├── test.py # SSE 流式响应实验脚本 │ └── requirements.txt # Python 依赖 └── frontend/ # 聊天窗口前端 └── src/ ├── App.vue # 聊天页面 ├── style.css # 全局样式 ├── types/chat.ts # 类型定义 ├── api/chat.ts # API 请求封装 └── composables/useChat.ts # 聊天逻辑 Hook技术栈层级技术说明后端Python 3 · FastAPI · LangChain · UvicornWeb 框架 LLM 编排 ASGI 服务器前端Vue 3 · TypeScript · Vite组件化 UI 类型安全 构建工具模型DeepSeek API兼容 OpenAI 接口格式说明后端也可替换为 Node.js/Java但 AI 生态在 Python 侧仍具明显优势技术栈选择AI Agent 主流框架框架语言特点适合场景LangChainPython/JS生态最全组件多快速原型、学习入门LlamaIndexPython专注 RAG 和知识检索知识库类应用AutoGenPython微软出品多 Agent 对话多 Agent 协作CrewAIPython角色化 Agent 团队任务分工类场景LangGraphPython状态机式 Agent 流程复杂工作流DifyPython/低代码国产可视化编排快速交付、企业内部阿里百炼 / 腾讯元器等托管平台国内合规部署简单国内商业落地环境配置1. 安装 Python从 Python 官网 下载安装包安装时勾选Add Python to PATH验证安装python--versionpip--version2. 配置 API 密钥在 DeepSeek 控制台 申请 API Key在项目根目录创建.env文件DEEPSEEK_API_KEYsk-xxxxxx安装依赖并验证读取pipinstallpython-dotenv python test/test.py完整示例见test/test.py。3. 编辑器推荐 VS Code / Cursor安装Python语言扩展。学习路径按以下顺序阅读代码由浅入深环境变量 → FastAPI → OpenAI 接口 → LangChain → 后端分层 → 前端聊天页1. Python 基础Python 适合 AI 开发的核心原因特点说明简洁语法接近自然语言快速验证想法丰富生态TensorFlow、PyTorch、LangChain、Hugging Face 等动态类型交互式开发迭代效率高胶水语言底层 C/C/CUDA 计算 Python 高层编排语法速览name张三# 无需声明关键字AGE25# 全大写表示常量约定is_studentTrue# 单行注释用 #多行用 或 GIL 与并发与 Web 服务相关CPU 密集型GIL 限制多线程并行 → 用多进程或 GPUI/O 密集型网络请求、LLM 调用多线程 /asyncio仍然有效FastAPI Uvicorn 的异步模型适合 LLM 推理服务2. FastAPI 入门核心概念组件职责FastAPI路由、验证、序列化、依赖注入UvicornHTTP 解析、并发处理、连接管理ASGI 服务器两者配合才能发挥 FastAPI 的异步性能。快速示例pipinstallfastapi uvicorn python test/server.py访问http://127.0.0.1:9528查看响应访问/docs查看自动生成的 API 文档。完整代码见test/server.py包含基础路由与启动路径参数 查询参数/items/{id}?qxxxPydantic 请求体 / 响应模型HTTP 中间件 CORS 跨域配置Pydantic 要点基于类型注解的运行时数据验证FastAPI 自动生成 OpenAPI 文档/docs典型场景API 请求校验、配置管理、JSON 序列化CORS跨域指协议、域名、端口任一不同。后端需配置CORSMiddleware允许前端跨域访问详见test/server.py。3. LLM 与 OpenAI 接口DeepSeek 兼容 OpenAI API 格式使用openai库即可对接。pipinstallopenai python test/test.py核心代码fromopenaiimportOpenAI clientOpenAI(api_keyos.getenv(DEEPSEEK_API_KEY),base_urlhttps://api.deepseek.com)responseclient.chat.completions.create(modeldeepseek-chat,temperature0.5,messages[{role:user,content:你是谁}])print(response.choices[0].message.content)关键概念概念说明详见choices字段模型返回的候选回复列表test/test.py注释流式响应streamTrue逐 token 输出打字机效果test/test.pytemperature控制随机性低确定性高创造性test/test.py注释消息角色system/user/assistant/tool见下表消息角色角色用途示例场景system设定助手行为规则“你是专业翻译只翻译中英文”user用户输入必填“什么是机器学习”assistant历史回复保持多轮连贯上一轮 AI 的回答tool/function工具调用结果Function Calling 场景4. LangChain 框架Java 开发者可选 LangChain4j · 实战指南LangChain 在 OpenAI 原生接口之上提供链式编排简化 Prompt → LLM → Parser 流程。安装 运行pipinstalllangchain_openai langchain_core python-dotenv python test/llm-app.pyLCEL 链式语法chainprompt|llm|parser# 输入 → 模板填充 → AI 处理 → 解析输出resultchain.invoke({question:你是谁})|是 LangChain 重载的操作符语法糖等价于逐步invoke。相关文件文件内容test/llm-app.py最简链式调用test/llm-app-message.py消息模板系统test/prompt-template.pyPromptTemplate用法消息模板对照LangChain 类角色对应 OpenAISystemMessagePromptTemplatesystemsystemHumanMessagePromptTemplatehumanuserAssistantMessagePromptTemplateassistantassistantAIMessagePromptTemplateaiassistantToolMessagePromptTemplatetooltool5. 后端实现采用单一职责分层架构HTTP POST前端 Vue3API 层backend/server.py业务层backend/llm_app.pyDeepSeek API数据层backend/models.py层级文件职责API 层backend/server.py路由、SSE 流式响应、CORS、Uvicorn 启动业务层backend/llm_app.pyLLM 交互、对话历史、流式生成数据层backend/models.pyChatRequest/ChatMessage等 Pydantic 模型实验脚本backend/test.py独立验证 SSE 流式逻辑开发阶段原型依赖backend/requirements.txt类似前端的package.jsonSSE 流式协议大模型逐字生成场景首选Server-Sent Events (SSE)特性SSEWebSocket长轮询协议HTTP自定义 TCPHTTP方向单向服务器→客户端双向单向复杂度低高高适用LLM 流式输出实时游戏、协作旧系统兼容SSE 事件格式data: {json}\n\nbackend/server.py中chat_stream接口流程原型见backend/test.py发送start事件逐 token 发送token事件发送end事件含完整回复API 接口接口方法说明/api/chat/streamPOSTSSE 流式对话/api/healthGET健康检查6. 前端实现创建项目npmcreate vitelatest frontend ----templatevue-tscdfrontendnpminstall功能清单消息列表用户 / AI 气泡流式打字机效果Enter 发送 · ShiftEnter 换行清空对话 · 自动滚动 · 在线状态文件说明文件职责frontend/src/types/chat.tsMessage·ChatRequest·SSEEvent类型frontend/src/api/chat.tsfetchReadableStream处理 SSEPOST 不支持原生 EventSourcefrontend/src/composables/useChat.ts消息状态、发送、流式更新、取消请求frontend/src/App.vue聊天 UI 组件frontend/src/style.css全局样式SSE 前端处理要点// EventSource 不支持 POST故用 fetch ReadableStreamconstreaderresponse.body?.getReader()// 按 \n\n 分割解析 data: {...} 行// type: start | token | end | error完整实现见frontend/src/api/chat.ts。运行与验证后端cdbackend pipinstall-rrequirements.txt# 确保 backend/.env 中已配置 DEEPSEEK_API_KEYpython server.py# → http://0.0.0.0:8000前端cdfrontendnpminstallnpmrun dev浏览器打开 Vite 提示的本地地址输入问题并发送即可。请求链路DeepSeek APILangChainFastAPIVue3 前端用户浏览器DeepSeek APILangChainFastAPIVue3 前端用户浏览器loop[逐 token]输入问题点击发送POST /api/chat/streamstream_chat(message, history)chat.completions (streamTrue)chunktokenSSE data: {type: token}打字机效果更新SSE data: {type: end}显示完整回复一句话前端 → FastAPI → LangChain → DeepSeek API → 流式返回拓展阅读主题链接CGI / WSGI / ASGI 对比掘金文章FastAPI 官方文档fastapi.tiangolo.com/zhFastAPI 源码github.com/fastapi/fastapiUvicorn 文档uvicorn.orgJS → Python 对照学习langshift.dev

相关新闻

GBDT_Simple_Tutorial核心组件解析:决策树与损失函数的巧妙结合

GBDT_Simple_Tutorial核心组件解析:决策树与损失函数的巧妙结合

GBDT_Simple_Tutorial核心组件解析:决策树与损失函数的巧妙结合 【免费下载链接】GBDT_Simple_Tutorial python实现GBDT的回归、二分类以及多分类,将算法流程详情进行展示解读并可视化,庖丁解牛地理解GBDT。Gradient Boosting Decision Trees…

2026/7/23 22:09:35 阅读更多 →
TI McASP错误处理与初始化实战:嵌入式音频系统稳定性的关键

TI McASP错误处理与初始化实战:嵌入式音频系统稳定性的关键

1. 项目概述与核心价值在嵌入式音频系统开发中,尤其是涉及多通道、高保真音频传输的场景,接口的稳定性和可靠性是决定产品成败的关键。想象一下,你正在调试一个多路音频采集设备,突然扬声器里爆发出刺耳的噪音,或者音频…

2026/7/22 18:33:37 阅读更多 →
嵌入式音频系统McASP中断与DMA事件机制详解与配置实战

嵌入式音频系统McASP中断与DMA事件机制详解与配置实战

1. 项目概述与核心价值 在嵌入式音频系统开发中,如何高效、稳定地处理多通道音频数据流,一直是工程师面临的核心挑战。无论是专业调音台、车载信息娱乐系统,还是智能家居中的多房间音频,都需要一个能够同时处理数十个甚至上百个音…

2026/7/22 18:33:37 阅读更多 →

最新新闻

ClineRule系统提示词

ClineRule系统提示词

零容错设计原则(Fail Fast)任何异常/失败/边界情况必须立即暴露,宁可崩溃不可静默。 参考:docs/KnowLedge/零容错设计原则.md(完整版)哲学基础 软件熵增定律错误被掩盖 系统熵增,错误被暴露 系…

2026/7/23 22:09:11 阅读更多 →
虚拟机双网卡配置+uboot nfs下载zImage

虚拟机双网卡配置+uboot nfs下载zImage

校园网下虚拟机双网卡配置uboot nfs下载zImage 一、问题描述 环境:校园网网络 基于网线使用nfs进行远程下载需要使用桥接模式 需要使用NAT模式确保网络 NFS下载文件报错:Loading: *** ERROR: File lookup fail 二、虚拟机配置双网卡 打开虚拟机的…

2026/7/23 22:09:11 阅读更多 →
机器学习:数据的标注

机器学习:数据的标注

1.4数据的标注 1.监督学习(有输入和输出): 在已知输入和输出的情况下,通过训练建立起输入到输出的映射模型,应用最广的机器学习方法,可进一步分为分类和回归两类算法 2.无监督学习(没有输出&…

2026/7/23 22:09:11 阅读更多 →
Three.js 渲染管线揭秘:从几何体到像素的 GPU 绘制流程

Three.js 渲染管线揭秘:从几何体到像素的 GPU 绘制流程

Three.js 渲染管线揭秘:从几何体到像素的 GPU 绘制流程 一、3D 大屏的帧率,怎么就突然崩了 3D 可视化大屏上线第一周,物体数量刚过一万,帧率从 60 掉到 12。老板站在屏幕前数秒数,研发比他还尴尬。这事我见过太多团队栽…

2026/7/23 22:09:11 阅读更多 →
基于SpringBoot的大学生旅游平台的设计

基于SpringBoot的大学生旅游平台的设计

摘 要 在信息技术迅猛发展的大环境之下,大学生旅游市场上的消费行为表现出非常鲜明的多元化特点。传统的获取信息的途径已经不能适应现代用户对于高效率、社交属性旅行服务的要求。为了克服以上问题,本文使用Spring Boot框架来创建一个专门给大学生使用…

2026/7/23 22:09:11 阅读更多 →
ChatGPT、Codex、Plus与Pro:AI写代码越快,任务越要先拆清楚

ChatGPT、Codex、Plus与Pro:AI写代码越快,任务越要先拆清楚

过去使用AI写代码,很多开发者最关注的是提示词。需求怎么描述,技术栈怎么指定,输出格式怎么限制,怎样让模型一次生成更多代码,几乎成了AI编程的核心技巧。但当ChatGPT开始参与需求分析,Codex开始进入代码仓…

2026/7/23 22:08:11 阅读更多 →

日新闻

从单点好评到指数级传播:AI副业主理人必须掌握的4层口碑渗透模型(含ROI测算表)

从单点好评到指数级传播:AI副业主理人必须掌握的4层口碑渗透模型(含ROI测算表)

更多请点击: https://intelliparadigm.com 第一章:从单点好评到指数级传播:AI副业主理人必须掌握的4层口碑渗透模型(含ROI测算表) 当AI副业主理人不再仅满足于单次服务交付,而是主动构建可复用、可裂变、可…

2026/7/23 0:00:25 阅读更多 →
AI写作开头钩子设计:为什么你的AI文案完读率不足18%?——基于2,346篇A/B测试报告的归因分析

AI写作开头钩子设计:为什么你的AI文案完读率不足18%?——基于2,346篇A/B测试报告的归因分析

更多请点击: https://codechina.net 第一章:AI写作开头钩子设计:为什么你的AI文案完读率不足18%?——基于2,346篇A/B测试报告的归因分析 在对2,346篇跨行业AI生成文案的A/B测试数据进行聚类分析后,我们发现&#xff1…

2026/7/23 0:01:26 阅读更多 →
Chitchatter完整指南:免费开源的终极点对点安全聊天工具

Chitchatter完整指南:免费开源的终极点对点安全聊天工具

Chitchatter完整指南:免费开源的终极点对点安全聊天工具 【免费下载链接】chitchatter Secure peer-to-peer chat that is serverless, decentralized, and ephemeral 项目地址: https://gitcode.com/gh_mirrors/ch/chitchatter Chitchatter是一款革命性的安…

2026/7/23 0:01:26 阅读更多 →

周新闻

Go语言静态资源打包方案对比与实践指南

Go语言静态资源打包方案对比与实践指南

1. 项目背景与核心需求在Go语言开发中,我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源,还是配置文件、证书等,都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下,但这…

2026/7/22 8:58:19 阅读更多 →
Go语言实现高性能LDAP认证服务的架构与实践

Go语言实现高性能LDAP认证服务的架构与实践

1. 项目背景与核心价值LDAP(轻量级目录访问协议)作为企业级身份认证的黄金标准,已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时,发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…

2026/7/22 19:43:43 阅读更多 →
【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

更多请点击: https://intelliparadigm.com 第一章:AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”,而是以可解释、可审计、可迭代的方式,赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…

2026/7/23 17:49:47 阅读更多 →

月新闻