diff --git a/README.md b/README.md
index 7d59050a9..985a2403c 100644
--- a/README.md
+++ b/README.md
@@ -35,7 +35,7 @@ npm run docs:dev
### 部署细节
-现在使用 Cloudflare Pages 托管,提交后 @RockChinQ 更新分支进行自动部署。
+现在使用 Cloudflare Pages 托管,提交后 [@RockChinQ](https://github.com/RockChinQ) 更新分支进行自动部署。
### 一些规范化标准
diff --git a/docs/.vitepress/config.mts b/docs/.vitepress/config.mts
index 5a1d24559..7924a515f 100644
--- a/docs/.vitepress/config.mts
+++ b/docs/.vitepress/config.mts
@@ -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",
diff --git a/docs/assets/image/config_provider_02.png b/docs/assets/image/config_provider_02.png
index da0d52c9d..6100d6242 100644
Binary files a/docs/assets/image/config_provider_02.png and b/docs/assets/image/config_provider_02.png differ
diff --git a/docs/assets/image/dashScope_ref_quote.png b/docs/assets/image/dashScope_ref_quote.png
new file mode 100644
index 000000000..64bf45bf1
Binary files /dev/null and b/docs/assets/image/dashScope_ref_quote.png differ
diff --git a/docs/assets/image/dashscope_application.png b/docs/assets/image/dashscope_application.png
new file mode 100644
index 000000000..8ffe82e06
Binary files /dev/null and b/docs/assets/image/dashscope_application.png differ
diff --git a/docs/assets/image/dashscope_bitz.png b/docs/assets/image/dashscope_bitz.png
new file mode 100644
index 000000000..98e525538
Binary files /dev/null and b/docs/assets/image/dashscope_bitz.png differ
diff --git a/docs/assets/image/ding1.png b/docs/assets/image/ding1.png
new file mode 100644
index 000000000..097212104
Binary files /dev/null and b/docs/assets/image/ding1.png differ
diff --git a/docs/assets/image/ding2.png b/docs/assets/image/ding2.png
new file mode 100644
index 000000000..ceb9c847a
Binary files /dev/null and b/docs/assets/image/ding2.png differ
diff --git a/docs/assets/image/ding3.png b/docs/assets/image/ding3.png
new file mode 100644
index 000000000..b386d2be1
Binary files /dev/null and b/docs/assets/image/ding3.png differ
diff --git a/docs/assets/image/ding4.png b/docs/assets/image/ding4.png
new file mode 100644
index 000000000..7df37c190
Binary files /dev/null and b/docs/assets/image/ding4.png differ
diff --git a/docs/assets/image/ding5.png b/docs/assets/image/ding5.png
new file mode 100644
index 000000000..eedea8025
Binary files /dev/null and b/docs/assets/image/ding5.png differ
diff --git a/docs/assets/image/discord_01.png b/docs/assets/image/discord_01.png
new file mode 100644
index 000000000..5399b8f0d
Binary files /dev/null and b/docs/assets/image/discord_01.png differ
diff --git a/docs/assets/image/discord_02.png b/docs/assets/image/discord_02.png
new file mode 100644
index 000000000..50902eee6
Binary files /dev/null and b/docs/assets/image/discord_02.png differ
diff --git a/docs/assets/image/discord_03.png b/docs/assets/image/discord_03.png
new file mode 100644
index 000000000..32fab084b
Binary files /dev/null and b/docs/assets/image/discord_03.png differ
diff --git a/docs/assets/image/discord_04.png b/docs/assets/image/discord_04.png
new file mode 100644
index 000000000..b999801c0
Binary files /dev/null and b/docs/assets/image/discord_04.png differ
diff --git a/docs/assets/image/discord_05.png b/docs/assets/image/discord_05.png
new file mode 100644
index 000000000..6c94fbf25
Binary files /dev/null and b/docs/assets/image/discord_05.png differ
diff --git a/docs/assets/image/discord_06.png b/docs/assets/image/discord_06.png
new file mode 100644
index 000000000..175277e3d
Binary files /dev/null and b/docs/assets/image/discord_06.png differ
diff --git a/docs/assets/image/discord_07.png b/docs/assets/image/discord_07.png
new file mode 100644
index 000000000..39401ce4c
Binary files /dev/null and b/docs/assets/image/discord_07.png differ
diff --git a/docs/assets/image/discord_08.png b/docs/assets/image/discord_08.png
new file mode 100644
index 000000000..876b4282e
Binary files /dev/null and b/docs/assets/image/discord_08.png differ
diff --git a/docs/assets/image/discord_09.png b/docs/assets/image/discord_09.png
new file mode 100644
index 000000000..f767cd87f
Binary files /dev/null and b/docs/assets/image/discord_09.png differ
diff --git a/docs/assets/image/gewechat_01.png b/docs/assets/image/gewechat_01.png
new file mode 100644
index 000000000..7e42d5f22
Binary files /dev/null and b/docs/assets/image/gewechat_01.png differ
diff --git a/docs/assets/image/gewechat_02.png b/docs/assets/image/gewechat_02.png
new file mode 100644
index 000000000..6b8b9ca74
Binary files /dev/null and b/docs/assets/image/gewechat_02.png differ
diff --git a/docs/assets/image/lark_01.png b/docs/assets/image/lark_01.png
new file mode 100644
index 000000000..94359fabd
Binary files /dev/null and b/docs/assets/image/lark_01.png differ
diff --git a/docs/assets/image/lark_02.png b/docs/assets/image/lark_02.png
new file mode 100644
index 000000000..b26b64c19
Binary files /dev/null and b/docs/assets/image/lark_02.png differ
diff --git a/docs/assets/image/lark_03.png b/docs/assets/image/lark_03.png
new file mode 100644
index 000000000..564de83a9
Binary files /dev/null and b/docs/assets/image/lark_03.png differ
diff --git a/docs/assets/image/lark_04.png b/docs/assets/image/lark_04.png
new file mode 100644
index 000000000..de741dca7
Binary files /dev/null and b/docs/assets/image/lark_04.png differ
diff --git a/docs/assets/image/lark_05.png b/docs/assets/image/lark_05.png
new file mode 100644
index 000000000..259c186d9
Binary files /dev/null and b/docs/assets/image/lark_05.png differ
diff --git a/docs/assets/image/lark_06.png b/docs/assets/image/lark_06.png
new file mode 100644
index 000000000..204e594d6
Binary files /dev/null and b/docs/assets/image/lark_06.png differ
diff --git a/docs/assets/image/lark_07.png b/docs/assets/image/lark_07.png
new file mode 100644
index 000000000..01b708458
Binary files /dev/null and b/docs/assets/image/lark_07.png differ
diff --git a/docs/assets/image/lark_08.png b/docs/assets/image/lark_08.png
new file mode 100644
index 000000000..e9018b743
Binary files /dev/null and b/docs/assets/image/lark_08.png differ
diff --git a/docs/assets/image/lark_09.png b/docs/assets/image/lark_09.png
new file mode 100644
index 000000000..a04f16ec1
Binary files /dev/null and b/docs/assets/image/lark_09.png differ
diff --git a/docs/assets/image/lark_10.png b/docs/assets/image/lark_10.png
new file mode 100644
index 000000000..40516a416
Binary files /dev/null and b/docs/assets/image/lark_10.png differ
diff --git a/docs/assets/image/lark_11.png b/docs/assets/image/lark_11.png
new file mode 100644
index 000000000..888fc685f
Binary files /dev/null and b/docs/assets/image/lark_11.png differ
diff --git a/docs/assets/image/lark_12.png b/docs/assets/image/lark_12.png
new file mode 100644
index 000000000..92b22c1ca
Binary files /dev/null and b/docs/assets/image/lark_12.png differ
diff --git a/docs/assets/image/lark_13.png b/docs/assets/image/lark_13.png
new file mode 100644
index 000000000..77ac8af0f
Binary files /dev/null and b/docs/assets/image/lark_13.png differ
diff --git a/docs/assets/image/oa1.png b/docs/assets/image/oa1.png
new file mode 100644
index 000000000..a9a8240bd
Binary files /dev/null and b/docs/assets/image/oa1.png differ
diff --git a/docs/assets/image/oa2.png b/docs/assets/image/oa2.png
new file mode 100644
index 000000000..309869a9e
Binary files /dev/null and b/docs/assets/image/oa2.png differ
diff --git a/docs/assets/image/plugin_dev_tutor_01.png b/docs/assets/image/plugin_dev_tutor_01.png
new file mode 100644
index 000000000..865c5f4a7
Binary files /dev/null and b/docs/assets/image/plugin_dev_tutor_01.png differ
diff --git a/docs/assets/image/ppio_llm-models.png b/docs/assets/image/ppio_llm-models.png
new file mode 100644
index 000000000..27157b584
Binary files /dev/null and b/docs/assets/image/ppio_llm-models.png differ
diff --git a/docs/assets/image/ppio_provider.png b/docs/assets/image/ppio_provider.png
new file mode 100644
index 000000000..93e588536
Binary files /dev/null and b/docs/assets/image/ppio_provider.png differ
diff --git a/docs/assets/image/ppio_provider2.png b/docs/assets/image/ppio_provider2.png
new file mode 100644
index 000000000..6409f0c65
Binary files /dev/null and b/docs/assets/image/ppio_provider2.png differ
diff --git a/docs/assets/image/qqofficial1.png b/docs/assets/image/qqofficial1.png
new file mode 100644
index 000000000..249ff798d
Binary files /dev/null and b/docs/assets/image/qqofficial1.png differ
diff --git a/docs/assets/image/qqofficial2.png b/docs/assets/image/qqofficial2.png
new file mode 100644
index 000000000..aa98bee60
Binary files /dev/null and b/docs/assets/image/qqofficial2.png differ
diff --git a/docs/assets/image/slack_01.jpg b/docs/assets/image/slack_01.jpg
new file mode 100644
index 000000000..61b656a49
Binary files /dev/null and b/docs/assets/image/slack_01.jpg differ
diff --git a/docs/assets/image/slack_02.jpg b/docs/assets/image/slack_02.jpg
new file mode 100644
index 000000000..5f9919617
Binary files /dev/null and b/docs/assets/image/slack_02.jpg differ
diff --git a/docs/assets/image/slack_03.jpg b/docs/assets/image/slack_03.jpg
new file mode 100644
index 000000000..ffa32d1f3
Binary files /dev/null and b/docs/assets/image/slack_03.jpg differ
diff --git a/docs/assets/image/slack_04.jpg b/docs/assets/image/slack_04.jpg
new file mode 100644
index 000000000..4cdab3cef
Binary files /dev/null and b/docs/assets/image/slack_04.jpg differ
diff --git a/docs/assets/image/slack_05.jpg b/docs/assets/image/slack_05.jpg
new file mode 100644
index 000000000..2afd3a645
Binary files /dev/null and b/docs/assets/image/slack_05.jpg differ
diff --git a/docs/assets/image/telegram_01.png b/docs/assets/image/telegram_01.png
new file mode 100644
index 000000000..f41d5f353
Binary files /dev/null and b/docs/assets/image/telegram_01.png differ
diff --git a/docs/assets/image/telegram_02.png b/docs/assets/image/telegram_02.png
new file mode 100644
index 000000000..796a0127c
Binary files /dev/null and b/docs/assets/image/telegram_02.png differ
diff --git a/docs/assets/image/telegram_03.png b/docs/assets/image/telegram_03.png
new file mode 100644
index 000000000..04c9050cd
Binary files /dev/null and b/docs/assets/image/telegram_03.png differ
diff --git a/docs/assets/image/telegram_04.png b/docs/assets/image/telegram_04.png
new file mode 100644
index 000000000..fbde9d791
Binary files /dev/null and b/docs/assets/image/telegram_04.png differ
diff --git a/docs/assets/image/telegram_05.png b/docs/assets/image/telegram_05.png
new file mode 100644
index 000000000..ebaa1df40
Binary files /dev/null and b/docs/assets/image/telegram_05.png differ
diff --git a/docs/assets/image/wecom1.png b/docs/assets/image/wecom1.png
new file mode 100644
index 000000000..da1b1b256
Binary files /dev/null and b/docs/assets/image/wecom1.png differ
diff --git a/docs/assets/image/wecom2.png b/docs/assets/image/wecom2.png
new file mode 100644
index 000000000..c281856d0
Binary files /dev/null and b/docs/assets/image/wecom2.png differ
diff --git a/docs/assets/image/wecom3.jpg b/docs/assets/image/wecom3.jpg
new file mode 100644
index 000000000..e2a16508e
Binary files /dev/null and b/docs/assets/image/wecom3.jpg differ
diff --git a/docs/assets/image/wecom4.png b/docs/assets/image/wecom4.png
new file mode 100644
index 000000000..537703d40
Binary files /dev/null and b/docs/assets/image/wecom4.png differ
diff --git a/docs/assets/image/wecom5.png b/docs/assets/image/wecom5.png
new file mode 100644
index 000000000..d1a79c862
Binary files /dev/null and b/docs/assets/image/wecom5.png differ
diff --git a/docs/assets/image/wecomcs_01.jpg b/docs/assets/image/wecomcs_01.jpg
new file mode 100644
index 000000000..092585909
Binary files /dev/null and b/docs/assets/image/wecomcs_01.jpg differ
diff --git a/docs/zh/config/function/platform.md b/docs/zh/config/function/platform.md
index f4392f150..0bf058a42 100644
--- a/docs/zh/config/function/platform.md
+++ b/docs/zh/config/function/platform.md
@@ -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接口出现异常时,会返回一个错误的提示给用户。而把报错详情输出在控制台。
\ No newline at end of file
+ 是否向用户隐藏AI的异常信息,如果为true,当请求AI接口出现异常时,会返回一个错误的提示给用户。而把报错详情输出在控制台。
diff --git a/docs/zh/config/function/provider.md b/docs/zh/config/function/provider.md
index 871ddac9b..b901ca5d0 100644
--- a/docs/zh/config/function/provider.md
+++ b/docs/zh/config/function/provider.md
@@ -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 官方的\...\格式;值为 remove 时,删除思考提示
+- `chat`:Dify 聊天助手(或 chatflow)应用的配置
- `api-key`:Dify 聊天助手应用的 API 密钥
- `timeout`:Dify 聊天助手应用的请求超时时间,以秒为单位,默认是 120 秒。
- `agent`:Dify Agent 应用的配置
@@ -222,13 +263,120 @@

+### 请求变量
+
当使用工作流时,LangBot 会显式传入以下参数,您可以自行在 Dify 工作流的开始节点中添加:
-- `langbot_user_message_text`:用户消息的纯文本
-- `langbot_session_id`:用户会话id,私聊为 `person_`,群聊为 `group_`
-- `langbot_conversation_id`:用户会话id,由 LangBot 生成。用户重置会话后,会重新生成
+- `user_message_text`:用户消息的纯文本
+- `session_id`:用户会话id,私聊为 `person_`,群聊为 `group_`
+- `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)。

使用 工作流 应用或 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` - 智能体编排应用(左-橙色)
+
+
+
+- `api-key`:阿里云百炼平台的 API 密钥
+- `agent`:智能体应用的配置
+ - `app-id`: "上图中的应用ID",
+ - `references_quote`:引用来源的提示语,默认为`参考资料来自:` 如果你在智能体应用中添加了展示回答来源这个配置将会起作用
+- `workflow`:智能体编排应用的配置
+ - `app-id`: "上图中的应用ID",
+ - `references_quote`:引用来源的提示语,默认为`参考资料来自:` 如果你在智能体应用中添加了展示回答来源这个配置将会起作用
+ - `biz_params`:业务参数,用于传入到智能体编排应用中,city和date对应下方第二章图中的`变量名`,二者的值是要传入的可在其中调用的参数。
+ - 与上述 Dify 相同,LangBot 也会传入`请求变量`到百炼应用。
+
+`references_quote`解释图片
+
+
+
+`biz_params`解释图片
+
+
+
+## [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` 指定执行文件路径。
+
+:::
+
+
diff --git a/docs/zh/deploy/langbot/docker.md b/docs/zh/deploy/langbot/docker.md
index 38e1f0ecc..21e1aa4a5 100644
--- a/docs/zh/deploy/langbot/docker.md
+++ b/docs/zh/deploy/langbot/docker.md
@@ -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)。
## 注意
diff --git a/docs/zh/deploy/langbot/manual.md b/docs/zh/deploy/langbot/manual.md
index 748727c08..87373d299 100644
--- a/docs/zh/deploy/langbot/manual.md
+++ b/docs/zh/deploy/langbot/manual.md
@@ -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
diff --git a/docs/zh/deploy/langbot/one-click/bt.md b/docs/zh/deploy/langbot/one-click/bt.md
index c381d7aaa..4a86a157f 100644
--- a/docs/zh/deploy/langbot/one-click/bt.md
+++ b/docs/zh/deploy/langbot/one-click/bt.md
@@ -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)页。
diff --git a/docs/zh/deploy/network-details.md b/docs/zh/deploy/network-details.md
index 0899375b2..35779c138 100644
--- a/docs/zh/deploy/network-details.md
+++ b/docs/zh/deploy/network-details.md
@@ -1,5 +1,10 @@
# 网络配置详解
+::: info
+某些消息平台(如 QQ 个人号)需要使用独立的协议端来处理消息,如果您使用的是此类消息平台,请参考以下网络配置。
+同时,若您的 LangBot 实例需要连接其他在容器中运行的服务(如 Ollama),也可以参考以下配置,自行替换`消息平台`为`您要连接的服务`。
+:::
+
LangBot 和部分消息平台均可采用 Docker 部署,以下是四种情况下的网络配置详解。
:::info 目录
diff --git a/docs/zh/deploy/platforms/aiocqhttp/llonebot.md b/docs/zh/deploy/platforms/aiocqhttp/llonebot.md
index 7adc99ab0..e3cc5a31c 100644
--- a/docs/zh/deploy/platforms/aiocqhttp/llonebot.md
+++ b/docs/zh/deploy/platforms/aiocqhttp/llonebot.md
@@ -1,5 +1,7 @@
# 部署消息平台 LiteLoaderQQNT
+通过 OneBot 11 协议接入,需选择使用`aiocqhttp`作为适配器。
+
# LiteLoaderQQNT
- [LiteLoaderQQNT 的 OneBot API 插件](https://github.com/LLOneBot/LLOneBot) 注入 QQ 客户端并将其转换为 OneBot 11 协议
@@ -8,6 +10,6 @@

-确保地址中 IP地址 是 LangBot 运行的主机的地址(若在同一网络内运行则为 127.0.0.1),端口必须与 LangBot 消息平台配置中的 aiocqhttp 适配器监听的端口相同,后缀必须为`/ws`:
+确保地址中 IP地址 是 LangBot 运行的主机的地址(若在同一网络内运行则为 127.0.0.1),端口必须与 LangBot 消息平台配置中的 `aiocqhttp 适配器`监听的端口相同,后缀必须为`/ws`:
接下来请阅读[填写配置信息](/deploy/quick-config/config)。
diff --git a/docs/zh/deploy/platforms/aiocqhttp/napcat.md b/docs/zh/deploy/platforms/aiocqhttp/napcat.md
index ca41d2666..76d5c913c 100644
--- a/docs/zh/deploy/platforms/aiocqhttp/napcat.md
+++ b/docs/zh/deploy/platforms/aiocqhttp/napcat.md
@@ -1,5 +1,7 @@
# 部署消息平台 NapCat
+通过 OneBot 11 协议接入,需选择使用`aiocqhttp`作为适配器。
+
## NapCat安装教程
按照 [NapCat 官方文档安装](https://napcat.napneko.icu/guide/start-install)
diff --git a/docs/zh/deploy/platforms/dingtalk.md b/docs/zh/deploy/platforms/dingtalk.md
new file mode 100644
index 000000000..1bfedf8a4
--- /dev/null
+++ b/docs/zh/deploy/platforms/dingtalk.md
@@ -0,0 +1,46 @@
+# 部署钉钉机器人
+
+部署 LangBot 到钉钉。
+
+## 创建机器人
+
+进入 [钉钉开发者后台](https://open-dev.dingtalk.com/?spm=ding_open_doc.document.0.0.74f445e5MkawbT#/),登录并且进入组织。登录成功后进入开放平台,是这样的:
+
+
+点击上方的 `应用开发`,然后点击右面蓝色的按钮 `创建应用`,填写机器人的基本信息,点击保存。
+
+进入机器人的后台,比如我们有机器人 langbot2 ,那么它的管理页面是这样的:
+
+
+## 配置机器人
+
+
+点击 `添加应用能力`,`其他应用能力`,`机器人`中的 `配置`,点击配置并且填写信息之后,如下图:
+
+
+点击页面下方的`发布`,发布成功之后,点击机器人页面中左侧最下方的`版本管理与发布`,如图:
+
+
+如果是第一次创建机器人,那么右边是空的,需要点击`创建新版本`,在其中设置信息,然后设置`应用可见范围`,点击保存。
+
+点击`事件订阅`,将其中的推送方式改为`Stream模式推送`。
+
+## 填写配置信息
+
+点击`凭证与基础信息`,记录`Client ID` 和 `Client Secret`,
+点击`应用能力`,`机器人`,记录下 RobotCode 和 机器人名称。
+`markdown_card` 为是否启用 Markdown 形式的回复。
+将以上配置项填写入[钉钉机器人配置项](/deploy/quick-config/config.md#钉钉适配器),并且将 `enable` 设置为 `true` 。
+**启动 LangBot** 。
+
+## 添加机器人
+
+本文使用钉钉 windows 桌面版举例,点击上方的`搜索`,`功能`,然后输入刚才机器人创建的名称,如图:
+
+
+点击机器人即可和机器人聊天。
+
+如果想要添加到群里,那么点击钉钉群的`群管理`,`机器人`,`添加机器人`,然后搜索机器人名称就可以在群中使用。
+
+
+
diff --git a/docs/zh/deploy/platforms/discord.md b/docs/zh/deploy/platforms/discord.md
new file mode 100644
index 000000000..aee1183b8
--- /dev/null
+++ b/docs/zh/deploy/platforms/discord.md
@@ -0,0 +1,54 @@
+# 接入 Discord 机器人
+
+## 创建机器人
+
+前往[Discord 开发者门户](https://discord.com/developers/applications),登录后,创建应用。
+
+
+
+修改基础信息,点击`Save Changes`保存。
+
+
+
+点击左侧`Bot`,点击`Reset Token`,复制生成的 Token。
+
+
+
+并在此页面的`Privileged Gateway Intents`中勾选所有选项,点击`Save Changes`保存。
+
+
+
+**最后,点击左侧`OAuth2`,复制页面上的`Client ID`。**
+
+## 在 LangBot 中填写信息并启动
+
+根据[填写配置信息](/deploy/quick-config/config)中的 Discord 适配器配置,填写相关信息。
+将上一步获取的`Client ID`和`Token`填写到配置中。
+
+
+
+:::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`,按照图中所示勾选权限。
+
+
+
+
+
+点击`Copy`,将生成的 URL 粘贴到浏览器中打开,邀请机器人到你的服务器。
+
+
+
+## 使用机器人
+
+现在在群里或者私聊机器人都可以正常使用了。
+
+
\ No newline at end of file
diff --git a/docs/zh/deploy/platforms/lark.md b/docs/zh/deploy/platforms/lark.md
new file mode 100644
index 000000000..96d58e4a3
--- /dev/null
+++ b/docs/zh/deploy/platforms/lark.md
@@ -0,0 +1,83 @@
+# 接入飞书机器人
+
+## 创建机器人
+
+前往[飞书开放平台](https://open.feishu.cn/app),登录后,创建企业自建应用。
+
+
+
+
+
+为应用添加机器人能力:
+
+
+在权限管理中添加图中所示权限:
+
+
+
+## 在 LangBot 中填写信息并启动
+
+根据[填写配置信息](/deploy/quick-config/config)中的飞书适配器配置,填写相关信息。可以在`凭证与基础信息`页找到`app_id`和`app_secret`。
+
+
+
+```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 的服务器上,并确保防火墙已开放上方配置的端口。
+:::
+
+## 配置事件订阅
+
+前往`事件与回调`页,配置订阅方式为`长连接`:
+
+
+
+并添加事件:`接收消息`
+
+
+
+:::warning
+Webhook 模式配置方式:
+
+
+
+请先启动 LangBot,在此处填写你的服务器地址和端口,路径为`/lark/callback`,点击`保存`。
+
+:::
+
+## 发布机器人
+
+点击顶部`创建版本`,填写版本号等信息,点击下方`保存`。
+
+
+
+在飞书群中添加机器人,即可使用:
+
+
+
+
+
+私聊也可以直接使用
+
+
\ No newline at end of file
diff --git a/docs/zh/deploy/platforms/official.md b/docs/zh/deploy/platforms/official.md
index 6dce3191a..886a7af34 100644
--- a/docs/zh/deploy/platforms/official.md
+++ b/docs/zh/deploy/platforms/official.md
@@ -1,4 +1,8 @@
-# 使用 QQ 官方机器人 API
+# 使用 QQ 官方机器人 API(使用websocket方式)
+
+:::warning
+QQ 官方已停止维护 WebSocket 方式,请使用 Webhook 方式。
+:::
QQ官方机器人所有人均可申请,可以在频道和群聊中使用,私聊也可。
diff --git a/docs/zh/deploy/platforms/qq/aiocqhttp/lagrange.md b/docs/zh/deploy/platforms/qq/aiocqhttp/lagrange.md
new file mode 100644
index 000000000..5c781ce7d
--- /dev/null
+++ b/docs/zh/deploy/platforms/qq/aiocqhttp/lagrange.md
@@ -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)
+
+看图进行下载:
+
+
+
+
+
+
+
+### 尾声
+
+解压你所下载的zip,打开到有Lagrange.OneBot.exe的目录,在此目录下打开cmd命令提示符,输入
+
+```bash
+.\Lagrange.OneBot
+```
+
+运行一次,如果输出了一个二维码,即可直接用机器人号扫码登录(若二维码显示不清楚,可以到lagrange的data目录下寻找图片文件)。
+
+若无法登录,请检查是否正常填写了lagrange配置文件appsettings.json中的签名地址 SignServerUrl ,签名地址请到lagrange文档中寻找。
+
+## 修改配置
+
+需要配置 Lagrange 以让其连接上 LangBot,请编辑 Lagrange 的配置文件 appsettings.json,确保 Implementations 中的连接配置符合下图内容:
+
+
+
+其中 Type 必须为 `ReverseWebSocket`;
+Host 为 LangBot 运行的主机 IP,若在同一主机上,可以写 `127.0.0.1`;
+Suffix 必须为 `/ws`;
+Port 必须与 LangBot 消息平台配置中的 aiocqhttp 适配器监听的端口相同。
+
+接下来请阅读[填写配置信息](/deploy/quick-config/config)。
diff --git a/docs/zh/deploy/platforms/qq/aiocqhttp/llonebot.md b/docs/zh/deploy/platforms/qq/aiocqhttp/llonebot.md
new file mode 100644
index 000000000..e3cc5a31c
--- /dev/null
+++ b/docs/zh/deploy/platforms/qq/aiocqhttp/llonebot.md
@@ -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
+
+
+
+确保地址中 IP地址 是 LangBot 运行的主机的地址(若在同一网络内运行则为 127.0.0.1),端口必须与 LangBot 消息平台配置中的 `aiocqhttp 适配器`监听的端口相同,后缀必须为`/ws`:
+
+接下来请阅读[填写配置信息](/deploy/quick-config/config)。
diff --git a/docs/zh/deploy/platforms/qq/aiocqhttp/napcat.md b/docs/zh/deploy/platforms/qq/aiocqhttp/napcat.md
new file mode 100644
index 000000000..76d5c913c
--- /dev/null
+++ b/docs/zh/deploy/platforms/qq/aiocqhttp/napcat.md
@@ -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 `
+
+
+复制Url到浏览器或者 Windows11 按照Ctrl点击Url即可 扫码登录后即可进入网络配置一页
+
+点击添加网络配置 WebSocket客户端 点击启用 然后在Url一栏填入 `ws://127.0.0.1:2280/ws` 并保存即可
+
+
+
+::: 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)。
diff --git a/docs/zh/deploy/platforms/qq/aiocqhttp/shamrock.md b/docs/zh/deploy/platforms/qq/aiocqhttp/shamrock.md
new file mode 100644
index 000000000..313a46a2d
--- /dev/null
+++ b/docs/zh/deploy/platforms/qq/aiocqhttp/shamrock.md
@@ -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权限
+
+
+
+
+
+### 安装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 适配器监听的地址和端口(详见填写配置信息页)。
+
+
+
+
+
+填写的被动 Websocket 地址为 LangBot 的 aiocqhttp 适配器监听的地址和端口,且路径必须为 `/ws`,例如 `ws://127.0.0.1:2280/ws`,详见填写配置信息页。
+
+2. 并前往 LSPosed 的模块管理页面 启用模块 Shamrock
+
+
+
+### 安装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 适配器接入。
+
+
+
+
+接下来请阅读[填写配置信息](/deploy/quick-config/config)。
diff --git a/docs/zh/deploy/platforms/qq/gocq.md b/docs/zh/deploy/platforms/qq/gocq.md
new file mode 100644
index 000000000..09eaf3cfb
--- /dev/null
+++ b/docs/zh/deploy/platforms/qq/gocq.md
@@ -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可执行文件(建议直接下载可执行文件压缩包,而不是安装器)
+
+
+
+## 运行并配置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
+
+## 登录
+
+双击登录脚本,一段时间后,可以看到提示
+
+
+
+把`Captcha link: `后边的链接复制下来,用Chrome或者Edge浏览器打开,按F12打开开发者工具
+
+点开 `Network`
+
+
+
+在浏览器中完成验证, 在 `Network` 中找到名为 `cap_union_new_verify` 的请求, 在最下面
+
+
+
+ticket 后那一坨就是要输入回 go-cqhttp 的内容,但不包括首尾的双引号
+
+**注意**
+
+- 复制的时候记得删掉引号(`"`, 前后都有一个), 那个不是ticket内容
+- 速度要快
+- 注意不要漏字符(没复制完, 后面还有很长)
+
+把复制下来的东西,粘贴到运行go-cq的终端中
+
+
+
+> 若启动后登录不成功,请尝试根据[此文档](https://docs.go-cqhttp.org/guide/config.html#%E8%AE%BE%E5%A4%87%E4%BF%A1%E6%81%AF)修改`device.json`的协议编号。
+
+
+## 后续步骤
+
+查看填写配置信息页,通过 Nakuru 适配器接入。
\ No newline at end of file
diff --git a/docs/zh/deploy/platforms/qq/mirai.md b/docs/zh/deploy/platforms/qq/mirai.md
new file mode 100644
index 000000000..8017c51fe
--- /dev/null
+++ b/docs/zh/deploy/platforms/qq/mirai.md
@@ -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文件夹`中
+
+
+
+
+双击打开,一路回车。然后,你可以看到多出来一些文件。
+
+
+
+继续点击`mcl.cmd`,看不到文件后缀的,参考这个文章来显示文件后缀名:[如何查看文件后缀](https://jingyan.baidu.com/article/9158e0004c6cbea2541228da.html)
+
+双击后会显示如下图所示的类似界面,当出现`Enter to continue`时,表明你需要按回车健
+
+
+
+当出现上面的一行绿字时,说明安装完成,到这里输入 exit,回车退出
+
+## 安装 mirai-api-http
+
+打开 `mcl.cmd`,输入`mcl --update-package net.mamoe:mirai-api-http --channel stable-v2 --type plugin` ,回车
+
+
+
+再次打开`mcl.cmd`,一路回车,直至退出。
+
+再打开 mcl.cmd,看到如以下界面,说明成功
+
+键盘按下`Ctrl+C`,退出。
+找到mira/config/net.mamoe.mirai-api-http/setting.yml文件,右键用记事本打开
+
+
+
+把内容全部删掉,换成
+
+```yml
+adapters:
+ - ws
+debug: true
+enableVerify: true
+verifyKey: yirimirai
+singleMode: false
+cacheSize: 4096
+adapterSettings:
+ ws:
+ host: localhost
+ port: 8080
+ reservedSyncId: -1
+```
+
+再打开 `mcl.cmd`,可以看到输出
+
+则 mirai-api-http 安装成功。
+
+## 配置签名服务
+
+在这个链接下载qsign一键签名包,点击下载最新的那个zip压缩包,如下图的`qsign-1.2.1-beta-dev-d62ddce-all.zip`【写于2023年12月19日】,[点我跳转下载页面](https://github.com/MrXiaoM/qsign/releases)
+
+
+
+下载完成后,解压得到如图文件
+
+
+
+将两个文件复制到mirai文件夹中
+
+
+
+打开`txlib`文件夹,发现有若干数字命名的文件夹,记录下最大的那个
+
+
+
+然后,双击运行`mcl.cmd`,稍等一会儿后,当提示`mirai-console started successfully`时,qsign就安装上了
+
+之后,打开`mirai/config/top.mrxiaom.qsign`下的`config.yml`文件,用记事本打开
+
+
+
+
+
+然后,按下`Ctrl+S`保存
+
+然后,再次双击运行`mcl.cmd`,可以看到类似提示,如图
+
+
+
+## 运行mirai
+
+到这里,你已经安装并配置成功了,接下来,你就可以登录机器人QQ了
+
+输入,其中 123456 是替换为你机器人的 QQ 号,67890 替换为你机器人 QQ 的密码
+
+```bash
+login 12345 67890
+```
+
+然后,可以看到提示
+
+
+
+把`Captcha link: `后边的链接复制下来,用Chrome或者Edge浏览器打开,按F12打开开发者工具
+
+点开 `Network`
+
+
+
+在浏览器中完成验证, 在 `Network` 中找到名为 `cap_union_new_verify` 的请求, 在最下面
+
+
+
+ticket 后那一坨就是要输入回 mirai 的内容,但不包括首尾的双引号
+
+**注意**
+
+- 复制的时候记得删掉引号(`"`, 前后都有一个), 那个不是ticket内容
+- 速度要快
+- 注意不要漏字符(没复制完, 后面还有很长)
+
+把复制下来的东西,粘贴到运行mirai的终端中
+
+
+
+然后回车,如果运气好的话,会提示你要收验证码,输入yes并回车,之后把验证码输入上去,然后回车即可成功登录了
+
+如果运气不好,报错code=237了,建议换号
+
+## 后续步骤
+
+查看填写配置信息页,通过 YiriMirai 适配器接入。
\ No newline at end of file
diff --git a/docs/zh/deploy/platforms/qq/official.md b/docs/zh/deploy/platforms/qq/official.md
new file mode 100644
index 000000000..886a7af34
--- /dev/null
+++ b/docs/zh/deploy/platforms/qq/official.md
@@ -0,0 +1,15 @@
+# 使用 QQ 官方机器人 API(使用websocket方式)
+
+:::warning
+QQ 官方已停止维护 WebSocket 方式,请使用 Webhook 方式。
+:::
+
+QQ官方机器人所有人均可申请,可以在频道和群聊中使用,私聊也可。
+
+## 注册 QQ 机器人
+
+前往[QQ开放平台](https://q.qq.com/#/),找到下方的 QQ 机器人文档,按照指引注册 QQ 频道机器人。
+
+## 获取凭证
+
+注册完成后,前往机器人控制台,找到 开发设置,获取 `AppId(机器人ID)` 和 `AppSecret(机器人密钥)`,接下来进入填写配置信息步骤。
\ No newline at end of file
diff --git a/docs/zh/deploy/platforms/qq/official_webhook.md b/docs/zh/deploy/platforms/qq/official_webhook.md
new file mode 100644
index 000000000..eb9578840
--- /dev/null
+++ b/docs/zh/deploy/platforms/qq/official_webhook.md
@@ -0,0 +1,110 @@
+# 使用 QQ 官方机器人 API(使用webhook方式)
+
+本文章只提供测试版机器人的发布,具体机器人上线请按照 [发布流程](https://q.qq.com/qqbot/#/home) 进行部署。
+
+## 注册 QQ 机器人(测试机器人)
+
+### 配置机器人基本信息
+
+前往 [QQ开放平台](https://q.qq.com/#/) ,找到下方的 `应用管理` ,点击创建机器人,填写基本信息之后,进入机器人页面,如图:
+
+
+
+`首页` 选项中的 `发布流程` 即为上线机器人的步骤。由于部署的是测试版机器人,所以只需要进行其中的 `资料` 和 `沙箱配置` 。
+
+先进行资料填写,然后点击沙箱配置。
+
+#### 配置沙箱配置项
+
+点击 `沙箱配置` 。
+如果要部署在QQ群中,那么按照 `QQ群ID` 下方的要求进行选择群聊,在消息列表配置中添加有私聊权限的用户。
+如果要部署在QQ频道中,那么按照 `频道ID` 下方的要求选择频道ID,机器人类型为0。
+
+#### 配置开发管理项
+
+点击 `开发管理` 。
+
+
+
+记录其中的 `AppID` , `Token` , `AppSecret` ,并将 LangBot 所在服务器的IP地址填写到IP白名单中。
+
+## 填写适配器
+
+将上文获取的 `AppID` , `Token` , `AppSecret` 填写入 [配置信息](/deploy/quick-config/config.md) 中的 qqofficial适配器(使用webhook方式)中,并且将 `enable` 设置为 `true` 。
+**配置项内容:**
+```json
+{
+ "adapter": "qqofficial",
+ "enable": true,
+ "appid": "",
+ "secret": "",
+ "port": 2284,
+ "token": ""
+},
+```
+
+
+## 配置回调地址
+
+由于QQ官方机器人必须要求回调地址是 https 请求,但 LangBot 仅提供 http 方式,所以需要自行配置反向代理。
+本文建议使用 [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 社区群请求帮助。
+
+以下是一些可能出现的问题:
+
+- 没有开启443端口
+- 没有将域名解析到本机
+- 没有成功保存 Caddyfile
+
+### 设置管理端回调地址
+
+
+首先 **启动 LangBot** 。
+
+点击 机器人管理端网页中的 `回调配置`,勾选下面 `添加事件` 中的所有事件。 在请求地址中填写 Caddyfile 中设置的域名,后缀为/callback/command。
+比如域名为 testlb.com,那么请求地址中填写 testlb.com/callback/command ,点击确定配置。如果回调地址保存成功,那么意味着部署成功。若出现 `校验失败` 字样,请认真检查上述配置项是否填写正确。
+
+## 发布方式
+
+进入 `首页` 的发布流程 ,按照流程进行机器人发布,上线。
diff --git a/docs/zh/deploy/platforms/readme.md b/docs/zh/deploy/platforms/readme.md
new file mode 100644
index 000000000..5dba87988
--- /dev/null
+++ b/docs/zh/deploy/platforms/readme.md
@@ -0,0 +1,18 @@
+# 消息平台说明
+
+LangBot 需要连接消息平台 API 才能与用户交互,目前支持以下消息平台:
+
+
+| 平台 | 状态 | 备注 |教程 |
+| ------ | ---- | ---- | ---- |
+| QQ 个人号 | ✅ | 使用普通的 QQ 号作为机器人,需要使用独立的协议端,支持 OneBot v11 和 go-cqhttp 协议 | [NapCat](/deploy/platforms/qq/aiocqhttp/napcat)
[Lagrange](/deploy/platforms/qq/aiocqhttp/lagrange)
[LiteLoaderQQNT](/deploy/platforms/qq/aiocqhttp/llonebot)
[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) |
\ No newline at end of file
diff --git a/docs/zh/deploy/platforms/slack.md b/docs/zh/deploy/platforms/slack.md
new file mode 100644
index 000000000..db01d0417
--- /dev/null
+++ b/docs/zh/deploy/platforms/slack.md
@@ -0,0 +1,55 @@
+# 接入 Slack 机器人
+
+## 创建机器人
+
+前往 [Slack的App平台](https://api.slack.com/apps)。
+
+
+
+点击右上角的 `Create New App` ,选择从 `from a manifest` , 选择要部署机器人的工作区,选择下一步,
+选择创建机器人。
+
+进入左侧 `Basic Information` 选项,记录 `signing_secret`。
+
+进入左侧 `OAuth & Permissions` ,往下拉到 `Scopes`,添加如下机器人权限:
+
+
+
+
+
+
+添加上述权限之后,点击 `Install to your workspace`,记录下开头为 `xoxb-xxxxx`的token。
+
+**注:**
+**若没有一次性添加成功权限,后续则需要重新安装App。**
+
+进入左侧 `App Home` 栏,滑到最下面有 `Message Tab`,打开并且勾选
+`Allow users to send Slash commands and messages from the messages tab`。
+
+## 连接 LangBot
+
+进入左侧 `Event Subscriptions` ,打开开关,点击 `Subscribe to bot events`,
+将如下权限添加进去:
+
+
+上述操作都完成之后,将 `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**,那么就说明部署成功。
+否则查看上述配置项是否填写正确。
+
+## 效果图
+
+
+
+
+
diff --git a/docs/zh/deploy/platforms/telegram.md b/docs/zh/deploy/platforms/telegram.md
new file mode 100644
index 000000000..e99b8ebb4
--- /dev/null
+++ b/docs/zh/deploy/platforms/telegram.md
@@ -0,0 +1,37 @@
+# 接入 Telegram 机器人
+
+## 创建机器人
+
+前往 [Telegram 机器人创建页面](https://t.me/botfather),按照提示操作,创建一个机器人。
+
+
+
+
+
+创建完成后,BotFather 会返回一个 API Token,请妥善保存。接下来关闭`Privacy Mode`,以便在群聊中使用。
+
+
+
+## 在 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 运行。
+
+## 使用机器人
+
+现在在群里或者私聊机器人都可以正常使用了。
+
+
+
+
\ No newline at end of file
diff --git a/docs/zh/deploy/platforms/wechat/gewechat.md b/docs/zh/deploy/platforms/wechat/gewechat.md
new file mode 100644
index 000000000..d07ef8737
--- /dev/null
+++ b/docs/zh/deploy/platforms/wechat/gewechat.md
@@ -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 启动后,会显示一个二维码,请使用个人微信扫描该二维码进行登录。
+
+
+
+成功登录后,会显示登录信息,并开始监听个人微信消息。
+
+
+
+:::info
+登录后会将`app_id`和`token`保存到配置文件中,下次启动时不需要再次扫码登录。
+:::
+
+现在即可私聊或在群聊中与 LangBot 对话。
\ No newline at end of file
diff --git a/docs/zh/deploy/platforms/wecom/wecom.md b/docs/zh/deploy/platforms/wecom/wecom.md
new file mode 100644
index 000000000..1a68d9f2d
--- /dev/null
+++ b/docs/zh/deploy/platforms/wecom/wecom.md
@@ -0,0 +1,71 @@
+# 部署企业微信机器人
+
+部署企业微信机器人接入 LangBot 。
+
+:::info
+此种接入方式为企业内部自建应用,是在企业内部使用的,若需要对外接待,请查看[企业微信客服接入方案](wecomcs.md)。
+:::
+
+
+## 创建机器人
+
+进入[企业微信管理后台](https://work.weixin.qq.com/),登陆账号,进入主页面后,点击` 应用管理 `,` 自建 `,` 创建应用 `,填写机器人基本信息,创建好之后,会出现类似这样的界面:
+
+
+## 设置回调地址
+
+### 获取企业微信配置项
+
+1. 打开企业微信管理后台主页,点击`我的企业`,记录下最下面的企业ID。
+
+
+
+2. 开启通讯录同步权限
+
+:::info
+- 此配置项是为了实现 LangBot 的群发消息,具体代码位于libs/wecom_api/api.py 。
+- 目前 LangBot 仍在开发,所以未实现此配置项的相关功能。
+- 此配置项可以填写入随机字符,**不能为空**。
+:::
+
+
+
+点击`安全与管理`,`管理工具`,`通讯录同步`
+
+
+
+点击`查看secret`,记录下来,这是 contacts_secret(通讯录同步 secret)。
+
+3. 点击`应用管理`,找到刚才创建的机器人,查看机器人的 secret ,记录下来。
+
+
+
+至此,已经获得了三个配置项,分别是 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**。
+回到配置回调地址页面并且点击保存,如果以上的配置项填写正确,那么可以保存成功,这意味着企业微信和 LangBot 可以进行通信(部署成功),如果出现**openapi 请求回调地址不通过**,请再三检查你的配置项填写是否正确。
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/zh/deploy/platforms/wecom/wecomcs.md b/docs/zh/deploy/platforms/wecom/wecomcs.md
new file mode 100644
index 000000000..f148263eb
--- /dev/null
+++ b/docs/zh/deploy/platforms/wecom/wecomcs.md
@@ -0,0 +1,38 @@
+# 部署企业微信客服
+
+:::info
+
+本文详细讲述 LangBot 部署到企业微信客服号的过程,此功能可以将客服号与普通微信进行对话。若只需要在企业微信内部使用,请参考[企业微信内部应用实现](wecom.md)。
+
+**部署企业微信客服号需要企业资质**,具体查看[企业微信客服号接入指南](https://developer.work.weixin.qq.com/document/path/94638),并且根据此文档提供对应的企业资质证明。
+
+:::
+
+## 效果图
+
+
+
+## 部署指南
+
+企业微信客服号需要四个配置项,如下:
+
+```json
+{
+ "adapter": "wecomcs",
+ "enable": true,
+ "port": 2289,
+ "corpid": "",
+ "secret": "",
+ "token": "",
+ "EncodingAESKey": ""
+}
+```
+
+后续的配置方式和配置项和[企业微信内部应用](wecom.md)一样,只是不需要 `contacts_secret`。
+
+## 注意事项
+
+1. 一定要按照上文的企业微信官方文档步骤走,将客服账号添加入 `api 管理`中。
+2. 步骤与企业微信内部应用一样,不要漏看,同样需要保存回调地址,因为本质上只是在企业微信内部应用上增加了其他的权限。
+3. LangBot 不会读取敏感信息如聊天记录和企业资质内容。
+
diff --git a/docs/zh/deploy/platforms/wxoa.md b/docs/zh/deploy/platforms/wxoa.md
new file mode 100644
index 000000000..f8c24f568
--- /dev/null
+++ b/docs/zh/deploy/platforms/wxoa.md
@@ -0,0 +1,52 @@
+# 部署微信公众号机器人
+
+部署微信公众号机器人接入 LangBot 。
+
+## LangBot 微信公众号接入模式
+
+目前,LangBot 提供两种方式接入微信公众号:
+
+1. **传统收发消息模式**
+ - 公众号要求请求必须在 **15 秒内** 处理完成,超时的 AI 生成内容将无法发送。
+ - 当 AI 生成内容超时发生后,LangBot 会在控制台打印请求超时信息。
+
+2. **“发送任意文字回复消息”模式**
+ - 该方法可突破 **15 秒** 限制,但 **过长的文本** 可能无法成功发送。
+ - 使用此方法时,给公众号发消息,公众号会回复“AI正在思考中,请发送任意内容获取回答”,此时,需要发送任意内容获取回答。
+
+如需更复杂的功能,请联系 **LangBot 团队** 进行定制化支持。
+
+## 创建机器人
+
+进入[微信公众平台](https://mp.weixin.qq.com/),如果已经有公众号账号,那么直接扫码登录,进入控制台。
+如果之前没有注册过公众号,那么点击立即注册,选择 `公众号`,依次填写信息,进入控制台。控制台是这样的:
+
+
+
+## 设置回调地址
+
+### 获取配置项
+
+点击`设置与开发`,`开发接口管理`,出现这样的页面:
+
+
+记录下来`开发者ID(AppID)`,`开发者密码(AppSecret)`,并将部署 LangBot 的服务器添加入`IP白名单`。
+
+### 设置反向代理
+
+由于微信公众号的只支持http(80端口),https(443端口),所以本文假设80端口已被占用,使用443端口反向代理至 LangBot 。
+具体的反向代理配置教程与[QQ官方机器人反向代理配置](/deploy/platforms/qq/official_webhook.md#操作caddy流程)相同,只是将`reverse_proxy 127.0.0.1:2284`改为`reverse_proxy 127.0.0.1:2287`。
+
+### 保存回调地址
+
+点击设置服务器配置,输入`Token`,`EncodingAESKey`,并将消息加解密方式改为`安全模式`。
+至此,将获取到的四个配置项( AppID , AppSecret , token , EncodingAESKey )填入[微信公众号配置项](/deploy/quick-config/config.md#微信公众号适配器)。
+
+在配置项中,`Mode`选项为选择的接入模式,其中默认为`drop`,`drop` 为传统收发消息模式,`passive` 为发送任意文字获取回复模式。
+`LoadingMessage`选项为加载信息,可以更改为其他内容,仅在模式为`passive`下有效。将 `enable` 设置为 `true` 。
+
+填写成功后,**启动 LangBot 。**
+
+将 URL 填写为`https://your_domain_name/callback/command`,其中的 `your_domain_name` 就是 Caddy 中填写的域名。点击保存。如果可以保存成功,那么意味着部署成功。如果出现**系统发生错误,请稍后重试**,那么请重新检查以上配置内容是否填写正确。
+
+
diff --git a/docs/zh/deploy/quick-config/config.md b/docs/zh/deploy/quick-config/config.md
index 9d884d16f..28c2de67a 100644
--- a/docs/zh/deploy/quick-config/config.md
+++ b/docs/zh/deploy/quick-config/config.md
@@ -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)找到交流群。
-:::
\ No newline at end of file
+:::
diff --git a/docs/zh/deploy/update.md b/docs/zh/deploy/update.md
index eb4a5b03e..991407f0c 100644
--- a/docs/zh/deploy/update.md
+++ b/docs/zh/deploy/update.md
@@ -2,7 +2,13 @@
## 使用 Docker(或基于 Docker 的一键部署)
-直接拉取最新的镜像即可。
+请在 `docker-compose.yaml` 目录下执行:
+
+```bash
+docker compose up --force-recreate --pull always -d
+```
+
+此命令将拉取最新的 LangBot 镜像并重建容器。
## 手动部署
diff --git a/docs/zh/develop/dev-config.md b/docs/zh/develop/dev-config.md
new file mode 100644
index 000000000..f09c9650c
--- /dev/null
+++ b/docs/zh/develop/dev-config.md
@@ -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` 文件中。
+
diff --git a/docs/zh/index.md b/docs/zh/index.md
index 12d7ea0ae..8c7b3173f 100644
--- a/docs/zh/index.md
+++ b/docs/zh/index.md
@@ -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: 长期维护、迭代,持续跟进大模型领域的最新应用实践
----
-
+
diff --git a/docs/zh/insight/community.md b/docs/zh/insight/community.md
index b84b31e22..ab32c6d7a 100644
--- a/docs/zh/insight/community.md
+++ b/docs/zh/insight/community.md
@@ -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))
\ No newline at end of file
+### 🧩 插件开发群
+
+插件开发、发布、交流
+
+- LangBot 插件开发:1032327138 ([链接](https://qm.qq.com/q/G7ENGTjeou))
diff --git a/docs/zh/insight/guide.md b/docs/zh/insight/guide.md
index 03e1b042c..9ea2ce36f 100644
--- a/docs/zh/insight/guide.md
+++ b/docs/zh/insight/guide.md
@@ -7,10 +7,14 @@
- 阅读 部署 LangBot 页,选择部署方式
- 阅读 部署消息平台页,选择要使用的消息平台
- 阅读 填写配置信息页,根据情况填写配置
+
## 使用板块
+
- 阅读命令语法了解机器人可用命令,可以在对话中实现切换预设、切换模型等
- 阅读插件列表,获得插件,增强功能
- 阅读常见问题,可有助于解决部署和使用时的问题
+
## 配置板块
+
- 功能配置,具体解释所有的配置信息,实现更多自定义需求
- 元数据配置,控制敏感词、模型列表等
diff --git a/docs/zh/insight/intro.md b/docs/zh/insight/intro.md
index adc2a330a..791f87d4f 100644
--- a/docs/zh/insight/intro.md
+++ b/docs/zh/insight/intro.md
@@ -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 @@
-
-## 限制
-
-- ❗OpenAI 官方关于模型生成内容的警告:
- - May occasionally generate incorrect information(可能会生成不正确的信息)
- - May occasionally produce harmful instructions or biased content(可能会产生有害说明或有偏见的内容)
- - Limited knowledge of world and events after 2021(对2021年后的世界和事件的了解有限)
-- ❗模型无思维能力,仅针对传入的上下文根据数据集生成内容,请勿过于信任其输出
-- ❗模型不了解其运行平台及其使用的模型版本,任何针对其实现原理的问题答案均视为无效,请以项目文档为准
-
-以上是关于此程序的限制的最高优先级描述,其他方式(如询问机器人相关信息)获得的描述均应被视为无效
-由于模型生成的内容导致的一切损失,本项目概不负责
-
## 使用方式
对话及绘图功能均直接调用OpenAI的模型进行处理,与机器人程序无关,这意味着模型并不了解此项目的相关信息(如实现方式、技术栈、运行平台等),除非在预设值中写入相关信息。
diff --git a/docs/zh/plugin/dev/api-ref.md b/docs/zh/plugin/dev/api-ref.md
index 70307af43..1577a7588 100644
--- a/docs/zh/plugin/dev/api-ref.md
+++ b/docs/zh/plugin/dev/api-ref.md
@@ -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())
+```
\ No newline at end of file
diff --git a/docs/zh/plugin/dev/extension.md b/docs/zh/plugin/dev/extension.md
index a6040cb43..a5ef49945 100644
--- a/docs/zh/plugin/dev/extension.md
+++ b/docs/zh/plugin/dev/extension.md
@@ -1,5 +1,9 @@
# 组件扩展
+::: warning
+2025年3月~4月:我们正在进行 4.0 版本重构,组件定义变化较大,现阶段不建议使用组件扩展。请优先考虑使用基于事件的插件接口。
+:::
+
> 请先阅读[插件介绍页](/plugin/plugin-intro)
:::info 目录
diff --git a/docs/zh/plugin/dev/messages.md b/docs/zh/plugin/dev/messages.md
index 35a590877..888b4fadd 100644
--- a/docs/zh/plugin/dev/messages.md
+++ b/docs/zh/plugin/dev/messages.md
@@ -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 |
\ No newline at end of file
diff --git a/docs/zh/plugin/dev/tutor.md b/docs/zh/plugin/dev/tutor.md
index e3a943fac..16a492adb 100644
--- a/docs/zh/plugin/dev/tutor.md
+++ b/docs/zh/plugin/dev/tutor.md
@@ -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 插件页的插件市场上可见。
+
+
+
+## 📄 名词解释
### 说明
@@ -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))
diff --git a/docs/zh/plugin/plugin-intro.md b/docs/zh/plugin/plugin-intro.md
index f5fa55234..165f159bd 100644
--- a/docs/zh/plugin/plugin-intro.md
+++ b/docs/zh/plugin/plugin-intro.md
@@ -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 的将本机指定文件发送给申请人的插件
diff --git a/docs/zh/webui/system.md b/docs/zh/webui/system.md
index 7a4e42e9d..729e4f02a 100644
--- a/docs/zh/webui/system.md
+++ b/docs/zh/webui/system.md
@@ -11,7 +11,7 @@
## 热重载
-目前支持热重载 消息平台 和 插件,点击侧栏下方的系统信息中的对应按钮即可。
-在修改了 `消息平台适配器配置` 之后需要手动热重载,插件更改则会自动热重载。
+目前支持热重载 消息平台、插件和 LLM 管理器,点击侧栏下方的系统信息中的对应按钮即可。
+在修改了 `消息平台适配器配置`或`provider.json 内的配置` 之后需要手动热重载`消息平台`或`LLM 管理器`,插件更改则会自动热重载。

\ No newline at end of file
diff --git a/docs/zh/workshop/dify-service-api.md b/docs/zh/workshop/dify-service-api.md
index 44f7f224e..6c2ea2674 100644
--- a/docs/zh/workshop/dify-service-api.md
+++ b/docs/zh/workshop/dify-service-api.md
@@ -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` 文件。
diff --git a/docs/zh/workshop/mcp-details.md b/docs/zh/workshop/mcp-details.md
new file mode 100644
index 000000000..ae6f143c7
--- /dev/null
+++ b/docs/zh/workshop/mcp-details.md
@@ -0,0 +1,26 @@
+# MCP 生态详解
+
+[MCP协议](https://modelcontextprotocol.io/) 是一种描述应用程序与 LLM 交互的协议,目前已经被多种产品采用。LangBot 可以作为 MCP Client 接入 MCP Server,大量扩展工具供 LLM 在与用户对话时使用。
+
+## 寻找 MCP Server
+
+要在 LangBot 使用 MCP 工具,需要找到已有的 MCP Server 并接入。
+市面上有两种类型的 MCP Server:
+
+- 基于 node 或 python 实现的可执行文件,通过 `stdio`(标准输入输出)与 LangBot 通信
+- 基于 http 协议的 web 服务,通过 http 协议与 LangBot 通信
+
+
+:::info
+
+- 可以到 [MCP Server 列表](https://github.com/punkpeye/awesome-mcp-servers) 查看已有的 MCP Server。
+- 在线托管的 MCP Server 可以到 [Composio MCP](https://mcp.composio.dev/) 查找。
+- 自行编写 MCP Server 可以参考 [MCP 协议文档](https://modelcontextprotocol.io/quickstart/server) 和 [MCP Server 示例](https://modelcontextprotocol.io/examples)。
+
+:::
+
+## 配置 MCP Server
+
+查看 [配置文档](/config/function/provider.html#mcp-%E9%85%8D%E7%BD%AE-mcp)
+
+配置完成后即可在聊天中通过`!func`命令查看已经注册的 MCP 工具,在与支持 Function Calling 的模型对话时,LangBot 会自动调用 MCP 工具。
\ No newline at end of file
diff --git a/docs/zh/workshop/ollama.md b/docs/zh/workshop/ollama.md
new file mode 100644
index 000000000..348ce30ce
--- /dev/null
+++ b/docs/zh/workshop/ollama.md
@@ -0,0 +1,73 @@
+# 使用 Ollama 接入本地模型
+
+## 安装 Ollama
+
+参考此教程:[https://datawhalechina.github.io/handy-ollama](https://datawhalechina.github.io/handy-ollama)
+
+详细介绍了各个平台如何安装部署 Ollama
+
+当你成功安装 Ollama 后
+
+你可以在此找到支持的模型:[https://ollama.com/search](https://ollama.com/search)
+
+然后复制对应指令下载模型即可
+
+> 下文以`deepseek-r1:7b`模型为例
+>
+> ```powershell
+> C:\Users\Lazy>ollama list
+> NAME ID SIZE MODIFIED
+> deepseek-r1:7b 0a8c26691023 4.7 GB 52 minutes ago
+> ```
+
+## 修改 provider.json
+
+打开`data/config/provider.json`,找到`model`配置项,值填写你在 Ollama 中下载的模型,例如我这里填写为:
+
+```json
+"model": "ollama/deepseek-r1:7b"
+```
+
+*💡Tips: 为什么写了`ollama/`前缀?个人习惯,便于区分*
+
+**注意:这里的模型名称要和下文的`llm-model.json`配置文件相对应**
+
+> **另附:**
+>
+> 如果你想更改 Ollama 的请求地址,比如说你的 Ollama 并没有在`本地的 11434 端口`运行
+>
+> 那么你可以在这个文件中找到
+>
+> ```json
+> "ollama-chat": {
+> "base-url": "http://127.0.0.1:11434",
+> "args": {},
+> "timeout": 600
+> },
+> ```
+>
+> 修改`ollama-chat`的`base-url`为 Ollama 的实际运行地址即可
+
+## 修改 llm-models.json
+
+打开`data/metadata/llm-models.json`,在`list`数组的末尾,追加如下
+
+```json
+{
+ "model_name": "deepseek-r1:7b",
+ "name": "ollama/deepseek-r1:7b",
+ "requester": "ollama-chat"
+}
+```
+
+`model_name`:意思是请求的实际模型名称
+
+`name`:意思是在 LangBot 中标识的名称
+
+`requester`:意思是使用的请求器为`ollama-chat`,即为使用 Ollama
+
+> 以上是我使用`deepseek-r1:7b`模型为例
+>
+> 其他模型同理可得
+
+## 对话中使用
diff --git a/docs/zh/workshop/one-api.md b/docs/zh/workshop/one-api.md
index d5543f5bf..ffa5fd20c 100644
--- a/docs/zh/workshop/one-api.md
+++ b/docs/zh/workshop/one-api.md
@@ -6,7 +6,7 @@
自从 OneAPI 流行之后,各种“牛鬼蛇神”模型都能以 OpenAI 的格式访问了,还有中转站也开始流行,OpenAI 的格式也成为了 AI App 平台等各种 AI 工具的访问格式,本文介绍如何将上述的支持 OpenAI 格式的接口接入 LangBot。
-首先我们先按照 LangBot 的文档,部署好 消息平台、LangBot 主程序,并将其连接上,进行到 provider.json 配置这一步时,看此文档。
+首先我们先按照 LangBot 的文档,部署好 消息平台、LangBot 主程序,并将其连接上,进行到 `provider.json` 配置这一步时,看此文档。
以下我们不再区分 LinkAI、OneAPI、中转站,统一以 OneAPI接口 代指 第三方OpenAI接口。
@@ -32,13 +32,13 @@
## 填写到 LangBot 配置文件
-修改 data/config/provider.json 中的 provider 配置,使用 openai-chat-completions 请求器:
+修改 `data/config/provider.json` 中的 `provider` 配置,使用 `openai-chat-completions` 请求器:

-把你刚刚的地址填写到图中显示位置的 base-url 中,本例是我的 OneAPI 站(自用)。
+把你刚刚的地址填写到图中显示位置的 `base-url` 中,本例是我的 OneAPI 站(自用)。
-接着把你刚刚的密钥填写到 keys 的 openai 组中:
+接着把你刚刚的密钥填写到 `keys` 的 `openai` 组中:

@@ -49,13 +49,13 @@

-注意,可用的模型名称已经预设了一些在 data/metadata/llm-models.json 元数据里,如果你使用的模型没有相应的元数据,需要自己添加。
+注意,可用的模型名称已经预设了一些在 `data/metadata/llm-models.json` 元数据里,如果你使用的模型没有相应的元数据,需要自己添加。
## 添加不在预设中的模型
-查看 data/metadata/llm-models.json 中 list 字段所有的元素,若没有任何元素的 name 是你要使用的模型名称,或其对应的 requester、token_mgr 不是 openai-chat-completions、openai,则需要添加。
+查看 `data/metadata/llm-models.json` 中 list 字段所有的元素,若没有任何元素的 `name` 是你要使用的模型名称,或其对应的 `requester`、`token_mgr` 不是 `openai-chat-completions`、`openai`,则需要添加。
-参考 元数据配置,本例中我们添加的模型 requester 设置为 openai-chat-completions ,token_mgr 设置为 openai,例如:
+参考 元数据配置,本例中我们添加的模型 `requester` 设置为 `openai-chat-completions` ,`token_mgr` 设置为 `openai`,例如:
```json
{
@@ -67,8 +67,8 @@
},
```
-name 为你的模型名称,对应 OneAPI 提供的模型名称,对应 上述 model 字段填写的值。
+`name 为你的模型名称,对应 OneAPI 提供的模型名称,对应 上述 model 字段填写的值。`
-tool_call_supported:是否支持使用工具,根据实际模型情况设置
+`tool_call_supported`:是否支持使用工具,根据实际模型情况设置
-vision_supported:是否支持视觉,根据实际模型情况设置
\ No newline at end of file
+`vision_supported`:是否支持视觉,根据实际模型情况设置
\ No newline at end of file
diff --git a/docs/zh/workshop/ppio-integration.md b/docs/zh/workshop/ppio-integration.md
new file mode 100644
index 000000000..bade2ad01
--- /dev/null
+++ b/docs/zh/workshop/ppio-integration.md
@@ -0,0 +1,22 @@
+# 接入 PPIO 派欧云 API
+
+1. 修改`data/config/provider.json`
+
+在部署完成 LangBot 后,打开 LangBot 根目录下的`data/config/provider.json`
+
+在`keys`中找到`ppio`,填入密钥,获取地址:https://ppinfra.com/settings/key-management
+
+例如你的密钥为`sk_lA8Ra66Ed0s8Yu9mMw53sj45nNVkFHA-ALeewmqkmd0`,则写为:
+
+
+
+例如要使用模型为`deepseek/deepseek-r1-turbo`,则下面模型设置为
+
+
+
+2. 修改`data/metadata/llm-models.json`
+
+例如要使用模型为`deepseek/deepseek-r1-turbo`
+
+
+