Merge branch 'main' into i18n

This commit is contained in:
Junyan Qin
2025-05-11 11:04:33 +08:00
104 changed files with 2169 additions and 121 deletions
+1 -1
View File
@@ -35,7 +35,7 @@ npm run docs:dev
### 部署细节
现在使用 Cloudflare Pages 托管,提交后 @RockChinQ 更新分支进行自动部署。
现在使用 Cloudflare Pages 托管,提交后 [@RockChinQ](https://github.com/RockChinQ) 更新分支进行自动部署。
### 一些规范化标准
+228
View File
@@ -4,6 +4,234 @@ import { defineConfig } from "vitepress";
export default defineConfig({
themeConfig: {
logo: "/langbot-logo-0.5x.png",
nav: [
{ text: "主页", link: "https://langbot.app" },
{ text: "路线图", link: "https://langbot.featurebase.app/roadmap" },
],
sidebar: [
{
text: "概述",
items: [
{ text: "新手指引(必看)", link: "/insight/guide" },
{ text: "项目介绍", link: "/insight/intro" },
{ text: "社区资源", link: "/insight/community" },
],
},
{
text: "部署",
items: [
{
text: "部署 LangBot",
collapsed: true,
items: [
{ text: "Docker部署", link: "/deploy/langbot/docker" },
{ text: "宝塔面板部署", link: "/deploy/langbot/one-click/bt" },
{ text: "手动部署", link: "/deploy/langbot/manual" },
],
},
{
text: "连接消息平台",
collapsed: true,
items: [
{
text: "消息平台说明",
link: "/deploy/platforms/readme",
},
{
text: "QQ 个人号",
collapsed: true,
items: [
{
text: "NapCat",
link: "/deploy/platforms/qq/aiocqhttp/napcat",
},
{
text: "Lagrange",
link: "/deploy/platforms/qq/aiocqhttp/lagrange",
},
{
text: "llonebot",
link: "/deploy/platforms/qq/aiocqhttp/llonebot",
},
{
text: "go-cqhttp",
link: "/deploy/platforms/qq/gocq",
},
],
},
{
text: "QQ 官方机器人",
// link: "/deploy/platforms/qq/official",
collapsed: true,
items: [
{
text: "Webhook 方式",
link: "/deploy/platforms/qq/official_webhook",
},
{
text: "WebSocket 方式",
link: "/deploy/platforms/qq/official",
},
],
},
{ text: "个人微信",
collapsed: true,
items: [
{
text: "Gewechat",
link: "/deploy/platforms/wechat/gewechat",
},
],
},
{ text: "企业微信",
collapsed: true,
items: [
{
text: "内部应用",
link: "/deploy/platforms/wecom/wecom",
},
{
text: "对外客服",
link: "/deploy/platforms/wecom/wecomcs",
},
],
},
{ text:"微信公众号",link:"/deploy/platforms/wxoa.md"},
{ text: "飞书", link: "/deploy/platforms/lark" },
{ text:"钉钉",link:"/deploy/platforms/dingtalk.md"},
{ text: "Discord", link: "/deploy/platforms/discord" },
{ text: "Telegram", link: "/deploy/platforms/telegram" },
{ text:"Slack", link: "/deploy/platforms/slack"},
],
},
{ text: "填写配置信息", link: "/deploy/quick-config/config" },
{
text: "网络配置详解",
link: "/deploy/network-details",
},
{
text: "更新 LangBot",
link: "/deploy/update",
},
],
},
{
text: "使用",
items: [
{ text: "命令用法", link: "/usage/command" },
{ text: "常见问题", link: "/usage/faq" },
],
},
{
text: "配置",
items: [
{
text: "功能配置",
collapsed: true,
items: [
{ text: "platform.json", link: "/config/function/platform" },
{ text: "pipeline.json", link: "/config/function/pipeline" },
{ text: "provider.json", link: "/config/function/provider" },
{ text: "command.json", link: "/config/function/command" },
{ text: "system.json", link: "/config/function/system" },
],
},
{
text: "元数据配置",
collapsed: true,
items: [
{
text: "敏感词sensitive-words.json",
link: "/config/metadata/sensitive-words",
},
{
text: "模型列表llm-models.json",
link: "/config/metadata/llm-models",
},
{
text: "qq-botpy ID 映射 adapter-qq-botpy.json",
link: "/config/metadata/adapter-qq-botpy",
},
],
},
],
},
{
text: "插件",
// collapsed: true,
items: [
{ text: "插件介绍", link: "/plugin/plugin-intro" },
{
text: "插件开发",
collapsed: true,
items: [
{ text: "基础教程", link: "/plugin/dev/tutor" },
{ text: "消息平台实体", link: "/plugin/dev/messages" },
{ text: "API 参考", link: "/plugin/dev/api-ref" },
{ text: "组件扩展", link: "/plugin/dev/extension" },
],
},
// { text: "技术信息", link: "/plugin/tech-info" },
],
},
{
text: "管理面板(Beta测试)",
items: [
{ text: "介绍 & 使用", link: "/webui/intro" },
{ text: "系统操作", link: "/webui/system" },
{ text: "设置项管理", link: "/webui/settings" },
],
},
{
text: "实践",
items: [
{
text: "如何接入 Dify?",
link: "/workshop/dify-service-api",
},
{
text: "如何接入 Dify? - NewAPI 中转方案",
link: "/workshop/dify-integration",
},
{
text: "如何接入 OneAPI、LinkAI 等第三方 OpenAI 格式接口?",
link: "/workshop/one-api",
},
{
text:"如何使用 Ollama 接入本地模型",
link:"/workshop/ollama"
},
{
text: "如何实现一个消息平台适配器?",
link: "/workshop/impl-platform-adapter",
},
{
text: "在 LangBot 接入完整 MCP 生态",
link: "/workshop/mcp-details"
},
{
text: "接入 PPIO API",
link: "/workshop/ppio-integration"
}
],
},
{
text: "开发",
items: [
{ text: "开发配置", link: "/develop/dev-config" },
{ text: "组件架构", link: "/develop/comp-arch" },
],
},
],
// 编辑链接
editLink: {
pattern:
"https://github.com/the-lazy-me/Langbot-Wiki/edit/main/docs/:path",
},
// 本地搜索
search: {
provider: "local",
Binary file not shown.

Before

Width:  |  Height:  |  Size: 309 KiB

After

Width:  |  Height:  |  Size: 104 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 43 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 312 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 311 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 177 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 148 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 41 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 234 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 423 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 409 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 182 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 244 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 312 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 184 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 90 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 176 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 51 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 327 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 195 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 473 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 368 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 162 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 217 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 101 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 291 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 62 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 47 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 481 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 73 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 50 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 189 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 197 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 157 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 209 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 215 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 147 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 104 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 46 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 140 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 83 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 705 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 80 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 71 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 44 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 157 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 283 KiB

+24 -4
View File
@@ -8,6 +8,7 @@
## 消息平台适配器 platform-adapters
以下只列举部分适配器配置。
```json
"platform-adapters": [
{
@@ -34,12 +35,31 @@
"public_guild_messages",
"direct_message"
]
}
},
{
"adapter": "qqofficial",
"enable": false,
"appid": "",
"secret": "",
"port": 2284,
"token": ""
},
{
"adapter": "wecom",
"enable": false,
"host": "0.0.0.0",
"port": 2290,
"corpid": "",
"secret": "",
"token": "",
"EncodingAESKey": "",
"contacts_secret": ""
},
],
```
目前支持 `go-cqhttp`、`aiocqhttp`、`qq-botpy` 四种消息平台适配器,也可以同时启用多个同种类或不同种类的平台适配器。
各个消息平台的配置方式请查看部署文档。
目前支持 `go-cqhttp`、`aiocqhttp`、`qq-botpy`、`qqofficial`、 `wecom` 等多种消息平台适配器,也可以同时启用多个同种类或不同种类的平台适配器。
各个消息平台的配置方式请查看[部署文档](/deploy/quick-config/config.html#platform-json)。
### 多开示例
@@ -122,4 +142,4 @@
"hide-exception-info": true
```
是否向用户隐藏AI的异常信息,如果为true,当请求AI接口出现异常时,会返回一个错误的提示给用户。而把报错详情输出在控制台。
是否向用户隐藏AI的异常信息,如果为true,当请求AI接口出现异常时,会返回一个错误的提示给用户。而把报错详情输出在控制台。
+155 -7
View File
@@ -44,7 +44,14 @@
],
"gitee-ai": [
"XXXXX"
],
"xai": [
"xai-1234567890"
],
"zhipuai": [
"xxxxxxx"
]
...
},
```
@@ -57,6 +64,11 @@
- `moonshot`:[Moonshot](https://moonshot.cn/)(月之暗面 kimi)的密钥组
- `deepseek`:[Deepseek](https://deepseek.com/)(深度求索)的密钥组
- `gitee-ai`: [Gitee AI](https://ai.gitee.com/) Serverless API 的密钥组
- `siliconflow`: [SiliconFlow](https://siliconflow.cn/) 的密钥组
- `bailian`: 阿里云百炼模型接口密钥组
- `volcark`: 火山方舟模型、应用接口密钥组
- `modelscope`: 魔搭社区接口密钥组
- `ppio`:[PPIO](https://ppinfra.com/user/register?invited_by=QJKFYD&utm_source=github_langbot) (派欧云)的密钥组
## 大模型请求器 requester
@@ -93,7 +105,18 @@
"base-url": "https://ai.gitee.com/v1",
"args": {},
"timeout": 120
},
"xai-chat-completions": {
"base-url": "https://api.x.ai/v1",
"args": {},
"timeout": 120
},
"zhipuai-chat-completions": {
"base-url": "https://open.bigmodel.cn/api/paas/v4",
"args": {},
"timeout": 120
}
...
},
```
@@ -107,6 +130,14 @@
- `deepseek-chat-completions`:[Deepseek](https://deepseek.com/) 请求器(深度求索)
- `ollama-chat`:[Ollama](https://ollama.com/) 请求器,不需要密钥,直接请求目标地址的 Ollama 服务
- `gitee-ai-chat-completions`:[Gitee AI](https://ai.gitee.com/) Serverless API 请求器(OpenAI 兼容接口)
- `xai-chat-completions`:[xAI](https://x.ai/) 请求器
- `zhipuai-chat-completions`:[智谱 AI](https://open.bigmodel.cn/) 请求器
- `lmstudio-chat-completions`:[LMStudio](https://lmstudio.ai/) 请求器
- `siliconflow-chat-completions`:[SiliconFlow](https://siliconflow.cn/) 请求器
- `bailian-chat-completions`:[阿里云百炼](https://bailian.console.aliyun.com/) 请求器,仅支持模型,应用请使用下方百炼平台运行器
- `volcark-chat-completions`:[火山方舟](https://console.volcengine.com/ark/region:ark+cn-beijing/model?vendor=Bytedance&view=LIST_VIEW) 请求器,默认为模型调用接口,应用(Bots)调用接口请在`base-url`后方添加`/bots`
- `modelscope-chat-completions`:[魔搭社区](https://modelscope.cn/) 请求器,使用魔搭社区的接口,需要确保账户以绑定阿里云账户
- `ppio-chat-completions`:[PPIO](https://ppinfra.com/user/register?invited_by=QJKFYD&utm_source=github_langbot) 请求器
`base-url`:设置接口地址。
@@ -180,8 +211,13 @@
设置聊天消息将由哪个运行器处理,默认是 `local-agent`
目前支持:
- `local-agent`:LangBot 本地实现的一个 Agent 机制,实现会话管理、插件调用。需要设置为 local-agent 才能使用`内容函数`。
- `local-agent`:LangBot 本地实现的一个 Agent 机制,实现会话管理、插件调用。
- `dify-service-api`:使用 [Dify](https://dify.ai/) 的 Service API 机制,支持 聊天助手、Agent、工作流应用。
- `dashscope-app-api`:使用 [阿里云百炼平台](https://bailian.console.aliyun.com/#/app-center) 自建应用的 API,支持 普通智能体应用、智能体编排应用。
::: info
仅在设置为`local-agent`时,才会使用 LangBot 内部配置的`模型`、`工具(内容函数)`、`提示词(情景预设)`、`本地存储的上下文`。
:::
## Dify Service API 配置 dify-service-api
@@ -189,6 +225,9 @@
"dify-service-api": {
"base-url": "https://api.dify.ai/v1",
"app-type": "chat",
"options": {
"convert-thinking-tips": "original"
},
"chat": {
"api-key": "app-1234567890",
"timeout": 120
@@ -205,11 +244,13 @@
}
```
仅在 `runner` 设置为 `dify-service-api` 时,需要配置以下内容:
**仅在 `runner` 设置为 `dify-service-api` 时使用,需要配置以下内容:**
- `base-url`:Dify Service API 的地址,默认是 `https://api.dify.ai/v1`,这是 Dify 官方云服务的地址,如果你使用的是自部署的社区版,请设置为你的自部署地址。
- `app-type`:使用的 Dify 应用类型。支持 `chat` - 聊天助手(含高级编排)、 `agent` - Agent、 `workflow` - 工作流;请填写下方对应的应用类型 API 参数
- `chat`:Dify 聊天助手应用的配置
- `app-type`:使用的 Dify 应用类型。支持 `chat` - 聊天助手(含 Chatflow)、 `agent` - Agent、 `workflow` - 工作流;请填写下方对应的应用类型 API 参数
- `options`:特殊的选项配置。
- `convert-thinking-tips`:dify 使用 deepseek-r1 等有思维链的模型时[会携带思考过程回复](https://github.com/RockChinQ/LangBot/issues/1108),此选项控制输出时的处理方式;值为 original 时,不转换思考提示;值为 plain 时,将思考提示转换为类似 DeepSeek 官方的\<think>...\</think>格式;值为 remove 时,删除思考提示
- `chat`:Dify 聊天助手(或 chatflow)应用的配置
- `api-key`:Dify 聊天助手应用的 API 密钥
- `timeout`:Dify 聊天助手应用的请求超时时间,以秒为单位,默认是 120 秒。
- `agent`:Dify Agent 应用的配置
@@ -222,13 +263,120 @@
![Dify 工作流应用的输出键](/assets/image/config_provider_01.png)
### 请求变量
当使用工作流时,LangBot 会显式传入以下参数,您可以自行在 Dify 工作流的开始节点中添加:
- `langbot_user_message_text`:用户消息的纯文本
- `langbot_session_id`:用户会话id,私聊为 `person_<id>`,群聊为 `group_<id>`
- `langbot_conversation_id`:用户会话id,由 LangBot 生成。用户重置会话后,会重新生成
- `user_message_text`:用户消息的纯文本
- `session_id`:用户会话id,私聊为 `person_<id>`,群聊为 `group_<id>`
- `conversation_id`:字符串,用户会话id,由 LangBot 生成。用户重置会话后,会重新生成
- `msg_create_time`:数字类型,收到此消息的时间戳(秒)
您可以[通过插件自定义任何变量](/plugin/dev/api-ref.html#%E8%AE%BE%E7%BD%AE%E8%AF%B7%E6%B1%82%E5%8F%98%E9%87%8F)。
![Dify 工作流开始节点配置](/assets/image/config_provider_02.png)
使用 工作流 应用或 Agent 应用时,如果开启了`platform.json`中的`track-function-calls`,将会在 Dify 执行每个工具调用时,输出一个`调用函数xxx`的消息给用户。
但如果是使用`chat`应用下的`ChatFlow`(聊天助手->工作流编排),无论如何只会输出 Answer(直接回复)节点返回的文本。
## 阿里云百炼平台自建应用配置 dashscope-app-api
```json
"dashscope-app-api": {
"app-type": "agent",
"api-key": "sk-1234567890",
"agent": {
"app-id": "Your_app_id",
"references_quote": "参考资料来自:"
},
"workflow": {
"app-id": "Your_app_id",
"references_quote": "参考资料来自:",
"biz_params": {
"city": "北京",
"date": "2023-08-10"
}
}
}
```
**仅在 `runner` 设置为 `dashscope-app-api` 时使用,需要配置以下内容:**
- `app-type`:使用的百炼平台应用类型。 `agent` - 智能体应用(右-紫色)、 `workflow` - 智能体编排应用(左-橙色)
![dashscope application](/assets/image/dashscope_application.png)
- `api-key`:阿里云百炼平台的 API 密钥
- `agent`:智能体应用的配置
- `app-id`: "上图中的应用ID",
- `references_quote`:引用来源的提示语,默认为`参考资料来自:` 如果你在智能体应用中添加了展示回答来源这个配置将会起作用
- `workflow`:智能体编排应用的配置
- `app-id`: "上图中的应用ID",
- `references_quote`:引用来源的提示语,默认为`参考资料来自:` 如果你在智能体应用中添加了展示回答来源这个配置将会起作用
- `biz_params`:业务参数,用于传入到智能体编排应用中,city和date对应下方第二章图中的`变量名`,二者的值是要传入的可在其中调用的参数。
- 与上述 Dify 相同,LangBot 也会传入`请求变量`到百炼应用。
`references_quote`解释图片
![dashscope application](/assets/image/dashScope_ref_quote.png)
`biz_params`解释图片
![dashscope application](/assets/image/dashscope_bitz.png)
## [MCP](https://modelcontextprotocol.io/) 配置 mcp
MCP (Model Context Protocol) 是 Anthropic 设计的 Agent 上下文标准协议,现已被广泛采用。
LangBot 支持通过 MCP 协议获取丰富工具,以供在 `local-agent` 中使用。
```json
"mcp": {
"servers": [
{
"name": "weather",
"enable": true,
"mode": "sse",
"url": "http://localhost:8000/sse",
"headers": {},
"timeout": 10
},
{
"name": "stock",
"enable": true,
"mode": "stdio",
"command": "python3",
"args": [
"path/to/your/serverfile"
],
"env": {}
}
]
}
```
请先自行[阅读 MCP 的介绍](https://modelcontextprotocol.io/introduction),了解如何使用第三方 MCP Server。LangBot 目前仅支持 Stdio(Python) 和 SSE 两种通信方式。
- `SSE` 模式:
- `name` 服务器名称,自行定义
- `enable` 是否启用本 Server
- `mode` 固定填写`SSE`
- `url` MCP SSE Server 的访问 URL
- `headers` 连接时的 headers,可选
- `timeout` 连接超时时间
- `stdio` 模式:
- `name` 服务器名称,自行定义
- `enable` 是否启用本 Server
- `mode` 固定填写`stdio`
- `command` 执行命令
- `args` 执行命令的参数
- `env` 执行命令的环境变量,可选
::: info
- 推荐使用 SSE 模式。
- 使用 Stdio 时,仅支持执行 Python 脚本 Server。若 LangBot 运行在容器中,可以将 MCP Server 执行文件置于 `data` 目录下的新目录中,并使用 `command` 和 `args` 指定执行文件路径。
:::
+4 -3
View File
@@ -1,4 +1,4 @@
# Docker部署(仅推荐在Linux上使用)
# Docker部署
:::warning
请**确保**您具有以下能力:
@@ -9,7 +9,8 @@
:::
:::info
请先确保 Git、 Docker 和 Docker Compose 已安装
- 请先确保 Git、 Docker 和 Docker Compose 已安装
- 推荐使用[阿里云,服务器价格低至 38 元一年,更可以享受8折优惠](https://www.aliyun.com/minisite/goods?userCode=ys4ad8gs)
:::
Git 克隆本项目:
@@ -28,7 +29,7 @@ docker compose up
首次启动会输出创建配置文件的提示,请继续按照文件配置。
容器会映射`5300`端口供 WebUI 使用,您可以访问`http://127.0.0.1:5300`查看 WebUI。
还会映射`2280-2290`端口供使用 OneBot 协议的消息平台适配器反向连接,请继续阅读[消息平台接入文档](/deploy/platforms/aiocqhttp/napcat)。
还会映射`2280-2290`端口供使用 OneBot 协议的消息平台适配器反向连接,请继续阅读[消息平台接入文档](/deploy/platforms/readme)。
## 注意
+17 -3
View File
@@ -1,7 +1,8 @@
# 手动部署(推荐,可以在所有平台上使用)
# 手动部署
:::warning
1. 请使用Python 3.10.1(不包含3.10.0)及以上版本,推荐3.10.14版本,没有Python的需自行安装。
2. 不推荐此方式,后续可能不再支持手动部署,请考虑使用 Docker 部署。
:::
@@ -16,14 +17,27 @@
您也可以使用以下命令克隆最新代码(有可能包含不稳定的代码)并使用:
```bash
# 克隆主仓库
git clone https://github.com/RockChinQ/LangBot
cd LangBot
```
若您位于中国大陆境内,可以从 [GitCode 镜像](https://gitcode.com/RockChinQ/LangBot) 克隆:
```bash
git clone https://gitcode.com/RockChinQ/LangBot
cd LangBot
```
接下来手动构建前端:
```bash
# 构建前端,需要 NodeJS >= 22
cd web
npm install && npm run build
cd ..
```
:::
2. (建议)创建虚拟环境
@@ -47,7 +61,7 @@ pip install -r requirements.txt
pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
```
3. 运行一次主程序,生成配置文件
4. 运行一次主程序,生成配置文件
```bash
python main.py
@@ -77,7 +91,7 @@ python main.py
- data/scenario/default.json
```
接下来可以使用 Ctrl+C 退出程序,继续查看[部署消息平台](/deploy/platforms/aiocqhttp/napcat.html)页。
接下来可以使用 Ctrl+C 退出程序,继续查看[部署消息平台](/deploy/platforms/readme)页。
当你部署消息平台和填写配置文件后,再次运行
```bash
+10 -4
View File
@@ -2,12 +2,18 @@
使用[宝塔面板](https://www.bt.cn/new/download.html?r=dk_LangBot)一键部署 LangBot。
## 安装宝塔
:::warning
如果你已经安装了宝塔,请更新到 **9.2.0** 及以上
- 除非您打算使用 Discord、飞书等无需额外容器的消息平台,或您熟悉宝塔面板上 Docker 容器间的网络连接,否则不建议使用宝塔面板一键部署,请考虑使用[Docker部署](/deploy/langbot/docker)。
- 如果你已经安装了宝塔,请更新到 **9.2.0** 及以上
:::
:::info
使用[阿里云,服务器价格低至 38 元一年,更可以享受8折优惠](https://www.aliyun.com/minisite/goods?userCode=ys4ad8gs),一键安装宝塔更方便
:::
## 安装宝塔
> 服务器系统推荐(来自宝塔):Debian 12,Ubuntu 22等
>
> 本文默认所述的是拥有公网IPv4地址的服务器,如果是家用机器没有公网 IP,可以通过下文中的内网来访问相关页面
@@ -48,4 +54,4 @@
如果你更偏好于直接修改json配置文件,你可以看上图的查看本地映射目录,进入安装目录,`data`文件夹用于存储配置文件,`plugins`文件夹用于存储插件相关。
接下来请继续阅读[部署消息平台](/deploy/platforms/aiocqhttp/napcat.html)页。
接下来请继续阅读[部署消息平台](/deploy/platforms/readme)页。
+5
View File
@@ -1,5 +1,10 @@
# 网络配置详解
::: info
某些消息平台(如 QQ 个人号)需要使用独立的协议端来处理消息,如果您使用的是此类消息平台,请参考以下网络配置。
同时,若您的 LangBot 实例需要连接其他在容器中运行的服务(如 Ollama),也可以参考以下配置,自行替换`消息平台`为`您要连接的服务`。
:::
LangBot 和部分消息平台均可采用 Docker 部署,以下是四种情况下的网络配置详解。
:::info 目录
@@ -1,5 +1,7 @@
# 部署消息平台 LiteLoaderQQNT
通过 OneBot 11 协议接入,需选择使用`aiocqhttp`作为适配器。
# LiteLoaderQQNT
- [LiteLoaderQQNT 的 OneBot API 插件](https://github.com/LLOneBot/LLOneBot) 注入 QQ 客户端并将其转换为 OneBot 11 协议
@@ -8,6 +10,6 @@
![image-20240515185909108](/assets/image/llob_cfg.png)
确保地址中 IP地址 是 LangBot 运行的主机的地址(若在同一网络内运行则为 127.0.0.1),端口必须与 LangBot 消息平台配置中的 aiocqhttp 适配器监听的端口相同,后缀必须为`/ws`:
确保地址中 IP地址 是 LangBot 运行的主机的地址(若在同一网络内运行则为 127.0.0.1),端口必须与 LangBot 消息平台配置中的 `aiocqhttp 适配器`监听的端口相同,后缀必须为`/ws`:
接下来请阅读[填写配置信息](/deploy/quick-config/config)。
@@ -1,5 +1,7 @@
# 部署消息平台 NapCat
通过 OneBot 11 协议接入,需选择使用`aiocqhttp`作为适配器。
## NapCat安装教程
按照 [NapCat 官方文档安装](https://napcat.napneko.icu/guide/start-install)
+46
View File
@@ -0,0 +1,46 @@
# 部署钉钉机器人
部署 LangBot 到钉钉。
## 创建机器人
进入 [钉钉开发者后台](https://open-dev.dingtalk.com/?spm=ding_open_doc.document.0.0.74f445e5MkawbT#/),登录并且进入组织。登录成功后进入开放平台,是这样的:
![钉钉开放平台](/assets/image/ding1.png)
点击上方的 `应用开发`,然后点击右面蓝色的按钮 `创建应用`,填写机器人的基本信息,点击保存。
进入机器人的后台,比如我们有机器人 langbot2 ,那么它的管理页面是这样的:
![机器人页面](/assets/image/ding2.png)
## 配置机器人
点击 `添加应用能力`,`其他应用能力`,`机器人`中的 `配置`,点击配置并且填写信息之后,如下图:
![机器人配置](/assets/image/ding3.png)
点击页面下方的`发布`,发布成功之后,点击机器人页面中左侧最下方的`版本管理与发布`,如图:
![版本管理与发布](/assets/image/ding4.png)
如果是第一次创建机器人,那么右边是空的,需要点击`创建新版本`,在其中设置信息,然后设置`应用可见范围`,点击保存。
点击`事件订阅`,将其中的推送方式改为`Stream模式推送`。
## 填写配置信息
点击`凭证与基础信息`,记录`Client ID` 和 `Client Secret`,
点击`应用能力`,`机器人`,记录下 RobotCode 和 机器人名称。
`markdown_card` 为是否启用 Markdown 形式的回复。
将以上配置项填写入[钉钉机器人配置项](/deploy/quick-config/config.md#钉钉适配器),并且将 `enable` 设置为 `true` 。<br>
**启动 LangBot** 。
## 添加机器人
本文使用钉钉 windows 桌面版举例,点击上方的`搜索`,`功能`,然后输入刚才机器人创建的名称,如图:
![robot_png](/assets/image/ding5.png)
点击机器人即可和机器人聊天。<br>
如果想要添加到群里,那么点击钉钉群的`群管理`,`机器人`,`添加机器人`,然后搜索机器人名称就可以在群中使用。
+54
View File
@@ -0,0 +1,54 @@
# 接入 Discord 机器人
## 创建机器人
前往[Discord 开发者门户](https://discord.com/developers/applications),登录后,创建应用。
![alt text](/assets/image/discord_01.png)
修改基础信息,点击`Save Changes`保存。
![alt text](/assets/image/discord_02.png)
点击左侧`Bot`,点击`Reset Token`,复制生成的 Token。
![alt text](/assets/image/discord_03.png)
并在此页面的`Privileged Gateway Intents`中勾选所有选项,点击`Save Changes`保存。
![alt text](/assets/image/discord_05.png)
**最后,点击左侧`OAuth2`,复制页面上的`Client ID`。**
## 在 LangBot 中填写信息并启动
根据[填写配置信息](/deploy/quick-config/config)中的 Discord 适配器配置,填写相关信息。
将上一步获取的`Client ID`和`Token`填写到配置中。
![alt text](/assets/image/discord_04.png)
:::warning
如果你在中国大陆境内使用此适配器,可能需要设置网络代理,具体请查看[system.json配置文件](/config/function/system.html#网络代理-network-proxies)。或直接通过环境变量`http_proxy`设置。
:::
填写完成后启动 LangBot,若成功配置,日志中会出现`[02-02 16:48:15.263] manager.py (68) - [INFO] : 初始化平台适配器 1: discord`的字样,保持 LangBot 运行。
## 邀请机器人到服务器
你需要先创建一个服务器,然后邀请机器人到服务器。
前往`OAuth2`页面,选择`URL Generator`,选择`bot`,按照图中所示勾选权限。
![alt text](/assets/image/discord_06.png)
![alt text](/assets/image/discord_07.png)
点击`Copy`,将生成的 URL 粘贴到浏览器中打开,邀请机器人到你的服务器。
![alt text](/assets/image/discord_08.png)
## 使用机器人
现在在群里或者私聊机器人都可以正常使用了。
![alt text](/assets/image/discord_09.png)
+83
View File
@@ -0,0 +1,83 @@
# 接入飞书机器人
## 创建机器人
前往[飞书开放平台](https://open.feishu.cn/app),登录后,创建企业自建应用。
![alt text](/assets/image/lark_01.png)
![alt text](/assets/image/lark_02.png)
为应用添加机器人能力:
![alt text](/assets/image/lark_03.png)
在权限管理中添加图中所示权限:
![alt text](/assets/image/lark_04.png)
## 在 LangBot 中填写信息并启动
根据[填写配置信息](/deploy/quick-config/config)中的飞书适配器配置,填写相关信息。可以在`凭证与基础信息`页找到`app_id`和`app_secret`。
![alt text](/assets/image/lark_05.png)
```json
{
"adapter": "lark",
"enable": true,
"app_id": "cli_abcdefgh",
"app_secret": "XXXXXXXXXX",
"bot_name": "LangBot",
"enable-webhook": false,
"port": 2285,
"encrypt-key": "xxxxxxxxx"
},
```
注意:`bot_name`必须与创建机器人时填写的机器人名称相同。确保`enable`为`true`。
填写完成后启动 LangBot,若成功配置,日志中会出现`[01-29 23:42:56.796] manager.py (68) - [INFO] : 初始化平台适配器 1: lark`的字样,保持 LangBot 运行。
:::warning
默认使用的是 WebSocket 长连接模式,对应下方的长连接订阅。但某些情况下(如国际版飞书)不具有长连接模式,此时需要使用 Webhook 模式,对应`将事件发送到开发者服务器`模式,请参考以下配置:
- `enable-webhook`:设置为`true`
- `encrypt-key`:设置为`事件与回调`页面的`加密策略`中的`Encrypt Key`
注意,在Webhook模式中,LangBot 需要部署在具有公网 IP 的服务器上,并确保防火墙已开放上方配置的端口。
:::
## 配置事件订阅
前往`事件与回调`页,配置订阅方式为`长连接`:
![alt text](/assets/image/lark_07.png)
并添加事件:`接收消息`
![alt text](/assets/image/lark_08.png)
:::warning
Webhook 模式配置方式:
![alt text](/assets/image/lark_13.png)
请先启动 LangBot,在此处填写你的服务器地址和端口,路径为`/lark/callback`,点击`保存`。
:::
## 发布机器人
点击顶部`创建版本`,填写版本号等信息,点击下方`保存`。
![alt text](/assets/image/lark_09.png)
在飞书群中添加机器人,即可使用:
![alt text](/assets/image/lark_10.png)
![alt text](/assets/image/lark_11.png)
私聊也可以直接使用
![alt text](/assets/image/lark_12.png)
+5 -1
View File
@@ -1,4 +1,8 @@
# 使用 QQ 官方机器人 API
# 使用 QQ 官方机器人 API(使用websocket方式)
:::warning
QQ 官方已停止维护 WebSocket 方式,请使用 Webhook 方式。
:::
QQ官方机器人所有人均可申请,可以在频道和群聊中使用,私聊也可。
@@ -0,0 +1,56 @@
# 部署消息平台 Lagrange
## Lagrange介绍
Lagrange 是一个 QQNT 协议逆向工程框架,轻便且相对稳定。通过 OneBot 11 协议接入,需选择使用`aiocqhttp`作为适配器。
::: warning
需要使用 NT QQ 与机器人交互,旧版QQ无法正常使用
:::
## 部署步骤
以下仅提供 Windows 上的大致步骤,详细步骤或其他平台请参考 [Lagrange官方文档](https://lagrangedev.github.io/Lagrange.Doc/Lagrange.OneBot/)
### 环境配置
安装.NET 8运行时,[点击直达微软官网下载](https://dotnet.microsoft.com/zh-cn/download/dotnet/thank-you/runtime-desktop-8.0.4-windows-x64-installer)
### 从Github Actions下载最新的build
需要登录Github后才能下载,如果你不需要部分特性,可以在Release下载,看图片3
[Github Actions](https://github.com/KonataDev/Lagrange.Core/actions)
看图进行下载:
![图片1](/assets/image/dl_lgr_1.png)
![图片2](/assets/image/dl_lgr_2.png)
![图片3](/assets/image/dl_lgr_3.png)
### 尾声
解压你所下载的zip,打开到有Lagrange.OneBot.exe的目录,在此目录下打开cmd命令提示符,输入
```bash
.\Lagrange.OneBot
```
运行一次,如果输出了一个二维码,即可直接用机器人号扫码登录(若二维码显示不清楚,可以到lagrange的data目录下寻找图片文件)。
若无法登录,请检查是否正常填写了lagrange配置文件appsettings.json中的签名地址 SignServerUrl ,签名地址请到lagrange文档中寻找。
## 修改配置
需要配置 Lagrange 以让其连接上 LangBot,请编辑 Lagrange 的配置文件 appsettings.json,确保 Implementations 中的连接配置符合下图内容:
![配置连接](/assets/image/config_lgr.png)
其中 Type 必须为 `ReverseWebSocket`;
Host 为 LangBot 运行的主机 IP,若在同一主机上,可以写 `127.0.0.1`;
Suffix 必须为 `/ws`;
Port 必须与 LangBot 消息平台配置中的 aiocqhttp 适配器监听的端口相同。
接下来请阅读[填写配置信息](/deploy/quick-config/config)。
@@ -0,0 +1,15 @@
# 部署消息平台 LiteLoaderQQNT
通过 OneBot 11 协议接入,需选择使用`aiocqhttp`作为适配器。
# LiteLoaderQQNT
- [LiteLoaderQQNT 的 OneBot API 插件](https://github.com/LLOneBot/LLOneBot) 注入 QQ 客户端并将其转换为 OneBot 11 协议
安装LiteLoaderQQNT的教程:https://llonebot.github.io/zh-CN/guide/getting-started
![image-20240515185909108](/assets/image/llob_cfg.png)
确保地址中 IP地址 是 LangBot 运行的主机的地址(若在同一网络内运行则为 127.0.0.1),端口必须与 LangBot 消息平台配置中的 `aiocqhttp 适配器`监听的端口相同,后缀必须为`/ws`:
接下来请阅读[填写配置信息](/deploy/quick-config/config)。
@@ -0,0 +1,28 @@
# 部署消息平台 NapCat
通过 OneBot 11 协议接入,需选择使用`aiocqhttp`作为适配器。
## NapCat安装教程
按照 [NapCat 官方文档安装](https://napcat.napneko.icu/guide/start-install)
## NapCat配置教程
仅以 webui 操作为例,其他的配置方式请查看 NapCat 文档。
登录后,在控制台或Bash上可以查看日志 , 找到 `[NapCat] [WebUi] WebUi Publish Panel Url: http://x.x.x.x:6099/webui?token=xxxxx `
![napcat_webui_0](/assets/image/napcat_webui_0.png)
复制Url到浏览器或者 Windows11 按照Ctrl点击Url即可 扫码登录后即可进入网络配置一页
点击添加网络配置 WebSocket客户端 点击启用 然后在Url一栏填入 `ws://127.0.0.1:2280/ws` 并保存即可
![napcat_webui_1](/assets/image/napcat_webui_1.png)
![napcat_webui_2](/assets/image/napcat_webui_2.png)
::: info
- 端口号取决于 `data/config/platform.json` 中 `aiocqhttp` 的 `port` 字段,默认是 2280,请查看[填写配置信息](/deploy/quick-config/config)继续配置。
- 必须使用 WebSocket Client(反向 WS) 连接 LangBot,注意根据实际情况修改 IP 地址和端口,后缀必须为`/ws`。
- 如果 LangBot 和 NapCat 均运行在容器中,请参考[容器网络配置](/deploy/network-details)。
:::
接下来请阅读[填写配置信息](/deploy/quick-config/config)。
@@ -0,0 +1,77 @@
# 部署消息平台 shamrock
> 本文档仅为基本步骤,详细操作、答疑解惑及最新信息请前往[OpenShamrock官方文档](https://whitechi73.github.io/OpenShamrock/)。
::: tip
项目归档,不建议继续使用
:::
## OpenShamrock简介
go-cqhttp 之类的是模拟 QQ 的协议进行通信,而 Shamrock 使用的是 安卓的 Hook 来操作 QQ 模拟点击,稳定性较高。
可选平台(or设备):
- 模拟器
- Linux服务器
- PVE
- 云手机
- 实体手机
## 步骤(模拟器)
### 环境配置
**注:建议使用[mumu模拟器](https://mumu.163.com/)**
参考[此文档](https://forum.libfekit.so/d/60-mumu12mo-ni-qi-an-zhuang-magiskhe-lsposed)安装Magisk和LSPosed
记得打开mumu模拟器的可写系统盘和root权限
![](/assets/image/sham_env_1.png)
![image-20240119154032682](/assets/image/sham_env_2.png)
### 安装OpenShamrock
从[OpenShamrock的Actions](https://github.com/whitechi73/OpenShamrock/actions)下载最新的OpenShamrock安装包,注意下载带有`all`字样的版本,如`Shamrock-v1.0.7.r253.81be383-all.zip`,解压,在mumu模拟器安装
#### 配置Shamrock
1. 在 Shamrock 的设置页面修改设置如图:
启用被动 Websocket,并填写 LangBot 的 aiocqhttp 适配器监听的地址和端口(详见填写配置信息页)。
![img](/assets/image/sham_cfg_1.png)
![img](/assets/image/sham_cfg_2.png)
填写的被动 Websocket 地址为 LangBot 的 aiocqhttp 适配器监听的地址和端口,且路径必须为 `/ws`,例如 `ws://127.0.0.1:2280/ws`,详见填写配置信息页。
2. 并前往 LSPosed 的模块管理页面 启用模块 Shamrock
![image-20240119154110877](/assets/image/sham_cfg_3.png)
### 安装QQ
参考[此页面](https://whitechi73.github.io/OpenShamrock/guide/faq.html#%E6%94%AF%E6%8C%81%E7%9A%84qq%E7%89%88%E6%9C%AC)给出的支持的QQ版本,选择最新即可
在[这里](https://qq.cn.uptodown.com/android/versions)选择对应的版本下载,在mumu模拟器安装即可
### 登录机器人QQ
1. 打开QQ,登录机器人QQ,关闭QQ,重启模拟器。
2. 启动 LSPosed,Shamrock 将会自动运行,启动 QQ。
3. 打开 Shamrock 页面,此时应显示 `已激活` 并可以查看到账号信息和相关消息日志。
### 后续步骤
查看填写配置信息页,通过 aiocqhttp 适配器接入。
![img](https://cos.thelazy.cn/pictures/202405292250017.jpeg)
接下来请阅读[填写配置信息](/deploy/quick-config/config)。
+151
View File
@@ -0,0 +1,151 @@
# 部署消息平台 go-cqhttp
> 本文档仅为基本步骤,详细操作、答疑解惑及最新信息请前往[go-cqhttp官方文档](https://docs.go-cqhttp.org/)。
::: warning
gocq未归档,但原开发者表示:[https://github.com/Mrs4s/go-cqhttp/issues/2471](https://github.com/Mrs4s/go-cqhttp/issues/2471)
:::
## 下载go-cqhttp
从[go-cqhttp的Release](https://github.com/Mrs4s/go-cqhttp/releases/latest)下载最新的go-cqhttp可执行文件(建议直接下载可执行文件压缩包,而不是安装器)
![下载gocq](/assets/image/dl_gocq.png)
## 运行并配置go-cqhttp
解压并运行,首次运行会询问需要开放的网络协议,**请填入`02`并回车,必须输入`02`❗❗❗❗❗❗❗**
```
C:\Softwares\go-cqhttp.old> .\go-cqhttp.exe
未找到配置文件,正在为您生成配置文件中!
请选择你需要的通信方式:
> 0: HTTP通信
> 1: 云函数服务
> 2: 正向 Websocket 通信
> 3: 反向 Websocket 通信
请输入你需要的编号(0-9),可输入多个,同一编号也可输入多个(如: 233)
您的选择是:02
```
提示已生成`config.yml`文件,关闭go-cqhttp。
打开go-cqhttp同目录的`config.yml`
1. 编辑账号登录信息
只需要修改下方`uin`和`password`为你要登录的机器人账号的QQ号和密码即可。
```yaml
account: # 账号相关
uin: 1233456 # QQ账号
password: '' # 密码为空时使用扫码登录
encrypt: false # 是否开启密码加密
status: 0 # 在线状态 请参考 https://docs.go-cqhttp.org/guide/config.html#在线状态
relogin: # 重连设置
delay: 3 # 首次重连延迟, 单位秒
interval: 3 # 重连间隔
max-times: 0 # 最大重连次数, 0为无限制
```
2. 修改websocket端口
在`config.yml`下方找到以下内容
```yaml
- ws:
# 正向WS服务器监听地址
address: 0.0.0.0:8080
middlewares:
<<: *default # 引用默认中间件
```
**将`0.0.0.0:8080`改为`0.0.0.0:6700`**,保存并关闭`config.yml`。
3. 配置签名服务器
按照如下填写,
```yaml
sign-servers:
- url: 'https://qsign.trpgbot.com/' # 主签名服务器地址, 必填
key: 'selfshare'
authorization: '-'
- url: 'https://qsign-v3.trpgbot.com/' # 次要服务器地址,选填
key: 'selfshare'
authorization: '-'
auto-register: true
```
写入文件/data/versions/6.json,
```json
{
"apk_id": "com.tencent.mobileqq",
"app_id": 537220362,
"sub_app_id": 537220362,
"app_key": "0S200MNJT807V3GE",
"sort_version_name": "9.0.56.16830",
"build_time": 1713424357,
"apk_sign": "a6b745bf24a2c277527716f6f36eb68d",
"sdk_version": "6.0.0.2560",
"sso_version": 21,
"misc_bitmap": 150470524,
"main_sig_map": 34869472,
"sub_sig_map": 66560,
"dump_time": 1713424357,
"qua": "V1_AND_SQ_9.0.56_6372_YYB_D",
"protocol_type": 6
}
```
感谢zhaodice大佬带来的QQ 9.0.56签名服务器
4. 若您的服务器位于公网,强烈建议您填写`access-token` (可选)
```yaml
# 默认中间件锚点
default-middlewares: &default
# 访问密钥, 强烈推荐在公网的服务器设置
access-token: ''
```
5. 配置完成,重新启动go-cqhttp
## 登录
双击登录脚本,一段时间后,可以看到提示
![登录gocq](/assets/image/first_launch.png)
把`Captcha link: `后边的链接复制下来,用Chrome或者Edge浏览器打开,按F12打开开发者工具
点开 `Network`
![过验证码](/assets/image/get_captcha.png)
在浏览器中完成验证, 在 `Network` 中找到名为 `cap_union_new_verify` 的请求, 在最下面
![获取token](/assets/image/get_gocq_login_token.png)
ticket 后那一坨就是要输入回 go-cqhttp 的内容,但不包括首尾的双引号
**注意**
- 复制的时候记得删掉引号(`"`, 前后都有一个), 那个不是ticket内容
- 速度要快
- 注意不要漏字符(没复制完, 后面还有很长)
把复制下来的东西,粘贴到运行go-cq的终端中
![粘贴token](/assets/image/paste_token.png)
> 若启动后登录不成功,请尝试根据[此文档](https://docs.go-cqhttp.org/guide/config.html#%E8%AE%BE%E5%A4%87%E4%BF%A1%E6%81%AF)修改`device.json`的协议编号。
## 后续步骤
查看填写配置信息页,通过 Nakuru 适配器接入。
+152
View File
@@ -0,0 +1,152 @@
# 部署消息平台 mirai
> 本文档仅为基本步骤,详细操作、答疑解惑及最新信息请前往[Mirai官方代码库](https://github.com/mamoe/mirai)、[Mirai官方论坛](https://mirai.mamoe.net/)
::: warning
此消息平台不稳定,不要使用
:::
## 准备工作
> 注意:由于网络环境多样复杂,很多步骤中,有可能需要使用网络魔法,懂的都懂
1. 创建文件夹
在你的任意盘(D,E,F什么都都可以)里面新建一个文件夹(例如命名qqbot)
2. 创建子文件夹
双击进入刚刚创建的文件夹,分别新建两个文件夹(建议命名保持一致):mirai、LangBot
## 安装 mirai-console
在 [mcl-installer 的 releases 页面](https://github.com/iTXTech/mcl-installer/releases)下载对应版本的安装包,找到最新的安装包,即有“Latest”标志的安装包,点击`show all 14 assets`,下载 mcl-installer-X.X.X-windows-amd64.exe,如图,则下载`mcl-installer-1.0.7-windows-amd64.exe`,保存在刚才创建的`mirai文件夹`中
![屏幕截图 2023-11-23 223909.png](/assets/image/mirai_dl_1.png)
![image-20231218170548696](/assets/image/mirai_dl_2.png)
双击打开,一路回车。然后,你可以看到多出来一些文件。
![image-20231218170726759](/assets/image/mirai_dl_3.png)
继续点击`mcl.cmd`,看不到文件后缀的,参考这个文章来显示文件后缀名:[如何查看文件后缀](https://jingyan.baidu.com/article/9158e0004c6cbea2541228da.html)
双击后会显示如下图所示的类似界面,当出现`Enter to continue`时,表明你需要按回车健
![屏幕截图 2023-11-24 174015.png](/assets/image/mirai_dl_4.png)
![屏幕截图 2023-11-24 174650.png](/assets/image/mirai_dl_5.png)
当出现上面的一行绿字时,说明安装完成,到这里输入 exit,回车退出
## 安装 mirai-api-http
打开 `mcl.cmd`,输入`mcl --update-package net.mamoe:mirai-api-http --channel stable-v2 --type plugin` ,回车
![image-20231218172022449](/assets/image/mah_dl_1.png)
再次打开`mcl.cmd`,一路回车,直至退出。
再打开 mcl.cmd,看到如以下界面,说明成功
![屏幕截图 2023-11-24 184618.png](/assets/image/mah_dl_2.png)
键盘按下`Ctrl+C`,退出。
找到mira/config/net.mamoe.mirai-api-http/setting.yml文件,右键用记事本打开
![image-20231218172354159](/assets/image/mah_dl_3.png)
把内容全部删掉,换成
```yml
adapters:
- ws
debug: true
enableVerify: true
verifyKey: yirimirai
singleMode: false
cacheSize: 4096
adapterSettings:
ws:
host: localhost
port: 8080
reservedSyncId: -1
```
再打开 `mcl.cmd`,可以看到输出
![image-20231218174112536](/assets/image/mah_dl_4.png)
则 mirai-api-http 安装成功。
## 配置签名服务
在这个链接下载qsign一键签名包,点击下载最新的那个zip压缩包,如下图的`qsign-1.2.1-beta-dev-d62ddce-all.zip`【写于2023年12月19日】,[点我跳转下载页面](https://github.com/MrXiaoM/qsign/releases)
![image-20231219211250617](/assets/image/mirai_sign_1.png)
下载完成后,解压得到如图文件
![image-20231219211634274](/assets/image/mirai_sign_2.png)
将两个文件复制到mirai文件夹中
![image-20231219211904375](/assets/image/mirai_sign_3.png)
打开`txlib`文件夹,发现有若干数字命名的文件夹,记录下最大的那个
![image-20231219212926059](/assets/image/mirai_sign_4.png)
然后,双击运行`mcl.cmd`,稍等一会儿后,当提示`mirai-console started successfully`时,qsign就安装上了
之后,打开`mirai/config/top.mrxiaom.qsign`下的`config.yml`文件,用记事本打开
![image-20231219213026138](/assets/image/mirai_sign_5.png)
![image-20231219213255993](/assets/image/mirai_sign_6.png)
然后,按下`Ctrl+S`保存
然后,再次双击运行`mcl.cmd`,可以看到类似提示,如图
![image-20231219214603122](/assets/image/mirai_sign_7.png)
## 运行mirai
到这里,你已经安装并配置成功了,接下来,你就可以登录机器人QQ了
输入,其中 123456 是替换为你机器人的 QQ 号,67890 替换为你机器人 QQ 的密码
```bash
login 12345 67890
```
然后,可以看到提示
![image-20231219215234389](/assets/image/run_mirai_1.png)
把`Captcha link: `后边的链接复制下来,用Chrome或者Edge浏览器打开,按F12打开开发者工具
点开 `Network`
![img5](/assets/image/get_captcha.png)
在浏览器中完成验证, 在 `Network` 中找到名为 `cap_union_new_verify` 的请求, 在最下面
![img6](/assets/image/get_gocq_login_token.png)
ticket 后那一坨就是要输入回 mirai 的内容,但不包括首尾的双引号
**注意**
- 复制的时候记得删掉引号(`"`, 前后都有一个), 那个不是ticket内容
- 速度要快
- 注意不要漏字符(没复制完, 后面还有很长)
把复制下来的东西,粘贴到运行mirai的终端中
![image-20231219220645708](/assets/image/paste_token.png)
然后回车,如果运气好的话,会提示你要收验证码,输入yes并回车,之后把验证码输入上去,然后回车即可成功登录了
如果运气不好,报错code=237了,建议换号
## 后续步骤
查看填写配置信息页,通过 YiriMirai 适配器接入。
+15
View File
@@ -0,0 +1,15 @@
# 使用 QQ 官方机器人 API(使用websocket方式)
:::warning
QQ 官方已停止维护 WebSocket 方式,请使用 Webhook 方式。
:::
QQ官方机器人所有人均可申请,可以在频道和群聊中使用,私聊也可。
## 注册 QQ 机器人
前往[QQ开放平台](https://q.qq.com/#/),找到下方的 QQ 机器人文档,按照指引注册 QQ 频道机器人。
## 获取凭证
注册完成后,前往机器人控制台,找到 开发设置,获取 `AppId(机器人ID)` 和 `AppSecret(机器人密钥)`,接下来进入填写配置信息步骤。
@@ -0,0 +1,110 @@
# 使用 QQ 官方机器人 API(使用webhook方式)
本文章只提供测试版机器人的发布,具体机器人上线请按照 [发布流程](https://q.qq.com/qqbot/#/home) 进行部署。
## 注册 QQ 机器人(测试机器人)
### 配置机器人基本信息
前往 [QQ开放平台](https://q.qq.com/#/) ,找到下方的 `应用管理` ,点击创建机器人,填写基本信息之后,进入机器人页面,如图:
![机器人主页面](/assets/image/qqofficial1.png)
`首页` 选项中的 `发布流程` 即为上线机器人的步骤。由于部署的是测试版机器人,所以只需要进行其中的 `资料` 和 `沙箱配置` 。<br>
先进行资料填写,然后点击沙箱配置。
#### 配置沙箱配置项
点击 `沙箱配置` 。
如果要部署在QQ群中,那么按照 `QQ群ID` 下方的要求进行选择群聊,在消息列表配置中添加有私聊权限的用户。<br>
如果要部署在QQ频道中,那么按照 `频道ID` 下方的要求选择频道ID,机器人类型为0。
#### 配置开发管理项
点击 `开发管理` 。
![开发管理页面](/assets/image/qqofficial2.png)
记录其中的 `AppID` , `Token` , `AppSecret` ,并将 LangBot 所在服务器的IP地址填写到IP白名单中。
## 填写适配器
将上文获取的 `AppID` , `Token` , `AppSecret` 填写入 [配置信息](/deploy/quick-config/config.md) 中的 qqofficial适配器(使用webhook方式)中,并且将 `enable` 设置为 `true` 。<br>
**配置项内容:**
```json
{
"adapter": "qqofficial",
"enable": true,
"appid": "",
"secret": "",
"port": 2284,
"token": ""
},
```
## 配置回调地址
由于QQ官方机器人必须要求回调地址是 https 请求,但 LangBot 仅提供 http 方式,所以需要自行配置反向代理。<br>
本文建议使用 [Caddy](https://caddy2.dengxiaolong.com/docs/) 反向代理,操作流程如下文。
### 操作caddy流程
#### 安装caddy
进入[Caddy安装文档](https://caddy2.dengxiaolong.com/docs/install)。选择对应自己操作系统的安装步骤,进行安装。
#### 填写Caddyfile
本文假设使用 ubuntu 系统部署 LangBot ,那么在系统中,Caddyfile 的默认位置为 `/etc/caddy/Caddyfile`。
使用 vim 或 nano 编辑 Caddyfile ,Caddyfile文件填写为:
```json
your_domain_name {
reverse_proxy 127.0.0.1:2284
}
```
例如,如果你有域名 testlb.com,并且解析地址为本机,同时开启**443**端口,那么填写为:
```json
testlb.com {
reverse_proxy 127.0.0.1:2284
}
```
保存并且退出文件。
**注,Caddyfile文件的填写要求非常严苛,请按照正确的格式填写,如果遇到问题请自行查询Caddy文档或者询问AI。**
#### 启动caddy
输入命令
```bash
sudo systemctl start caddy
```
成功启动后,检查 Caddy 状态命令:
```bash
sudo systemctl status caddy
```
#### 后续配置
若 Caddy 启动不成功,请自行阅读 [Caddy文档](https://caddy2.dengxiaolong.com/docs/quick-starts/caddyfile),或者加入 LangBot 社区群请求帮助。<br>
以下是一些可能出现的问题:
- 没有开启443端口
- 没有将域名解析到本机
- 没有成功保存 Caddyfile
### 设置管理端回调地址
首先 **启动 LangBot** 。<br>
点击 机器人管理端网页中的 `回调配置`,勾选下面 `添加事件` 中的所有事件。 在请求地址中填写 Caddyfile 中设置的域名,后缀为/callback/command。<br>
比如域名为 testlb.com,那么请求地址中填写 testlb.com/callback/command ,点击确定配置。如果回调地址保存成功,那么意味着部署成功。若出现 `校验失败` 字样,请认真检查上述配置项是否填写正确。
## 发布方式
进入 `首页` 的发布流程 ,按照流程进行机器人发布,上线。
+18
View File
@@ -0,0 +1,18 @@
# 消息平台说明
LangBot 需要连接消息平台 API 才能与用户交互,目前支持以下消息平台:
| 平台 | 状态 | 备注 |教程 |
| ------ | ---- | ---- | ---- |
| QQ 个人号 | ✅ | 使用普通的 QQ 号作为机器人,需要使用独立的协议端,支持 OneBot v11 和 go-cqhttp 协议 | [NapCat](/deploy/platforms/qq/aiocqhttp/napcat) <br> [Lagrange](/deploy/platforms/qq/aiocqhttp/lagrange) <br> [LiteLoaderQQNT](/deploy/platforms/qq/aiocqhttp/llonebot) <br> [go-cqhttp(不推荐)](/deploy/platforms/qq/gocq) |
| QQ 官方机器人 | ✅ | 接入 QQ 开放平台的机器人 API | [教程](/deploy/platforms/qq/official_webhook) |
| 企业微信 | ✅ | 企业内部机器人 | [教程](/deploy/platforms/wecom/wecom) |
| 企业微信客服 | ✅ | 企业对外机器人 | [教程](/deploy/platforms/wecom/wecomcs) |
| 微信公众号 | ✅ | 微信公众平台机器人 | [教程](/deploy/platforms/wxoa.md) |
| 个人微信 | ✅ | 个人微信机器人 | [Gewechat](/deploy/platforms/wechat/gewechat) |
| 飞书 | ✅ | | [教程](/deploy/platforms/lark) |
| 钉钉 | ✅ | | [教程](/deploy/platforms/dingtalk) |
| Discord | ✅ | | [教程](/deploy/platforms/discord) |
| Telegram | ✅ | | [教程](/deploy/platforms/telegram) |
| Slack | ✅ | | [教程](/deploy/platforms/slack) |
+55
View File
@@ -0,0 +1,55 @@
# 接入 Slack 机器人
## 创建机器人
前往 [Slack的App平台](https://api.slack.com/apps)。
![Slack平台](/assets/image/slack_01.jpg)
点击右上角的 `Create New App` ,选择从 `from a manifest` , 选择要部署机器人的工作区,选择下一步,
选择创建机器人。
进入左侧 `Basic Information` 选项,记录 `signing_secret`。
进入左侧 `OAuth & Permissions` ,往下拉到 `Scopes`,添加如下机器人权限:
![机器人权限1](/assets/image/slack_02.jpg)
![机器人权限2](/assets/image/slack_03.jpg)
添加上述权限之后,点击 `Install to your workspace`,记录下开头为 `xoxb-xxxxx`的token。<br>
**注:**
**若没有一次性添加成功权限,后续则需要重新安装App。**<br>
进入左侧 `App Home` 栏,滑到最下面有 `Message Tab`,打开并且勾选
`Allow users to send Slash commands and messages from the messages tab`。
## 连接 LangBot
进入左侧 `Event Subscriptions` ,打开开关,点击 `Subscribe to bot events`,
将如下权限添加进去:
![事件权限](/assets/image/slack_04.jpg)
上述操作都完成之后,将 `signing_secret` 和 `bot token` 填写入[Slack适配器中](/deploy/quick-config/config.md#slack),并且将 `enable` 设置为 `true` 。
## 启动机器人
Slack 配置项在填写完成后,**启动 LangBot**。
然后在刚才Event Subscriptions的 `Request URL`中,填写入你的 LangBot 的部署地址。
::: info
由于 Slack 官方要求使用 https,可以参考[QQ官方机器人部署流程中的Caddy配置部分](/deploy/platforms/qq/official_webhook.html#%E9%85%8D%E7%BD%AE%E5%9B%9E%E8%B0%83%E5%9C%B0%E5%9D%80),注意端口使用 Slack 适配器配置的端口。
:::
上述配置项都填写完成后,点击保存链接,若标识为绿色的**Verified**,那么就说明部署成功。
否则查看上述配置项是否填写正确。
## 效果图
![效果图](/assets/image/slack_05.jpg)
+37
View File
@@ -0,0 +1,37 @@
# 接入 Telegram 机器人
## 创建机器人
前往 [Telegram 机器人创建页面](https://t.me/botfather),按照提示操作,创建一个机器人。
![Telegram 机器人创建](/assets/image/telegram_01.png)
![Telegram 机器人创建](/assets/image/telegram_02.png)
创建完成后,BotFather 会返回一个 API Token,请妥善保存。接下来关闭`Privacy Mode`,以便在群聊中使用。
![Telegram 机器人 API Token](/assets/image/telegram_03.png)
## 在 LangBot 中填写信息并启动
根据[填写配置信息](/deploy/quick-config/config)中的 Telegram 适配器配置,填写相关信息。
将上一步获取的 API Token 填写到配置中,`markdown_card` 选项为是否启用 Markdown 形式的回复。
```json
{
"adapter": "telegram",
"enable": true,
"token": "xxxxxxx",
"markdown_card":false
},
```
填写完成后启动 LangBot,若成功配置,日志中会出现`[02-02 16:48:15.263] manager.py (68) - [INFO] : 初始化平台适配器 1: telegram`的字样,保持 LangBot 运行。
## 使用机器人
现在在群里或者私聊机器人都可以正常使用了。
![Telegram 机器人使用](/assets/image/telegram_04.png)
![Telegram 机器人使用](/assets/image/telegram_05.png)
@@ -0,0 +1,99 @@
# 通过 Gewechat 接入个人微信
:::warning
LangBot接入gewechat,仅供娱乐,请勿用于违法违规行为,否则后果自负。
:::
**本教程要求 LangBot 以 Docker 容器部署**,请根据 LangBot 部署文档将 LangBot 部署到 Docker 中。
:::info
- 推荐使用 Ubuntu Linux 系统部署。
- 推荐使用[阿里云,服务器价格低至 38 元一年,更可以享受8折优惠](https://www.aliyun.com/minisite/goods?userCode=ys4ad8gs),系统选择 Ubuntu 22.04 或 24.04。
:::
## 创建 Docker 网络
我们需要将 Gewechat 和 LangBot 部署到同一个 Docker 网络中,方便它们互相通信。
```bash
docker network create langbot-network
```
在 LangBot 目录的 `docker-compose.yaml` 文件中添加网络配置(添加到 `services.langbot` 字段下,并在 `networks` 字段下添加 `langbot-network` 网络配置):
```yaml
services:
langbot:
...
networks:
- langbot-network
...
networks:
langbot-network:
external: true
```
在下一步部署 Gewechat 时,请在启动命令(docker run 命令)中的`-itd`后添加额外的网络配置`--network langbot-network`。
```bash
# 例如原命令为
docker run -itd -v /root/temp:/root/temp -p 2531:2531 -p 2532:2532 --privileged=true --name=gewe gewe /usr/sbin/init
# 添加网络配置后,命令变为
docker run -itd --network langbot-network -v /root/temp:/root/temp -p 2531:2531 -p 2532:2532 --privileged=true --name=gewe gewe /usr/sbin/init
```
## 部署 Gewechat
请查看 [Gewechat 文档](https://github.com/Devo919/Gewechat) 执行到 `启动服务` 步骤。
## 在 LangBot 中填写信息并启动
根据[填写配置信息](/deploy/quick-config/config)中的个人微信适配器配置,填写 LangBot 相关配置信息。
```json
{
"adapter": "gewechat",
"enable": true,
"gewechat_url": "http://gewe:2531",
"gewechat_file_url": "http://gewe:2532",
"port": 2286,
"callback_url": "http://langbot:2286/gewechat/callback",
"app_id": "",
"token": ""
}
```
- `enable` 是否启用个人微信适配器,请修改为 `true`
- `gewechat_url` 上一步部署的 Gewechat 容器地址,端口默认为 2531,不需要填写路径
- `gewechat_file_url` gewechat文件下载地址,端口默认为 2532,主机和 `gewechat_url` 相同,不需要填写路径
- `port` LangBot 监听 Gewechat 消息的端口,默认 2286,非必要勿修改
- `callback_url` 回调地址,是 Gewechat 容器推送消息给 LangBot 容器的地址,需要填写完整路径,例如 `http://langbot:2286/gewechat/callback`,端口与 `port` 一致,路径必须为 `/gewechat/callback`
- `app_id` 和 `token` **请勿填写**,这是用于存储登录信息的,在首次启动扫码登录后会自动保存
:::info
在这里我们将`gewechat_url`的主机名设置为`gewe`,即为上一步部署的 Gewechat 容器名称。
将`callback_url`的主机名设置为`langbot`,即为上一步部署的 LangBot 容器名称。
- 如果你按照本教程要求部署,使用上述默认的即可。
- 如果你使用了其他的容器名称,或者其他情况,请自行更改。
:::
## 启动 LangBot
按照部署 LangBot 文档中的启动命令启动 LangBot。
LangBot 启动后,会显示一个二维码,请使用个人微信扫描该二维码进行登录。
![alt text](/assets/image/gewechat_01.png)
成功登录后,会显示登录信息,并开始监听个人微信消息。
![alt text](/assets/image/gewechat_02.png)
:::info
登录后会将`app_id`和`token`保存到配置文件中,下次启动时不需要再次扫码登录。
:::
现在即可私聊或在群聊中与 LangBot 对话。
+71
View File
@@ -0,0 +1,71 @@
# 部署企业微信机器人
部署企业微信机器人接入 LangBot 。
:::info
此种接入方式为企业内部自建应用,是在企业内部使用的,若需要对外接待,请查看[企业微信客服接入方案](wecomcs.md)。
:::
## 创建机器人
进入[企业微信管理后台](https://work.weixin.qq.com/),登陆账号,进入主页面后,点击` 应用管理 `,` 自建 `,` 创建应用 `,填写机器人基本信息,创建好之后,会出现类似这样的界面:
![机器人页面](/assets/image/wecom1.png)
## 设置回调地址
### 获取企业微信配置项
1. 打开企业微信管理后台主页,点击`我的企业`,记录下最下面的企业ID。
![企业ID](/assets/image/wecom2.png)
2. 开启通讯录同步权限
:::info
- 此配置项是为了实现 LangBot 的群发消息,具体代码位于libs/wecom_api/api.py 。
- 目前 LangBot 仍在开发,所以未实现此配置项的相关功能。
- 此配置项可以填写入随机字符,**不能为空**。
:::
![通讯录权限](/assets/image/wecom5.png)
点击`安全与管理`,`管理工具`,`通讯录同步`
![通讯录同步secret](/assets/image/wecom3.jpg)
点击`查看secret`,记录下来,这是 contacts_secret(通讯录同步 secret)。
3. 点击`应用管理`,找到刚才创建的机器人,查看机器人的 secret ,记录下来。
![机器人secret](/assets/image/wecom4.png)
至此,已经获得了三个配置项,分别是 corpid(企业ID),secret(机器人 secret),contacts_secret(通讯录同步 secret)。
将他们填写入[企业微信适配器](/deploy/quick-config/config.md#企业微信适配器),并且将 `enable` 设置为 `true` 。
### 配置回调地址
进入机器人页面。
点击最下方的`企业可信IP`,将部署 LangBot 的服务器添加进去。
点击` 接收消息 `,` 设置API接收 `,开始填写接收服务器消息配置。
URL填写为` http://your_ip_address:2290/callback/command `,你的IP地址就是部署LangBot的服务器的地址。
Token 和 EncodingAESKey 点击随机获取,并记录下来,填写到[企业微信适配器](/deploy/quick-config/config.md#企业微信适配器)。
## 保存回调地址
当前面五个配置项已经正确获取,并且准确的填入到企业微信适配器中,那么**启动 LangBot**。<br>
回到配置回调地址页面并且点击保存,如果以上的配置项填写正确,那么可以保存成功,这意味着企业微信和 LangBot 可以进行通信(部署成功),如果出现**openapi 请求回调地址不通过**,请再三检查你的配置项填写是否正确。
+38
View File
@@ -0,0 +1,38 @@
# 部署企业微信客服
:::info
本文详细讲述 LangBot 部署到企业微信客服号的过程,此功能可以将客服号与普通微信进行对话。若只需要在企业微信内部使用,请参考[企业微信内部应用实现](wecom.md)。
**部署企业微信客服号需要企业资质**,具体查看[企业微信客服号接入指南](https://developer.work.weixin.qq.com/document/path/94638),并且根据此文档提供对应的企业资质证明。
:::
## 效果图
![效果图](/assets/image/wecomcs_01.jpg)
## 部署指南
企业微信客服号需要四个配置项,如下:
```json
{
"adapter": "wecomcs",
"enable": true,
"port": 2289,
"corpid": "",
"secret": "",
"token": "",
"EncodingAESKey": ""
}
```
后续的配置方式和配置项和[企业微信内部应用](wecom.md)一样,只是不需要 `contacts_secret`。
## 注意事项
1. 一定要按照上文的企业微信官方文档步骤走,将客服账号添加入 `api 管理`中。
2. 步骤与企业微信内部应用一样,不要漏看,同样需要保存回调地址,因为本质上只是在企业微信内部应用上增加了其他的权限。
3. LangBot 不会读取敏感信息如聊天记录和企业资质内容。
+52
View File
@@ -0,0 +1,52 @@
# 部署微信公众号机器人
部署微信公众号机器人接入 LangBot 。
## LangBot 微信公众号接入模式
目前,LangBot 提供两种方式接入微信公众号:
1. **传统收发消息模式**
- 公众号要求请求必须在 **15 秒内** 处理完成,超时的 AI 生成内容将无法发送。
- 当 AI 生成内容超时发生后,LangBot 会在控制台打印请求超时信息。
2. **“发送任意文字回复消息”模式**
- 该方法可突破 **15 秒** 限制,但 **过长的文本** 可能无法成功发送。
- 使用此方法时,给公众号发消息,公众号会回复“AI正在思考中,请发送任意内容获取回答”,此时,需要发送任意内容获取回答。
如需更复杂的功能,请联系 **LangBot 团队** 进行定制化支持。
## 创建机器人
进入[微信公众平台](https://mp.weixin.qq.com/),如果已经有公众号账号,那么直接扫码登录,进入控制台。
如果之前没有注册过公众号,那么点击立即注册,选择 `公众号`,依次填写信息,进入控制台。控制台是这样的:
![控制台页面](/assets/image/oa1.png)
## 设置回调地址
### 获取配置项
点击`设置与开发`,`开发接口管理`,出现这样的页面:
![设置开发项](/assets/image/oa2.png)
记录下来`开发者ID(AppID)`,`开发者密码(AppSecret)`,并将部署 LangBot 的服务器添加入`IP白名单`。
### 设置反向代理
由于微信公众号的只支持http(80端口),https(443端口),所以本文假设80端口已被占用,使用443端口反向代理至 LangBot 。<br>
具体的反向代理配置教程与[QQ官方机器人反向代理配置](/deploy/platforms/qq/official_webhook.md#操作caddy流程)相同,只是将`reverse_proxy 127.0.0.1:2284`改为`reverse_proxy 127.0.0.1:2287`。
### 保存回调地址
点击设置服务器配置,输入`Token`,`EncodingAESKey`,并将消息加解密方式改为`安全模式`。<br>
至此,将获取到的四个配置项( AppID , AppSecret , token , EncodingAESKey )填入[微信公众号配置项](/deploy/quick-config/config.md#微信公众号适配器)。<br>
在配置项中,`Mode`选项为选择的接入模式,其中默认为`drop`,`drop` 为传统收发消息模式,`passive` 为发送任意文字获取回复模式。<br>
`LoadingMessage`选项为加载信息,可以更改为其他内容,仅在模式为`passive`下有效。将 `enable` 设置为 `true` 。
填写成功后,**启动 LangBot 。**<br>
将 URL 填写为`https://your_domain_name/callback/command`,其中的 `your_domain_name` 就是 Caddy 中填写的域名。点击保存。如果可以保存成功,那么意味着部署成功。如果出现**系统发生错误,请稍后重试**,那么请重新检查以上配置内容是否填写正确。
+184 -5
View File
@@ -9,7 +9,7 @@
## platform.json
修改此配置文件以指定需要连接的消息平台,只需要关注`platform-adapters`字段。
目前支持 `go-cqhttp`、`aiocqhttp`、`qq-botpy` 消息平台适配器,也可以同时启用多个同种类或不同种类的平台适配器。
目前支持 `go-cqhttp`(QQ逆向)、`aiocqhttp`(QQ逆向)、`qq-botpy`(QQ官方)、`wecom`(企业微信官方) 等多种消息平台适配器,也可以同时启用多个同种类或不同种类的平台适配器。
请根据你部署的消息平台的情况选择填写。
::: info
@@ -40,7 +40,7 @@
`access-token`:设置访问密钥,与 NapCat/Lagrange/LLOneBot 等框架中设置的保持一致
### qq-botpy 适配器
### qq-botpy 适配器(使用websocket方式)
用于接入 QQ 官方机器人 API。
@@ -72,6 +72,33 @@
- `direct_message` QQ 频道私聊消息
- `public_messages` Q群 和 列表私聊消息
### qqofficial 适配器(使用webhook方式)
用于接入QQ官方机器人(webhook接入)。
```json
{
"adapter": "qqofficial",
"enable": false,
"appid": "",
"secret": "",
"port": 2284,
"token": ""
},
```
`"adapter": "qqofficial"`,无需改动。
`enable`:是否启用,配置完成后请将其设为`true`
`appid`:申请到的QQ官方机器人的appid
`secret`:申请到的QQ官方机器人的secret
`token`: 申请到的QQ官方机器人的token
`port`: 启动端口,一般不改动。
### Nakuru 适配器
用于接入 go-cqhttp。
@@ -99,11 +126,163 @@
`token`:验证密钥,,与`go-cqhttp`的`config.yml`里面的保持一致
### 企业微信适配器
用于接入企业微信机器人,如果不清楚这些内容应该填写什么,请查看[配置企业微信](/deploy/platforms/wecom/wecom.md)。
```json
{
"adapter": "wecom",
"enable": false,
"host": "0.0.0.0",
"port": 2290,
"corpid": "",
"secret": "",
"token": "",
"EncodingAESKey": "",
"contacts_secret": ""
},
```
`"adapter": "wecom"`,无需改动。
`enable`:是否启用,配置完成后请将其设为`true`
`host`:运行 企业微信回调地址 的主机地址,一般不改动
`port`:运行 企业微信回调地址 的监听端口,一般不改动
`corpid`,`secret`,`token`,`EncodingAESKey`,`contacts_secret`都在企业微信配置项页中获取。
### 微信公众号适配器
用于接入微信公众号机器人。
```json
{
"adapter":"officialaccount",
"enable": true,
"token": "",
"EncodingAESKey":"",
"AppSecret":"",
"AppID":"",
"Mode":"drop",
"LoadingMessage":"AI正在思考中,请发送任意内容获取回复。",
"host": "0.0.0.0",
"port": 2287
}
```
`"adapter": "officialaccount"`,无需改动。
`enable`:是否启用,配置完成后请将其设为`true`
`Mode`:具体参照微信公众号部署页面
`LoadingMessage`: 加载信息,可更改为其他内容,仅在模式为 `passive` 下有效
`host`:运行 微信公众号回调地址 的主机地址,一般不改动
`port`:运行 微信公众号回调地址 的监听端口,一般不改动
`AppSecret`,`token`,`EncodingAESKey`,`AppID`都在微信公众号配置项页中获取。
## 个人微信
具体用法请查看[配置个人微信](/deploy/platforms/wechat/gewechat.md)。
```json
{
"adapter": "gewechat",
"enable": true,
"gewechat_url": "http://gewe:2531",
"port": 2286,
"callback_url": "http://langbot:2286/gewechat/callback",
"app_id": "",
"token": ""
}
```
## 飞书
具体用法请查看[配置飞书](/deploy/platforms/lark.md)。
```json
{
"adapter": "lark",
"enable": false,
"app_id": "cli_abcdefgh",
"app_secret": "XXXXXXXXXX",
"bot_name": "LangBot",
"enable-webhook": false,
"port": 2285,
"encrypt-key": "xxxxxxxxx"
},
```
## 钉钉适配器
具体用法请查看[配置钉钉机器人](/deploy/platforms/dingtalk.md)。
```json
{
"adapter":"dingtalk",
"enable": false,
"client_id":"",
"client_secret":"",
"robot_code":"",
"robot_name":"",
"markdown_card":false
},
```
## Discord
具体用法请查看[配置 Discord](/deploy/platforms/discord.md)。
```json
{
"adapter": "discord",
"enable": false,
"client_id": "1234567890",
"token": "XXXXXXXXXX"
},
```
### Slack
具体用法请查看[配置Slack](/deploy/platforms/slack.md)。
```json
{
"adapter":"slack",
"enable":false,
"bot_token":"",
"signing_secret":"",
"port":2288
}
```
### 企业微信客服号
具体用法请查看[配置企业微信客服号](/deploy/platforms/wecom/wecomcs.md)
```json
{
"adapter": "wecomcs",
"enable": false,
"port": 2289,
"corpid": "",
"secret": "",
"token": "",
"EncodingAESKey": ""
}
```
## provider.json
修改此配置文件以设置所连接的 AI 提供商的相关信息,目前支持 `openai(GPT)`, `anthropic(claude)`, `moonshot(月之暗面)` 三种接口及对应模型。
修改此配置文件以设置所连接的 AI 提供商的相关信息。
> 如果你没有OpenAI API Key,你可以[在此获取](https://api.qhaigc.net/)
> 如果没有OpenAI API Key,你可以[在此获取](https://api.qhaigc.net/)
以下仅讲解启用 OpenAI 接口的方式,具体设置方法请查看 [功能配置`provider.json` 页](/config/function/provider)。
@@ -149,4 +328,4 @@
阅读并完成以上教程后,请根据你部署 LangBot 的方式重启,你应该可以成功使用了,如果不能请再次阅读(你或许漏做或错做某些步骤),如果完全阅读并充分理解本文档后仍然确实无法使用,你可以在[这里](/insight/community.html)找到交流群。
:::
:::
+7 -1
View File
@@ -2,7 +2,13 @@
## 使用 Docker(或基于 Docker 的一键部署)
直接拉取最新的镜像即可。
请在 `docker-compose.yaml` 目录下执行:
```bash
docker compose up --force-recreate --pull always -d
```
此命令将拉取最新的 LangBot 镜像并重建容器。
## 手动部署
+24
View File
@@ -0,0 +1,24 @@
# 开发配置
> 此文档基于 LangBot 4.0 版本编写
LangBot 分为前端和后端,前端使用 Next.js 开发,后端通过 Quart(Flask 的异步版本)开发。
## 后端
代码位于 `pkg` 目录下,由根目录的 `main.py` 文件引导启动。
安装依赖
```bash
pip install -r requirements.txt
```
启动后端
```bash
python main.py
```
此时配置文件会自动生成到 `data/config.yaml` 文件中。
+3 -39
View File
@@ -1,39 +1,3 @@
---
# https://vitepress.dev/reference/default-theme-home-page
layout: home
hero:
name: "LangBot"
image:
src: /zh/public/langbot-logo-block.png
alt: LangBot-logo
text: ""
tagline: "原名 QChatGPT;😎高稳定、🧩支持插件、🦄多模态的 LLM QQ / QQ频道 / OneBot 机器人 / Agent 平台"
actions:
- theme: brand
text: 查看文档
link: /zh/insight/guide
- theme: alt
text: 代码仓库
link: https://github.com/RockChinQ/LangBot
features:
- title: 丰富生态
details: 支持事件监听、Agent 等插件扩展方式,具有数十种插件生态
- title: 功能直观
details: 集成黑名单、限速、选择响应、上下文控制、Prompt 管理等多种常用功能
- title: 多种模型
details: 适配 OpenAI、Moonshot、Anthropic、Gitee AI 等多个提供商,同时深度支持 OneAPI
- title: 高稳定性
details: 采用主流的设计思想,架构清晰,具有高测试覆盖率
- title: 快速部署
details: 支持多种部署方式,包括 宝塔一键部署、Docker 部署、源码部署
- title: 持续维护
details: 长期维护、迭代,持续跟进大模型领域的最新应用实践
---
<script setup>
window.location.href = '/zh/insight/guide'
</script>
+13 -9
View File
@@ -1,21 +1,25 @@
# 社区资源
## 视频教程
[【8月最新】5min部署 最强AI语音聊天+酒馆角色扮演+QQ机器人,全新角色扮演语音聊天QQ机器人](https://www.bilibili.com/video/BV1vypZeBEW1/?share_source=copy_web&vd_source=1335a044d4fd926920999a0e3ba0a731)
## 简化版教程
> 简化版教程:如视频教程、更简单的文字教程,适合小白
收录于:https://blog.thelazy.top/tags/langbot
## 本项目交流 QQ 群
### 社区群
> 遇到问题请先认真阅读文档,如无法解决再加群提问
Lazy的交流群:619154800 ([链接](https://qm.qq.com/q/1K9GjQuza))
### 🥰 社区总群
### 官方群
解答各种问题
> 官方群不解答部署问题
- LangBot 社区(三):966235608 ([链接](https://qm.qq.com/q/JLi38whHum))
- 【已满】LangBot 社区(二):1030838208 ([链接](https://qm.qq.com/q/PF9OuQCCcM))
- 【已满】LangBot 社区(一):619154800 ([链接](https://qm.qq.com/q/1K9GjQuza))
四群:195992197 ([链接](https://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=cSekvWmyezfCE4O8gXS7lSjkmPinjzpP&authKey=G4jHfz2%2BtQawxCRhn1ZRrQiI8bTvlepQubZL6F9fymFuz8jqZZ4FkYh6lhKLMCd9&noverify=0&group_code=195992197))
### 🧩 插件开发群
插件开发、发布、交流
- LangBot 插件开发:1032327138 ([链接](https://qm.qq.com/q/G7ENGTjeou))
+4
View File
@@ -7,10 +7,14 @@
- 阅读 部署 LangBot 页,选择部署方式
- 阅读 部署消息平台页,选择要使用的消息平台
- 阅读 填写配置信息页,根据情况填写配置
## 使用板块
- 阅读命令语法了解机器人可用命令,可以在对话中实现切换预设、切换模型等
- 阅读插件列表,获得插件,增强功能
- 阅读常见问题,可有助于解决部署和使用时的问题
## 配置板块
- 功能配置,具体解释所有的配置信息,实现更多自定义需求
- 元数据配置,控制敏感词、模型列表等
+1 -13
View File
@@ -9,6 +9,7 @@
- Anthropic:Claude 系列
- [OneAPI](https://github.com/songquanpeng/one-api)接口聚合平台:Google Gemini Pro / Azure / Anthropic Claude / 智谱 ChatGLM / 百度文心一言 / 讯飞星火认知 / 阿里通义千问 / 360 智脑等市面上所有 LLM 官方接口
- [free-one-api](https://github.com/RockChinQ/free-one-api)逆向工程库聚合平台:ChatGPT / Claude / Google Bard / gpt4free / 通义千问
- [PPIO 派欧云 API](https://ppinfra.com/user/register?invited_by=QJKFYD&utm_source=github_langbot):低价开源模型供应商,支持最新的 Llama、DeepSeek、通义千问、智谱等系列模型
## 功能点列举
@@ -85,19 +86,6 @@
</details>
## 限制
- ❗OpenAI 官方关于模型生成内容的警告:
- May occasionally generate incorrect information(可能会生成不正确的信息)
- May occasionally produce harmful instructions or biased content(可能会产生有害说明或有偏见的内容)
- Limited knowledge of world and events after 2021(对2021年后的世界和事件的了解有限)
- ❗模型无思维能力,仅针对传入的上下文根据数据集生成内容,请勿过于信任其输出
- ❗模型不了解其运行平台及其使用的模型版本,任何针对其实现原理的问题答案均视为无效,请以项目文档为准
以上是关于此程序的限制的最高优先级描述,其他方式(如询问机器人相关信息)获得的描述均应被视为无效
由于模型生成的内容导致的一切损失,本项目概不负责
## 使用方式
对话及绘图功能均直接调用OpenAI的模型进行处理,与机器人程序无关,这意味着模型并不了解此项目的相关信息(如实现方式、技术栈、运行平台等),除非在预设值中写入相关信息。
+111 -6
View File
@@ -4,14 +4,14 @@
[[toc]]
:::
以下 API 仅针对 事件插件 可用,组件扩展形式请自行阅读源码。
## 事件 API
## 消息处理
以下 API 仅在事件处理函数中可用。
### 回复消息
```python
ctx.reply(message_chain: MessageChain)
await ctx.reply(message_chain: MessageChain)
```
回复此次事件的发起会话。
@@ -23,7 +23,7 @@ ctx.reply(message_chain: MessageChain)
> 由于 QQ 官方 API 对主动消息的支持性很差,故若用户使用的是 QQ 官方 API,发送主动消息可能会失败
```python
ctx.send_message(target_type: str, target_id: str, message_chain: MessageChain)
await ctx.send_message(target_type: str, target_id: str, message_chain: MessageChain)
```
发送主动消息给目标。
@@ -32,8 +32,6 @@ ctx.send_message(target_type: str, target_id: str, message_chain: MessageChain)
- `target_id`:目标 ID(QQ 号或群号)
- `message_chain`:[消息链对象](./messages.md),程序能自动转换为目标消息平台消息链
## 事件处理
### 阻止事件默认行为
```python
@@ -57,3 +55,110 @@ ctx.add_return(name: str, value: Any)
```
添加返回值,事件返回值均为**可选**的,每个事件支持的返回值请查看`pkg.plugin.events`中的每个事件的注释。
## 请求 API
`请求(Query)`指的是用户向 LangBot 发送一个问题时,LangBot 处理该问题的程序上下文。此段落的 API 用于与这些上下文交互。
- 事件处理函数中,Query 对象一般位于`ctx.event.query`
### 设置请求变量
```python
ctx.event.query.set_variable(key: str, value: typing.Any)
```
请求变量是与此次 Query 绑定的一个 `dict`,其中包含了一些程序上下文信息。如果使用的是 Dify 或者 阿里云百炼 等 LLMOps 的runner,[这些变量将被传入对应平台的 API 作为变量](/config/function/provider.html#%E8%AF%B7%E6%B1%82%E5%8F%98%E9%87%8F)。
如果您需要使用插件设置变量,建议在`PromptPreProcessing`事件时处理。
- `key`:该变量的名称
- `value`:该变量的值
### 获取请求变量
```python
ctx.event.query.get_variable(key: str)
```
获取请求变量。
- `key`:变量名称
- 返回值:`typing.Any`
### 获取所有请求变量
```python
ctx.event.query.get_variables()
```
获取此 Query 对象所有已设置的变量值。
- 返回值:`dict[str, typing.Any]`
## LangBot API
以下 API 是 LangBot 直接提供给插件调用的,可以在事件处理函数之外调用。
- `host` 表示 `pkg.plugin.context.APIHost` 类的对象,会被包含在每个插件类中。
### 获取已启用的消息平台适配器列表
```python
host.get_platform_adapters()
```
获取已启用的消息平台适配器列表。
- 返回值:`list[pkg.platform.adapter.MessageSourceAdapter]`
### 发送主动消息
```python
await host.send_active_message(adapter: pkg.platform.adapter.MessageSourceAdapter, target_type: str, target_id: str, message_chain: MessageChain)
```
发送主动消息给目标。
- `adapter`:消息平台适配器,通过 `host.get_platform_adapters()` 获取并选择其中一个
- `target_type`:目标类型,可选值:`"person"`、`"group"`
- `target_id`:目标 ID(QQ 号或群号)
- `message_chain`:[消息链对象](./messages.md),程序能自动转换为目标消息平台消息链
:::info
- 某些消息平台可能不支持主动消息,或有严格限制
- 某些消息平台适配器(例如`aiocqhttp`)是作为服务端等待消息平台连接上来推送消息,在连接成功之前,发送主动消息会失败
:::
示例:
```python
import asyncio
import pkg.platform.types as platform_types
...
# 某个插件的 initialize 函数
# 此代码将在 LangBot 启动 10 秒后尝试向 QQ 号 1010553892 发送消息 "hello, world!"
async def initialize(self):
print(self.host.get_platform_adapters())
async def send_message():
print("send message start waiting")
await asyncio.sleep(10)
try:
await self.host.send_active_message(
adapter=self.host.get_platform_adapters()[0],
target_type="person",
target_id="1010553892",
message=platform_types.MessageChain([
platform_types.Plain("hello, world!")
])
)
except Exception as e:
traceback.print_exc()
print("send message end")
asyncio.get_running_loop().create_task(send_message())
```
+4
View File
@@ -1,5 +1,9 @@
# 组件扩展
::: warning
2025年3月~4月:我们正在进行 4.0 版本重构,组件定义变化较大,现阶段不建议使用组件扩展。请优先考虑使用基于事件的插件接口。
:::
> 请先阅读[插件介绍页](/plugin/plugin-intro)
:::info 目录
+40 -1
View File
@@ -64,7 +64,15 @@ msg_chain = MessageChain([
## 消息平台事件
这些事件不同于 LangBot 插件事件,是消息平台系统独立的一套事件系统。这些事件是 LangBot 插件事件的源事件,可以从每个 Query.message_event 取得。
这些事件不同于 LangBot 插件事件,是消息平台系统独立的一套事件系统。这些事件是 LangBot 消息的源事件,可以从每个 Query.message_event 取得。
```python
# 例如在插件中
@handler(GroupMessageReceived)
async def _(self, ctx: EventContext):
# 取得消息平台事件
message_event = ctx.query.message_event
```
消息平台事件定义位于`pkg/platform/types/events.py`中。
@@ -80,3 +88,34 @@ msg_chain = MessageChain([
- `import mirai` 改为 `import pkg.platform.types as mirai`
- 不建议直接改成 `as mirai`,建议使用 `import pkg.platform.types as platform_types` 并将插件代码中对应的 `mirai.xxx` 替换为 `platform_types.xxx`
- `from mirai import *` 改为 `from pkg.platform.types import *`
## 访问消息平台底层 API
为了抹平各个平台的差异,LangBot 在消息平台API之上,提供了一个抽象层,即上方所述的内容,以及`pkg/platform/sources`目录下的各个平台适配器。
但由于各个平台的差异较大,抽象层内的实体和 API 封装并不完整,如果您的插件需要访问特定平台的功能,可以按照以下说明访问底层 API。
:::info
其中的`adapter`为每个适配器的实例化对象,对应 `pkg/platform/sources/` 下各个文件中的 `xxxAdapter(adapter.MessagePlatformAdapter)` 类。可以在插件事件的`query.adapter`中取得,例如:
```python
# 例如在插件中
@handler(GroupMessageReceived)
async def _(self, ctx: EventContext):
# 取得适配器对象
adapter = ctx.query.adapter
```
:::
| 平台 | 适配器 | 访问方式 | 说明 |
| --- | --- | --- | --- |
| QQ 个人号| aiocqhttp | adapter.bot | bot 对象对应 [aiocqhttp](https://github.com/nonebot/aiocqhttp) 的 CQHttp 对象,详细使用方式请参考 aiocqhttp 文档 |
| QQ 官方API | qqofficial | adapter.bot | bot 对象为 libs/qq_official_api 下的 SDK 对象,详细使用方式可以参考 libs/qq_official_api/api.py 中`QQOfficialClient`中的`send_group_text_msg`方法发起 HTTP 请求的方式,具体接口文档请查看 QQ 官方 API 文档|
| 个人微信 | gewechat | adapter.bot | bot 对象为 [hanfangyuan4396/gewechat-client](https://github.com/hanfangyuan4396/gewechat-python) 的 GewechatClient 对象,详细使用方式可以参考文档 |
| 企业微信 | wecom | adapter.bot | 参考 libs/wecom_api/api.py 中`WecomClient`中的`send_image`方法发起 HTTP 请求的方式,具体接口文档请查看企业微信 API 文档 |
| 微信公众号 | officialaccount | - | 请参考微信公众号的 API 文档中的接口文档信息,相关的凭据信息可以在 adapter.bot 中取得 |
| 飞书 | lark | adapter.api_client | 飞书 SDK 的 API Client 对象,具体请参考[oapi-sdk-python](https://github.com/larksuite/oapi-sdk-python) |
| 钉钉 | dingtalk | - | 请参考钉钉 API 文档,相关的凭据信息可以在 adapter.bot 中取得 |
| Discord | discord | adapter.bot | bot 对象为 [Rapptz/discord.py](https://github.com/Rapptz/discord.py) 的 Discord 对象,详细使用方式请参考文档 |
| Telegram | telegram | adapter.bot | bot 对象为 [python-telegram-bot](https://github.com/python-telegram-bot/python-telegram-bot) 的 Telegram 对象,详细使用方式请参考文档 |
| Slack | slack | adapter.bot | bot 对象 libs/slack_api/api.py 中的对象,详细使用方式请参考其代码以及 Slack SDK |
+23 -7
View File
@@ -10,18 +10,18 @@
[[toc]]
:::
## 💬简介
## 💬 简介
本页讲解普通插件开发步骤,插件内部有两种方法:事件监听器、内容函数。
事件监听器能在某些事件触发时进行响应,更改行为。内容函数可供大语言模型调用,具体请查看插件介绍页。
LangBot 还支持组件扩展,可以不局限于监听预定事件,做到整个组件替换,具体请阅读完此页后查看**组件扩展**页。
## 💻快速开始
## 💻 快速开始
按照文档部署此项目,并使其正常运行。
使用[hello_plugin](https://github.com/RockChinQ/hello_plugin)作为模板生成插件代码仓库,然后将仓库代码克隆到`plugins`目录下。
使用[HelloPlugin](https://github.com/langbot-app/HelloPlugin)作为模板生成插件代码仓库,然后将仓库代码克隆到`plugins`目录下。
修改插件的 README.md 文件中需要修改的部分。
@@ -104,14 +104,18 @@ class HelloPlugin(BasePlugin):
编写完毕保存后,重新启动主程序,向机器人发送`!plugin`命令,若有`Hello`插件则说明插件加载成功
## ❗规范(重要)
## ❗ 规范(重要)
- 请每个插件独立一个目录以便管理,建议在Github上创建一个仓库储存单个插件,以便获取和更新
- 插件名使用`大驼峰命名法`,如`Hello`、`ExamplePlugin`、`ChineseCommands`等
- 命名规范(重要):
- 插件作者:使用英文,大小写均可,如`RockChinQ`
- 插件名:使用`大驼峰命名法`,如`Hello`、`ExamplePlugin`、`ChineseCommands`等
- 插件仓库:请使用大驼峰命名法,建议直接与插件名相同,如`HelloPlugin`
- 插件简介:建议携带`LangBot 插件`字样
- 一个目录内可以存放多个Python程序文件,以独立出插件的各个功能,便于开发者管理,但不建议在一个目录内注册多个插件
- 插件需要的依赖库请在插件目录下的`requirements.txt`中指定,程序从储存库获取此插件时将自动安装依赖
## 🪝内容函数
## 🪝 内容函数
通过[GPT的Function Calling能力](https://platform.openai.com/docs/guides/gpt/function-calling)实现的`内容函数`,这是一种嵌入对话中,由GPT自动调用的函数。
@@ -197,7 +201,13 @@ async def access_web(self, query, url: str):
- 这仅仅是一个示例,需要更高效的网络访问能力支持插件,请查看[WebwlkrPlugin](https://github.com/RockChinQ/WebwlkrPlugin)
## 📄名词解释
## 📦 上架插件市场
当你的插件开发完成后,请上传到 GitHub,并在 [LangBot 仓库提出 issue](https://github.com/RockChinQ/LangBot/issues/new?assignees=&labels=%E7%8B%AC%E7%AB%8B%E6%8F%92%E4%BB%B6&projects=&template=submit-plugin.yml&title=%5BPlugin%5D%3A+%E8%AF%B7%E6%B1%82%E7%99%BB%E8%AE%B0%E6%96%B0%E6%8F%92%E4%BB%B6) ,待审核后将会添加到插件市场,约半个小时后会在 LangBot WebUI 插件页的插件市场上可见。
![](/assets/image/plugin_dev_tutor_01.png)
## 📄 名词解释
### 说明
@@ -223,3 +233,9 @@ async def access_web(self, query, url: str):
### API 参考
关于插件可以调用的 API,请查看 [API 参考](./api-ref)
### 插件开发交流群
插件开发、发布、交流
- LangBot 插件开发:1032327138 ([链接](https://qm.qq.com/q/G7ENGTjeou))
+2 -2
View File
@@ -43,7 +43,7 @@ GPT将会回复一个对`access_the_web`的函数调用请求,LangBot将调用
例如安装`hello_plugin`插件
```
!plugin get https://github.com/RockChinQ/hello_plugin
!plugin get https://github.com/langbot-app/HelloPlugin
```
安装完成后重启程序。
@@ -102,10 +102,10 @@ GPT将会回复一个对`access_the_web`的函数调用请求,LangBot将调用
以下是部分插件列表,所有插件请查看[RockChinQ的Star集](https://github.com/stars/RockChinQ/lists/qchatgpt-%E6%8F%92%E4%BB%B6)
- [ElvisChenML/Waifu](https://github.com/ElvisChenML/Waifu) - 一个LangBot的插件,旨在利用程式逻辑搭配LLM创建真实感聊天机器人,探索真实的聊天体验。
- [WebwlkrPlugin](https://github.com/RockChinQ/WebwlkrPlugin) - 让机器人能联网!!
- [https://github.com/the-lazy-me/NewChatVoice](https://github.com/the-lazy-me/miHoYoVoice) - LangBot语音插件,可利用多个TTS平台实现语音聊天
- [Yuumi0221/URLMaskerPlugin](https://github.com/Yuumi0221/URLMaskerPlugin) - 用于掩码(替换)URL,以应对QQ官方机器人API对消息中URL的限制
- [ElvisChenML/Waifu](https://github.com/ElvisChenML/Waifu) - 一个LangBot的插件,旨在利用程式逻辑搭配LLM创建真实感聊天机器人,探索真实的聊天体验。
- [Pevernow/LangBot_Plugin_Emoticon_v3](https://github.com/Pevernow/QChatGPT_Plugin_Emoticon_v3) - LangBot v3可用,基于在线api的表情包插件。
- [https://github.com/kirifujinagisa/RussianRoulette](https://github.com/kirifujinagisa/RussianRoulette) - 一个 LangBot 俄罗斯轮盘赌的游戏插件
- [https://github.com/kirifujinagisa/FileSender](https://github.com/kirifujinagisa/FileSender) - 基于 LangBot 的将本机指定文件发送给申请人的插件
+2 -2
View File
@@ -11,7 +11,7 @@
## 热重载
目前支持热重载 消息平台 和 插件,点击侧栏下方的系统信息中的对应按钮即可。
在修改了 `消息平台适配器配置` 之后需要手动热重载,插件更改则会自动热重载。
目前支持热重载 消息平台、插件和 LLM 管理器,点击侧栏下方的系统信息中的对应按钮即可。
在修改了 `消息平台适配器配置`或`provider.json 内的配置` 之后需要手动热重载`消息平台`或`LLM 管理器`,插件更改则会自动热重载。
![热重载](/assets/image/webui_system_04.png)
+9 -2
View File
@@ -1,9 +1,9 @@
# 在 LangBot 上使用 Dify
[Dify](https://dify.ai) 是一款开源的大语言模型(LLM) 应用开发平台。它融合了后端即服务(Backend as Service)和 LLMOps 的理念,使开发者可以快速搭建生产级的生成式 AI 应用。
Dify 可以创建聊天助手(含高级编排)、Agent、文本生成应用、工作流等应用。
Dify 可以创建聊天助手(含Chatflow)、Agent、文本生成应用、工作流等应用。
LangBot 目前支持`聊天助手`、`Agent`、`工作流`三种 Dify 应用类型。
LangBot 目前支持`聊天助手`(含Chatflow)、`Agent`、`工作流`三种 Dify 应用类型。
## 在 Dify 上创建应用
@@ -15,6 +15,13 @@ LangBot 目前支持`聊天助手`、`Agent`、`工作流`三种 Dify 应用类
保存 API 服务器和 API 密钥,在 LangBot 的 `provider.json` 文件中配置。
:::info
以上为 Dify 云服务版本的示例,若您使用本地自部署的社区版本,请使用 LangBot 访问你自己 Dify 服务的地址作为 `base-url`,后方需要添加 `/v1` 作为路径。
- 若 LangBot 与 Dify 部署在同一台主机,并且都是使用 Docker 部署的,可以参考文章:[网络配置详解](/deploy/network-details.html#langbot-%E5%92%8C%E6%B6%88%E6%81%AF%E5%B9%B3%E5%8F%B0%E5%9D%87%E8%BF%90%E8%A1%8C%E5%9C%A8-docker-%E5%AE%B9%E5%99%A8%E4%B8%AD)。其中,请将启动 Dify 的 docker-compose.yaml 中所有容器的`networks`均添加`langbot-network`,并为`nginx`容器添加容器名`dify-nginx`,最后在 LangBot 配置中将`base-url`设置为`http://dify-nginx/v1`。
- 其他情况请咨询贵司运维人员。
:::
## 配置 LangBot
参考 [Dify Service API 配置](../config/function/provider#dify-service-api-%E9%85%8D%E7%BD%AE-dify-service-api) 文档,配置 LangBot 的 `provider.json` 文件。

Some files were not shown because too many files have changed in this diff Show More