SkillAgentSearch skills...

Wenda

闻达:一个LLM调用平台。目标为针对特定环境的高效内容生成,同时考虑个人和中小企业的计算资源局限性,以及知识安全和私密性问题

Install / Use

/learn @wenda-LLM/Wenda
About this skill

Quality Score

0/100

Supported Platforms

Universal

README

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

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

  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频道

<!--ts--> <!-- Created by https://github.com/ekalinin/github-markdown-toc --> <!-- Added by: runner, at: Sun May 14 12:45:00 UTC 2023 --> <!--te-->

安装部署

各模型功能说明

| 功能 | 多用户并行 | 流式输出 | CPU | GPU | 量化 | 外挂LoRa | | ------------------------------------------------ | ---------- | ---------- | -------------- | --- | ------------------ | -------- | | chatGLM-6B/chatGLM2-6B | √ | √ | 需安装编译器 | √ | 预先量化和在线量化 | √ | | RWKV torch | √ | √ | √ | √ | 预先量化和在线量化 | | | RWKV.cpp | √ | √ | 可用指令集加速 | | 预先量化 | | | Baichuan-7B | √ | √ | √ | √ | | √ | | Baichuan-7B (GPTQ) | √ | √ | | √ | 预先量化 | | | Aquila-7B | | 官方未实现 | √ | √ | | | | replit | | | √ | √ | | | | chatglm130b api | √ | | | | | | | openai api | √ | √ | | | | | | llama.cpp | √ | √ | 可用指令集加速 | | 预先量化 | | | llama torch | √ | √ | √ | √ | 预先量化和在线量化 | | | InternLM | √ | √ | √ | √ | 在线量化 | |

懒人包

百度云

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. 如果需要生成离线知识库,参考 知识库

自行安装

PS:一定要看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) | 从动态知识库查找;参考闻达笔记Auto | paraJson:{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", '![](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.js | QQ机器人:配置过程见文件开头注释 | | 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权重文件,对比hatglm-6b、chatglm2-6b、百川等模型,在闻达知识库平台中,总结能力可获得显著提升。

模型

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

fess模式

在本机使用默认端口安装fess后可直接运行。否则需修改`config.

View on GitHub
GitHub Stars6.2k
CategoryDevelopment
Updated1d ago
Forks799

Languages

JavaScript

Security Score

100/100

Audited on Apr 5, 2026

No findings