05.通过pycharm创建项目管理Anaconda环境
提示:帮帮志会陆续更新非常多的IT技术知识,希望分享的内容对您有用。本章分享的是springboot的使用。前后每一小节的内容是存在的有:学习and理解的关联性。【帮帮志系列文章】:每个知识点,都是写出代码和运行结果且前后关联上的去分析和说明(能大量节约您的时间)。
所有文章都*不会*直接把代码放那里,让您自己去看去理解。我希望我的内容对您有用而努力~
系列文章总目录 ,除了当前的AI大模型系列外,还包括java前后分离,Python,AI,大数据,游戏,面试等等,系列文章归纳在此:
系列文章---总目录
文章目录
前言
前提:本系列实现AI大模型,使用的是Python语言,用户界面使用的是html,通过vue框架来实现的。所以:需要掌握和具备这些前提知识(前端用vue.js来交互数据,是为了更加贴合于公司上班和市场运用)
系列是从0开始实现【大模型对话】:
01.【AI大模型对话】通过简化大语言模型(LLM)技术来实现对话
包括:环境准备,ollama安装及配置和拉取,安装好了Anaconda开发软件,安装好了pytorch,确定的电脑的软件(版本)和硬件设备(GPU英伟达),代码等等
本次是附件额外的内容,分享一个概念定义:流式输出和非流式输出的定义和区别
内容全部放一起,篇幅太大了~
一、概念
非流式输出
定义: 也称为"阻塞式响应"。用户发送请求后,模型需要完全生成整个回复内容,才会将完整的文本一次性返回给客户端。
类比: 就像发电子邮件。你写好了整封邮件,点击"发送",对方会在一段时间后收到完整的邮件内容。在等待期间,你看不到任何过程。
流式,像水一样流动,这个是非这种 直接给你一杯水,用户需要等待另一边接水的过程(拼接内容ing)
流式输出
定义: 用户发送请求后,模型一旦生成出第一个词或第一批词,就立即通过网络流式传输给客户端,并持续不断地生成和传输后续内容,直到结束。允许程序在数据生成的同时逐步接收和处理数据。大模型收到输入后并不是一次性生成最终结果,而是逐步地生成中间结果,最终结果由中间结果拼接而成。
类比: 就像打电话或现场聊天。对方说一句话,你马上就能听到,然后他接着说下一句,整个过程是连续、实时的。
流式,像水一样流动,源源不断的生成内容
二、技术相关
非流式输出
请求流程:
···客户端: 发送一个包含用户输入的 HTTP POST 请求。
服务器端:
···接收请求,调用大语言模型进行推理。
模型自回归地生成每一个 token,但这些 token 只在服务器内存中拼接,不会立即发送。
直到模型生成出代表结束的标志(如 ),或达到最大生成长度。
服务器端: 将完整的、最终的文本序列封装成一个 HTTP 响应。
客户端: 在等待一段时间(可能数秒或数十秒)后,一次性收到所有数据并展示给用户。
技术要点:
使用的是标准的 HTTP 请求-响应 范式。
服务器端在生成期间会阻塞这个请求连接(尽管内部是异步的,但对客户端而言连接是保持的)。
实现简单,易于调试和记录日志
流式输出
请求流程:
客户端: 发送请求,但通常会使用支持流式的协议,如 HTTP Streaming(最常见,通过 Transfer-Encoding: chunked)或 WebSocket。
服务器端:
···接收请求,调用大语言模型。
···模型生成第一个 token 后,服务器立即将其封装到一个数据块中,并通过之前建立的连接发送给客户端。
···模型继续生成第二个、第三个... token,每个 token 一经生成就立即发送。
客户端: 几乎在请求发出后的几百毫秒内就开始接收到数据块,并实时地、逐字地将内容渲染到用户界面上。
技术要点:
···协议: 主要依赖 Server-Sent Events (SSE) 或 WebSocket。SSE 是基于 HTTP 的单向通信,非常适合这种服务器向客户端推送数据的场景,且实现简单。WebSocket 是全双工的,更强大但稍复杂。
···数据格式: 通常使用易于解析的格式,如 data: {"token": "你好"}\n\n(SSE 格式)或 JSON 片段。
···后端框架支持: 现代 Web 框架(如 FastAPI, Flask, Spring WebFlux)都提供了便捷的方式来创建流式响应。
···前端处理: 前端需要使用相应的 API(如 EventSource 用于 SSE,或 WebSocket 对象)来监听和处理持续流入的数据。
三、对比
| 特性 | 非流式输出 | 流式输出 |
|---|---|---|
| 用户体验 | 不好。用户需要面对一个"空白期",不知道系统是在工作还是已经卡死,容易产生焦虑。 | 极佳。即时反馈让用户感知到系统正在"思考"和"生成",体验更流畅、更自然。 |
| 感知延迟 | 高。即使实际生成时间相同,用户感受到的延迟是从请求到收到完整响应的时间。 | 低。首个 token 的到达时间(Time to First Token)非常短,极大地降低了用户的感知延迟。 |
| 技术复杂度 | 低。标准的 HTTP API,和web一致,一个是数据库返回结果一个是大模型返回结果 | 中。需要处理流式协议、连接管理、错误恢复(如网络中断)等,复杂度更高。 |
| 网络要求 | 相对宽容,一次成功即可。 | 要求更稳定的连接,长时间连接可能因网络问题中断。 |
| 适用场景 | 对实时性要求不高的后台任务、一次性内容生成。 | 对话式 AI、需要实时交互的应用。 |
| 错误处理 | 简单。只需判断最终 HTTP 状态码即可。 | 复杂。可能需要处理流中途中断、部分内容丢失等情况。 |
四、应用场景
非流式输出 的典型场景
···内容生成API: 当第三方调用你的模型API用于生成文章、摘要、邮件草稿等,并将结果存储到数据库或用于后续处理时,非流式接口更简单可靠。
···数据分析与报告: 生成一份完整的数据分析报告,不需要边生成边看。
···代码补全(某些情况): 如果是一次性生成一整段代码块,而非逐行补全,非流式也适用。
···后台批量处理: 处理大量文本任务,如批量翻译、情感分析等,效率优先,无需实时交互。
流式输出 的典型场景
···对话式AI助手: 这是最经典的应用,如 ChatGPT、Copilot 等。流式输出模拟了真人对话的节奏,是当前AI对话产品的标准配置。
···实时语音交互: 与 TTS 结合,模型生成一个字,就立刻合成并播放一个字,实现真正的实时对话。
···代码补全(主流): 在 IDE 中,代码是一个个字符或单词地弹出,极大地提高了编程效率。
···实时翻译: 在会议、直播等场景中,演讲者说一句,翻译结果就实时显示出一句。
···创意写作辅助: 看着AI逐字"创作",可以随时给予引导或停止,创作过程更具互动性。
文章拆分了,全部放一起篇幅太大,这里仅仅分享主题:
流式输出和非流式输出的定义和区别
要看代码,点击上面链接,在系列里面,不光有代码,还有环境配置,安装,等等等一系列~
总结
说明一下:整个这个系列实现AI大模型对话项目。序号文章一共也就10几篇,只有核心图文重点操作步骤来实现这个目标
(包括这个AI大模型的环境搭建,深度学习,数据处理,流输出,流推理等等)
(基本上您边看边写:一个小时或者一上午就能跟着一起手搓一个,然后您可以自行添加功能和内容在您项目里面)
其他扩展细节知识点,本系列省略了(或者有链接)如:
Python语法的
vue语法的
一些大模型的知识
(会陆续更新非常多的IT技术知识及泛IT的电商知识,可以点个关注,共同交流。ღ( ´・ᴗ・` )比心)
(也欢迎评论,提问。 我会依次回答~)