wenda

wenda

多模型集成的开源大规模语言模型调用平台

闻达是一个开源的大规模语言模型调用平台,集成多种离线和在线LLM模型。平台内置本地知识库和搜索引擎,并提供Auto脚本功能用于自定义对话流程。适合个人和中小企业使用,注重知识安全和私密性。平台还包括对话历史管理和多用户支持等实用功能,旨在实现高效的特定环境内容生成。

大规模语言模型知识库Auto脚本GLMRWKVGithub开源项目

闻达:一个大规模语言模型调用平台

本项目的设计目标是实现针对特定环境的高效内容生成,同时考虑个人和中小企业的计算资源限制,以及知识安全和隐私问题。为达成这一目标,平台集成了以下功能:

  1. 知识库:支持对接本地离线向量库本地搜索引擎和在线搜索引擎等。
  2. 多种大语言模型:目前支持离线部署的模型包括chatGLM-6B\chatGLM2-6BchatRWKVllama系列(不推荐中文用户)moss(不推荐)baichuan(需配合lora使用,否则效果差)Aquila-7BInternLM,在线API访问支持openai apichatGLM-130b api
  3. Auto脚本:通过开发插件形式的JavaScript脚本,为平台添加功能,实现包括但不限于自定义对话流程、访问外部API、在线切换LoRA模型。
  4. 其他实用功能:对话历史管理、内网部署、多用户同时使用等。

交流QQ群:LLM使用和综合讨论群162451840;知识库使用讨论群241773574(已满,请去QQ频道讨论);Auto开发交流群744842245QQ频道

(目录略)

图片1 图片2

安装部署

各模型功能说明

(表格内容略)

懒人包

百度云

链接:https://pan.baidu.com/s/1idvot-XhEvLLKCbjDQuhyg?pwd=wdai

夸克

链接:https://pan.quark.cn/s/c4cb08de666e 提取码:4b4R

介绍

默认参数在6G显存设备上运行良好。最新版懒人版已集成一键更新功能,建议使用前更新。

使用步骤(以glm6b模型为例):

  1. 下载懒人版主体和模型,模型可以用内置脚本从HF下载,也可以从网盘下载。
  2. 如果没有安装CUDA11.8,从网盘下载并安装。
  3. 双击运行运行GLM6B.bat
  4. 如果需要生成离线知识库,参考 知识库

自行安装

注意:一定要查看example.config.yml,里面对各功能有更详细的说明!

1.安装库

通用依赖:pip install -r requirements/requirements.txt 根据使用的 知识库进行相应配置

2.下载模型

根据需要,下载对应模型。

建议使用chatRWKV的RWKV-4-Raven-7B-v11,或chatGLM-6B。

3.参数设置

example.config.yml重命名为config.yml,根据里面的参数说明,填写你的模型下载位置等信息

Auto

Auto功能通过JavaScript脚本实现,使用油猴脚本或直接放到autos目录的方式注入至程序,为闻达添加各种自动化功能。

Auto 开发函数列表

函数(均为异步调用)功能说明
send(s,keyword = "",show=true)向LLM发送信息,返回模型回复的字符串s:输入模型文本;keyword:聊天界面显示文本;show:是否在聊天界面显示
add_conversation(role, content)添加会话信息role:'AI'或'user';content:字符串
save_history()保存会话历史对话结束后会自动保存,但手动添加的对话需要手动保存
find(s, step = 1)从知识库查找返回json数组
find_dynamic(s,step=1,paraJson)从动态知识库查找;参考闻达笔记AutoparaJson:{libraryStategy:"sogowx:3",maxItmes:2}
zsk(b=true)开关知识库
lsdh(b=true)开关历史对话开启知识库时应关闭历史
speak(s)使用TTS引擎朗读文本调用系统引擎
copy(s)使用浏览器clipboard-write复制文本需要相关权限

Auto 开发涉及代码段

在左侧功能栏添加内容:

func.push({
    name: "名称",
    question: async () => {
        let answer=await send(app.question)
        alert(answer)
    },
})

在下方选项卡添加内容:

app.plugins.push({ icon: 'note-edit-outline', url: "/static/wdnote/index.html" })

在指定RTST知识库查找:

find_in_memory = async (s, step, memory_name) => {
   response = await fetch("/api/find_rtst_in_memory", {
      method: 'post',
      body: JSON.stringify({
         prompt: s,
         step: step,
         memory_name: memory_name
      }),
      headers: {
         'Content-Type': 'application/json'
      }
   })
   let json = await response.json()
   console.table(json)
   app.zhishiku = json
   return json
}

上传至指定RTST知识库:

upload_rtst_zhishiku = async (title, txt,memory_name) => {
   response = await fetch("/api/upload_rtst_zhishiku", {
      method: 'post',
      body: JSON.stringify({
         title: title,
         txt: txt,
         memory_name: memory_name
      }),
      headers: { 'Content-Type': 'application/json' }
   })
   alert(await response.text())
}

保存指定RTST知识库:

save_rtst = async (memory_name) => {
   response = await fetch("/api/save_rtst_zhishiku", {
      method: 'post',
      body: JSON.stringify({
         memory_name: memory_name
      }),
      headers: { 'Content-Type': 'application/json' }
   })
   alert(await response.text())
}

访问SD_agent:

response = await fetch("/api/sd_agent", {
   method: 'post',
   body: JSON.stringify({
         prompt: `((masterpiece, best quality)), photorealistic,` + Q,
         steps: 20,
         // sampler_name: "DPM++ SDE Karras",
         negative_prompt: `paintings, sketches, (worst quality:2), (low quality:2), (normal quality:2), lowres, normal quality, ((monochrome)), ((grayscale)), skin spots, acnes, skin blemishes, age spot, glans`
   }),
   headers: {
         'Content-Type': 'application/json'
   }
})
try {
   let json = await response.json()
   add_conversation("AI", '![](https://raw.githubusercontent.com/wenda-LLM/wenda/main/data:image/png;base64,' + json.images[0] + ")")
} catch (error) {
   alert("连接SD API失败,请确认已开启agents库,并将SD API地址设置为127.0.0.1:786")
}

部分内置 Auto 使用说明

文件名功能
0-write_article.js写论文:根据题目或提纲写论文
0-zsk.js知识库增强和管理
face-recognition.js纯浏览器端人脸检测:通过识别嘴巴开合,控制语音输入。因浏览器限制,仅本地或TLS下可用
QQ.jsQQ机器人:配置过程见文件开头注释
block_programming.js猫猫也会的图块化编程:通过拖动图块实现简单Auto功能
1-draw_use_SD_api.js通过agents模块(见example.config.yml<Library>)调用Stable Diffusion接口绘图

以上功能主要用于展示auto用法,进一步能力有待广大用户进一步发掘。

auto示例程序

知识库

知识库原理是在搜索后,生成一些提示信息插入到对话里面,这样知识库的数据就被模型知道了。rtst模式计算语义并在本地数据库中匹配;fess模式(相当于本地搜索引擎)和bing模式均调用搜索引擎搜索获取答案。

为防止爆显存和受限于模型理解能力,插入的数据不能太长,所以有字数和条数限制,这一问题可通过知识库增强Auto解决。

正常使用中,勾选右上角知识库即开启知识库。

有以下几种方案:

  1. rtst模式,使用sentence_transformers+faiss进行索引,支持预先构建索引和运行中构建。
  2. bing模式,使用cn.bing搜索,仅国内可用
  3. bingsite模式,使用cn.bing站内搜索,仅国内可用
  4. fess模式,使用本地部署的fess搜索,并进行关键词提取

rtst模式

使用sentence_transformers+faiss进行索引、匹配,并连同上下文返回。目前支持txt和pdf格式。

支持预先构建索引和运行中构建,其中,预先构建索引强制使用cuda,运行中构建根据config.yml(复制example.config.yml)中rtst段的device(embedding运行设备)决定,对于显存小于12G的用户建议使用CPU

Windows预先构建索引运行:plugins/buils_rtst_default_index.bat

Linux直接使用wenda环境执行 python plugins/gen_data_st.py 需要将模型下载并放置在model文件夹中,并将txt格式的语料放置在txt文件夹中。

使用微调模型提高知识库回答准确性

闻达用户"帛凡"训练并提供了权重合并模型和lora权重文件,详细信息请见https://huggingface.co/fb700/chatglm-fitness-RLHF 。使用该模型或lora权重文件,与chatglm-6b、chatglm2-6b、百川等模型相比,在闻达知识库平台中的总结能力可获得显著提升。

模型

  1. GanymedeNil/text2vec-large-chinese 不再推荐,不支持英文且显存占用高
  2. moka-ai/m3e-base 推荐

fess模式

在本机使用默认端口安装fess后可直接运行。否则需修改config.yml(复制example.config.yml)中fess_host127.0.0.1:8080为相应值。FESS安装教程

知识库调试

[图片1] [图片2] [图片3]

清洗知识库文件

安装utool工具,uTools是一个极简、插件化的桌面软件,可以安装各种使用nodejs开发的插件。您可以使用插件对闻达的知识库进行数据清洗。请自行安装以下推荐插件:

  • 插件"解散文件夹",用于将子目录的文件移动到根目录,并删除所有子目录。
  • 插件"重复文件查找",用于删除目录中的重复文件,原理是对比文件md5。
  • 插件"文件批量重命名",用于使用正则匹配和修改文件名,并将分类后的文件名进行知识库的分区操作。

模型配置

chatGLM-6B/chatGLM2-6B

运行:run_GLM6B.bat

模型位置等参数:修改config.yml(复制example.config.yml)。

默认参数在GTX1660Ti(6G显存)上运行良好。

chatRWKV

支持torch和cpp两种后端实现,运行:run_rwkv.bat

模型位置等参数:见config.yml(复制example.config.yml)。

torch

可使用内置脚本对模型量化,运行:cov_torch_rwkv.bat。此操作可以加快启动速度。

在安装vc后支持一键启动CUDA加速,运行:run_rwkv_with_vc.bat。强烈建议安装!!!

cpp

可使用内置脚本对torch版模型转换和量化。运行:cov_ggml_rwkv.bat

设置strategy诸如"Q8_0->8"即支持量化在cpu运行,速度较慢,没有显卡或者没有nvidia显卡的用户使用。

注意:默认windows版本文件为AVX2,默认Linux版本文件是在debian sid编译的,其他linux发行版本未知。

可以查看:saharNooby/rwkv.cpp,下载其他版本,或者自行编译。

Aquila-7B

  1. 运行pip install FlagAI。注意FlagAI依赖很多旧版本的包,需要自己编译,所以如果想基于python3.11运行或者想在一个环境同时跑其他模型,建议去下懒人包
  2. 运行:run_Aquila.bat

模型位置等参数:见config.yml(复制example.config.yml)。注意模型要在这里下:https://model.baai.ac.cn/model-detail/100101

基于本项目的二次开发

wenda-webui

项目调用闻达的api接口实现类似于new bing的功能。技术栈:vue3 + element-plus + ts [图片4]

接入Word文档软件

通过宏,调用闻达HTTP API [图片5]

[Star History Chart]

编辑推荐精选

讯飞智文

讯飞智文

一键生成PPT和Word,让学习生活更轻松

讯飞智文是一个利用 AI 技术的项目,能够帮助用户生成 PPT 以及各类文档。无论是商业领域的市场分析报告、年度目标制定,还是学生群体的职业生涯规划、实习避坑指南,亦或是活动策划、旅游攻略等内容,它都能提供支持,帮助用户精准表达,轻松呈现各种信息。

AI办公办公工具AI工具讯飞智文AI在线生成PPTAI撰写助手多语种文档生成AI自动配图热门
讯飞星火

讯飞星火

深度推理能力全新升级,全面对标OpenAI o1

科大讯飞的星火大模型,支持语言理解、知识问答和文本创作等多功能,适用于多种文件和业务场景,提升办公和日常生活的效率。讯飞星火是一个提供丰富智能服务的平台,涵盖科技资讯、图像创作、写作辅助、编程解答、科研文献解读等功能,能为不同需求的用户提供便捷高效的帮助,助力用户轻松获取信息、解决问题,满足多样化使用场景。

热门AI开发模型训练AI工具讯飞星火大模型智能问答内容创作多语种支持智慧生活
Spark-TTS

Spark-TTS

一种基于大语言模型的高效单流解耦语音令牌文本到语音合成模型

Spark-TTS 是一个基于 PyTorch 的开源文本到语音合成项目,由多个知名机构联合参与。该项目提供了高效的 LLM(大语言模型)驱动的语音合成方案,支持语音克隆和语音创建功能,可通过命令行界面(CLI)和 Web UI 两种方式使用。用户可以根据需求调整语音的性别、音高、速度等参数,生成高质量的语音。该项目适用于多种场景,如有声读物制作、智能语音助手开发等。

Trae

Trae

字节跳动发布的AI编程神器IDE

Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。

AI工具TraeAI IDE协作生产力转型热门
咔片PPT

咔片PPT

AI助力,做PPT更简单!

咔片是一款轻量化在线演示设计工具,借助 AI 技术,实现从内容生成到智能设计的一站式 PPT 制作服务。支持多种文档格式导入生成 PPT,提供海量模板、智能美化、素材替换等功能,适用于销售、教师、学生等各类人群,能高效制作出高品质 PPT,满足不同场景演示需求。

讯飞绘文

讯飞绘文

选题、配图、成文,一站式创作,让内容运营更高效

讯飞绘文,一个AI集成平台,支持写作、选题、配图、排版和发布。高效生成适用于各类媒体的定制内容,加速品牌传播,提升内容营销效果。

热门AI辅助写作AI工具讯飞绘文内容运营AI创作个性化文章多平台分发AI助手
材料星

材料星

专业的AI公文写作平台,公文写作神器

AI 材料星,专业的 AI 公文写作辅助平台,为体制内工作人员提供高效的公文写作解决方案。拥有海量公文文库、9 大核心 AI 功能,支持 30 + 文稿类型生成,助力快速完成领导讲话、工作总结、述职报告等材料,提升办公效率,是体制打工人的得力写作神器。

openai-agents-python

openai-agents-python

OpenAI Agents SDK,助力开发者便捷使用 OpenAI 相关功能。

openai-agents-python 是 OpenAI 推出的一款强大 Python SDK,它为开发者提供了与 OpenAI 模型交互的高效工具,支持工具调用、结果处理、追踪等功能,涵盖多种应用场景,如研究助手、财务研究等,能显著提升开发效率,让开发者更轻松地利用 OpenAI 的技术优势。

Hunyuan3D-2

Hunyuan3D-2

高分辨率纹理 3D 资产生成

Hunyuan3D-2 是腾讯开发的用于 3D 资产生成的强大工具,支持从文本描述、单张图片或多视角图片生成 3D 模型,具备快速形状生成能力,可生成带纹理的高质量 3D 模型,适用于多个领域,为 3D 创作提供了高效解决方案。

3FS

3FS

一个具备存储、管理和客户端操作等多种功能的分布式文件系统相关项目。

3FS 是一个功能强大的分布式文件系统项目,涵盖了存储引擎、元数据管理、客户端工具等多个模块。它支持多种文件操作,如创建文件和目录、设置布局等,同时具备高效的事件循环、节点选择和协程池管理等特性。适用于需要大规模数据存储和管理的场景,能够提高系统的性能和可靠性,是分布式存储领域的优质解决方案。

下拉加载更多