基于 GPT 的 Web 聊天系统
近年来,大型语言模型(LLM)的发展为构建高度智能化的聊天机器人提供了新的契机。GPT 等 LLM 具备强大的自然语言生成和理解能力,使得与之进行流畅、自然、多层次的对话成为可能。本毕业论文旨在开发一个基于 GPT 的 Web 聊天系统,探索在用户交互、模型应用等方面的最新技术和实践,为用户带来全新的聊天体验。
研究背景与意义
近年来,大型语言模型 (LLM) 的快速发展为聊天机器人领域带来了前所未有的机遇。LLM 具备强大的文本生成、语义理解、代码生成等能力,使得构建高度智能化的聊天机器人成为可能。然而,LLM 也面临着一些挑战,如如何构建用户友好的交互界面如何解决 LLM 的"幻觉"问题如何在保障数据安全和隐私的前提下充分利用 LLM 的能力等。
本项目旨在设计和开发一个基于 LLM 的 Web 聊天系统,探索应对这些挑战的解决方案,为用户提供更智能、更便捷、更安全的聊天体验。
创新点
用户友好的交互体验
通过多端适配和多模态交互,为用户提供流畅自然的聊天体验。
解决模型"幻觉"问题
采用 Function Calling 和 RAG 等技术手段,缓解大语言模型产生的"幻觉"现象。
隐私安全解决方案
提出了本地部署开源大语言模型和模型微调的方案,确保用户数据安全。
设计思路与系统架构
用户界面设计
采用前后端分离架构,前端使用 Vue3.js 开发响应式用户界面,确保界面的流畅性和易用性。用户界面设计遵循简洁直观的原则,支持 Markdown 渲染、代码高亮等功能,为用户提供优质的展示体验。
系统架构设计
采用前后端分离架构,分离聊天、搜索、模型管理等功能模块,提高系统的可扩展性和维护性。使用消息队列实现异步通信,提高系统的吞吐量和容错能力。
系统集成与部署
模块
描述
技术栈
前端
响应式Web界面,支持Markdown渲染、代码高亮等功能
Vue.js, Marked.js
后端
提供RESTful API,负责处理请求、调用LLM等
Python, Sanic
LLM服务
本地封装运行开源LLM如Llama3 8B,提供推理API
Ollama
Function Calling,RAG
扩展工具(联网查询)、检索增强生成
Langchain
数据库
存储用户信息、聊天记录等数据
SQLite、SQLAlchemy
搜索引擎
为功能搜索和知识库检索提供支持
Chroma DB
缓存
缓存频繁访问的数据,提高系统响应速度
Redis
用户友好的交互界面

1

简洁直观的 UI 布局
界面布局经过精心设计,支持多端自适应适配,让用户可以快速上手,轻松找到所需功能。Markdown适配,清晰地展示对话内容,避免信息混乱。

2

实时流畅的对话体验
通过 SSE 技术实现 LLM 流式输出,让用户实时看到模型生成的内容,增强交互性。支持历史记录管理,方便回顾和查阅。

3

多模型切换
用户可根据需求选择不同的语言模型,如更擅长对话、代码生成或知识问答的模型,满足个性化需求。
多模型支持
支持从 OpenAI GPT、Google Gemini、Meta Llama 等主流大语言模型中进行选择,满足不同场景和用户需求。可在系统设置界面 灵活切换 所用的语言模型,提升对话的效果和专业性。
系统采用云端部署架构,可 实时获取模型更新 并无缝切换,提高用户体验。针对性能要求高的场景,也支持将模型部署在本地服务器上,提升响应速度和数据安全性。
系统具备 多模态交互支持,可应对文字、图像等多种输入输出方式。
多模态交互
多模态大语言模型不仅能识别用户的文字输入,还可以理解和生成图像。
如GPT4o、Gemini 等多模态模型,可以识别到用户发送的图片并且基于此开始对话。
而通过 DALL-E 3 或者SDXL等文生图模型,系统可以根据用户的文字描述生成相应的图片,为交互体验增添更多可视化元素。
无论是提供简单的图像查询还是复杂的图文描述,我们的 AI 助手都能给出相应的输出,为用户提供多样化的互动方式,充分满足个性化需求。
网络安全与隐私保护
身份认证
采用 JWT 技术实现用户身份认证和授权,防止未经授权的访问。对用户密码进行加密存储,确保用户信息安全。
输入验证
对用户输入进行严格验证和过滤,防止 SQL 注入、XSS 攻击等网络攻击。使用参数化查询等安全编码实践,避免代码漏洞。
数据加密
对敏感数据如用户信息、聊天记录等进行加密存储,防止数据泄露。定期备份系统数据,确保数据安全。
安全维护
及时更新系统依赖库和框架,修复安全漏洞。定期进行安全测试,发现并解决潜在风险。
大语言模型局限性
大语言模型虽然在各领域表现出色,但同时也存在一些非常严重的问题以及局限性。其中最突出的是大模型的幻觉,英文专业名词是Hallucination。用一句现在网络流行语来解释就是:一本正经地胡说八道,本质上是这些模型在生成文本时,有时会产生看似合理但实际上不准确或完全错误的信息。这种现象的本质在于模型是基于大量文本数据进行训练的,它们通过模式识别来生成回复,但并不具备真正的理解或意识。
幻觉现象的主要原因包括:
  1. 统计模式而非理解:大语言模型通过学习大量文本数据中的模式来生成回复,而不是通过理解语言和背景知识。因此,它们在面对没有见过或不熟悉的情况时,可能会根据统计相关性来生成错误的信息。
  1. 缺乏真实世界的知识验证:大语言模型无法访问实时的外部信息或验证其生成的内容。这意味着它们无法对其输出进行真实性或准确性的检查,从而可能会生成不正确的信息。
  1. 训练数据的局限性:尽管大语言模型是基于大量的文本数据进行训练的,但这些数据并不是完美的,可能包含错误、不完整或偏见的信息,从而影响模型的生成结果。
  1. 过度泛化:模型可能会在生成过程中进行过度泛化,即将某些特定情况下的模式应用到不相关的上下文中,从而导致错误的生成。
Function Calling: 赋能 LLM
1
识别用户意图
LLM 能够理解用户的自然语言输入,识别出用户的真正意图是什么,比如查询天气、搜索信息、执行计算等。
2
调用外部服务
根据用户意图,LLM 自动调用相应的外部函数或服务,如天气 API、搜索引擎、数据库等,获取所需的信息或知识。
3
生成结果
将获取到的结构化数据与 LLM 的自然语言生成能力相结合,最终生成富有内容且通顺的自然语言回复。
Function Calling 示例
通过 Function Calling 功能,大语言模型可以实现与各类第三方插件类工具的集成,例如结合搜索引擎接口,为用户提供实时的信息查询服务。以天气查询为例,用户的自然语言输入会被模型识别并转换为对应的搜索请求,调用气象 API 获取所需数据,最后生成友好的回复结果。
这不仅大大提高了用户体验,也扩展了 LLM 的实用性,让它能够直接解决现实生活中的问题,而无需局限于纯粹的对话互动。通过 Function Calling 的赋能,LLM 可以成为全方位的智能助手。
RAG: 知识库增强生成

1

数据提取与处理
从指定数据源(如网页、文档、数据库等)获取相关的文本数据,并对原始数据进行清洗、去重、格式化等预处理操作。

2

文本分块与向量化
将预处理后的文本数据分割成多个片段,使用 Embedding 模型将每个片段转换成对应的向量表示,方便后续进行语义检索。

3

向量数据库检索
将文本片段的向量表示存储到向量数据库中。当用户提出问题时,根据用户问题的向量表示,检索语义最相似的文本片段。

4

LLM 生成答案
将检索到的相关文本片段作为上下文信息输入 LLM,LLM 结合这些知识生成更加准确、可靠的答案。
RAG 知识库问答
用户可以上传本地 PDF 等格式的文档,系统会自动分析提取文档内容,并建立对应的知识库。
当用户提出问题时,大语言模型会利用 RAG(Retrieval Augmented Generation)技术从知识库中检索相关信息,并结合语义理解生成精确、可靠的回答。这不仅提高了 LLM 的实用性,也增强了用户体验。
本地部署与微调 LLM
Ollama 本地部署
Ollama 是一个开源的 LLM 本地部署框架,提供简单易用的工具,方便用户在个人电脑或服务器上快速部署和运行开源 LLM,支持多种模型。它提供模型管理、API 调用、性能优化等功能,帮助用户充分利用本地计算资源运行 LLM。
量化与 LoRA 微调
模型量化技术可将模型参数从高精度浮点数转换为低精度整数,从而减小模型大小,降低计算资源需求。LoRA 是一种参数高效的微调技术,只训练少量新增参数,大幅降低微调成本,提高效率。Unsloth 则是一个集成工具,简化了量化、LoRA 等技术的应用。
项目未来展望
可视化工作流
通过集成可视化工作流技术,用户可以更直观地管理和协调基于 LLM 的各种 Agent,提高系统的灵活性和可扩展性。
实时协作与知识共享
添加多人团队实时协作功能,允许不同用户同步讨论并共享知识。同时实现聊天记录和知识库的版本控制,确保信息的可靠性和可追溯性。
性能优化
利用 模型量化、GPU 加速、模型并行等技术,实现高效的本地部署模型推理,提升响应速度。通过缓存和预取等方式优化数据处理流程,降低延迟。
实时多模态交互
除了常规语言聊天框之外,利用GPT4o等高速低延时的先进多模态大模型,使用webRTC技术,实现实时的语音、图片、视频等的即时交互
LLM Agent 编排技术
复合任务分解
将复杂的任务拆解成多个子任务,通过协调多个 LLM Agent 来完成原始任务。每个 Agent 专注于特定的子任务,发挥自身的优势和能力。
Agent 功能调用
赋予每个 LLM Agent 调用外部函数或服务的能力,如搜索、计算等,增强 Agent 的信息获取和知识覆盖面。
协作与控制
设计一个统一的协作和控制机制,实现 Agent 之间的信息交互和任务协调,有效利用各个 Agent 的优势,完成复杂任务。
闭环学习
基于任务反馈,持续优化和调整 Agent 编排策略,使 Agent 能够更高效、更准确地完成特定类型的任务。
即时多模态交互
语音即时交互
整合语音识别和语音合成技术,实现基于语音的自然交互方式。用户可以直接与聊天系统进行对话,系统也可以用语音形式回复,期间模型快速响应,近乎实时,可打断对话,提高交互的便捷性和自然性。
图像视频即时理解
赋予聊天系统图像理解能力,用户可以即时提供实时的图片视频数据,系统可以快速的识别和描述图片内容,实时响应。这种实时的多模态交互有助于丰富用户体验。
性能优化

1

模型量化
使用量化技术将模型参数从高精度浮点数转换为低精度整数,减小模型大小,降低计算资源需求,提高推理速度。

2

推理加速
利用 GPU 加速、模型并行等技术,实现高效的模型推理,提升响应速度。通过缓存和预取等方式优化数据处理流程,降低延迟。

3

前端优化
使用代码分割、Tree-Shaking、按需加载等技术,优化前端代码的加载和执行效率,提升页面渲染速度。

4

系统监控
持续监控系统资源使用情况,及时发现并解决性能瓶颈,保证系统的高效运行。
实时协作与知识共享
1
多人对话
支持多个用户同时加入同一个对话,实现实时协作。每个用户都可以查看和回复对话内容,方便团队成员进行讨论和协作。
2
知识库共享
将每个对话生成的有价值的知识内容存储到知识库中,并允许所有用户访问和查阅这些知识,促进知识的积累和传播。
3
版本控制
对对话内容和知识库实施版本控制机制,记录每次更新和修改,方便回溯和查看历史记录。
致谢
在毕业论文答辩之际,我衷心地向各位老师和同学们表达最诚挚的感谢。您们的指导和支持,让我得以顺利完成学业,开启人生的新篇章。感谢大家的耐心陪伴和鼓舞,这些宝贵的时光将永远铭刻于心。