mirror of
https://github.com/langbot-app/LangBot.git
synced 2026-10-29 20:05:25 +08:00
184 lines
13 KiB
Plaintext
184 lines
13 KiB
Plaintext
---
|
||
title: "把群公告交给 Dify:用 GPT-6 Astra 和 LangBot 搭建 QQ、飞书写作助手"
|
||
description: "从基础 Chatbot 开始,把零散信息变成群公告,再通过 LangBot 连续追问、压缩和翻译。含真实部署截图、提示词和 QQ、飞书接入说明。"
|
||
---
|
||
|
||
本文同步自 LangBot Blog。 [阅读 Blog 原文](https://langbot.app/zh/blog/dify-langbot-writing-assistant).
|
||
|
||
发布于 2026-09-16 · 作者:LangBot Team
|
||
|
||
群里要发一条活动通知,手头往往只有几句零散信息:时间、地点、报名方式,还得再花几分钟调整口吻。真正烦的不是写第一版,而是“短一点”“别那么正式”“换成企微群通知”这几轮来回。
|
||
|
||
这次我们把这件事做成了一个聊天助手:Dify 管提示词和会话,GPT-6 Astra 负责改写,LangBot 负责把入口放到平时就在用的消息平台里。下面从部署开始,做一个可以继续追问和改稿的应用。
|
||
|
||

|
||
|
||
*实际链路:在 LangBot 里把英文提醒改成中文飞书群提醒。*
|
||
|
||
|
||
## 先把 Dify 和 LangBot 跑起来
|
||
|
||
先安装 Docker Compose 和 Git,再分别按 [Dify Docker Compose 部署文档](https://docs.dify.ai/en/self-host/deploy/quick-start/docker-compose) 与 [LangBot Docker 部署文档](https://langbot.app/docs/en/deploy/langbot/docker/) 启动两个服务。Dify 的基础步骤是克隆仓库、进入 `docker` 目录、将 `.env.example` 复制为 `.env`,再启动 Compose;LangBot 的文档提供完整的镜像和插件运行时配置。
|
||
|
||
本文截图来自 **Dify 1.17.1、LangBot v4.10.11** 的本机环境。我们把浏览器端口分别映射为 `8088` 和 `5368`;这是演示环境的自定义映射,官方默认部署通常分别使用 `80` 和 `5300`。如果沿用官方默认值,就打开 `http://localhost` 和 `http://localhost:5300`,不用为了对齐截图而改端口。各自创建管理员账户,并把界面语言设为 **English**。
|
||
|
||

|
||
|
||
*本地 Dify 的首次初始化页面。*
|
||
|
||

|
||
|
||
*本地 LangBot 的首次初始化页面。*
|
||
|
||
接入时最重要的是 **LangBot 容器能访问 Dify**。本次两个服务加入同一个 Docker 网络,因此 Runner 的 Base URL 使用 `http://nginx/v1`,其中 `nginx` 是 Dify 的服务名。你可以在两个 Compose 配置中为 Dify 的 `nginx` 和 LangBot 服务加入同一个外部网络;如果分别部署在不同主机,则填写 LangBot 能访问的 Dify HTTPS 地址并加上 `/v1`。下文表格里的 `http://nginx/v1` 都指本次共享网络环境,不能直接套到所有部署。容器内的 `localhost` 指向容器自己。
|
||
|
||
## 在 Dify 中配置 GPT-6 Astra
|
||
|
||
进入 **Integrations → Model Provider**,安装官方 **OpenAI-API-compatible** 插件,再点 **Add Model**。本次使用的插件版本是 0.0.66。
|
||
|
||
| 字段 | 本次设置 |
|
||
| --- | --- |
|
||
| Model Name / model name for API endpoint | `gpt-6-astra` |
|
||
| Model Type / Completion mode | LLM / Chat |
|
||
| Model display name | GPT-6 Astra |
|
||
| API Base URL | 你自己的 OpenAI 兼容服务地址,通常以 `/v1` 结尾 |
|
||
| API Key | 你的模型服务密钥 |
|
||
| API Type | Chat Completions API |
|
||
| Model context size / Upper bound for max tokens | 本教程设为 32768 / 4096 |
|
||
|
||
最后一行是这次演示的工作上限,不是对 Astra 完整规格的声明。保存时让 Dify 做连接验证,成功后再建应用。截图中的网关只是本次测试环境,实际使用时换成你自己的服务。模型参数和可用接口以所选服务为准。模型名称以你选用的服务实际提供的标识为准,本文保留本次实测的 `gpt-6-astra`。
|
||
|
||

|
||
|
||
*添加自定义模型。API Key 在截图前保持为空,实际运行时已配置。*
|
||
|
||
|
||
## 创建一个足够简单的 Chatbot
|
||
|
||
在 Dify Studio 点 **Create → Create from Blank → More basic app types → Chatbot**。命名 `Astra Writing Assistant`。这个需求只需要提示词和聊天记忆,用基础 Chatbot 就能做完整。
|
||
|
||

|
||
|
||
*展开基础应用类型,选择 Chatbot。*
|
||
|
||

|
||
|
||
*给写作助手命名,说明它负责什么。*
|
||
|
||
在 **Configure model** 选 GPT-6 Astra,然后把下面的指令放到 Instructions:
|
||
|
||
```text
|
||
You help a community manager turn rough notes into messages people can use.
|
||
Reply in the language of the user's request.
|
||
For an announcement, give: one clear headline, a short ready-to-send message,
|
||
and one optional reminder.
|
||
Preserve supplied dates, times, links, and requirements exactly.
|
||
Never invent missing event details, discounts, results, or promises.
|
||
If an essential detail is missing, ask one concise question.
|
||
Use a natural, direct tone. Avoid hype and excessive emojis.
|
||
Keep a typical reply under 180 words. When revising, use conversation context.
|
||
```
|
||
|
||
我们特意把“保留时间和报名方式”写进了规则。群公告最怕的不是文笔一般,而是模型把晚上 8 点改成下午 8 点,或者顺手编出一个报名链接。指令用英文写不影响中文回复;`Reply in the language...` 会跟随用户语言。
|
||
|
||

|
||
|
||
*写作助手的完整提示词编辑区。*
|
||
|
||
先在右侧 **Debug & Preview** 输入:
|
||
|
||
> 帮我写一条飞书群公告:9月22日晚上8点举行机器人分享会,每人带一个机器人案例,在群里回复“报名”即可参加。口吻自然,100字以内。
|
||
|
||
实测回复保留了活动时间、案例要求和“报名”方式。接着可以继续说“删掉最后的提醒,只留两句话”。对于这种任务,第二轮是否记得上一轮,比第一次是否写得漂亮更有用。
|
||
|
||

|
||
|
||
*Dify 中的中文公告回复,日期和报名方式来自输入。*
|
||
|
||
英文测试也做了一遍:先要求写 Discord demo day 通知,再让它缩短并删除可选提醒。第二轮沿用了第一轮给定的日期、UTC 时间和频道。
|
||
|
||

|
||
|
||
*多轮改写测试:继续修改已有公告。*
|
||
|
||
基础 Chatbot 的改动需要通过 **Publish Update** 发布。不要只改了提示词就直接去平台测试,否则外部接口可能仍在使用上一个版本。
|
||
|
||

|
||
|
||
*Access Point 同时提供 Web App 和 Backend Service API。*
|
||
|
||
|
||
## 用 LangBot 接住消息入口
|
||
|
||
在 Dify 点 **Publish**,发布当前版本。然后进入 **Access Point → Backend Service API → API Key**,创建这个应用自己的密钥。
|
||
|
||
打开 LangBot,点 **Create Pipelines**,命名为 `Astra Writing Assistant`。进入 **Configuration → AI**:
|
||
|
||
| 字段 | 值 |
|
||
| --- | --- |
|
||
| Runner | Dify Service API |
|
||
| Base URL | `http://nginx/v1` |
|
||
| App Type | Chat |
|
||
| API Key | 刚创建的 Dify 应用密钥 |
|
||
|
||
这里粘贴的是 **Dify 应用密钥**,不是前面配置 Astra 的模型密钥。一个负责调用应用,一个负责调用模型,别混用。保存后打开 **Debug Chat**,先验证整条调用链,再接平台。
|
||
|
||

|
||
|
||
*LangBot 的 Dify Runner 配置;截图时尚未填入应用密钥。*
|
||
|
||
|
||
## 在 LangBot 再试一次
|
||
|
||
我们先发了一条英文 Telegram 提醒,拿到回复后继续要求改成中文飞书群提醒。最终回复保留了“9月22日晚上8点”和“每人带一个机器人案例”,说明 Dify 的会话上下文已经通过 LangBot 串起来了。
|
||
|
||

|
||
|
||
*LangBot 调用 Dify 返回英文活动提醒。*
|
||
|
||
实际使用时,可以把这类助手放到运营群或项目群里,用提及触发。它适合把草稿变成能发送的文本:活动预告、版本通知、会议提醒、FAQ 回复。消息发送前仍由群成员决定是否采用,这样也方便继续改稿。
|
||
|
||
## 接到QQ、微信、飞书,以及其他消息平台
|
||
|
||
在 LangBot 点 **Create Bots**,选择适配器,填写平台提供的凭据。创建后把机器人绑定到刚才的流水线;检查 Trigger 中的私聊、群聊和提及规则,再按平台要求发布或邀请机器人。
|
||
|
||
本次实测覆盖 **LangBot → Dify → GPT-6 Astra → LangBot 回复**。以下是实际界面核对过的接入方式,平台账户与群聊没有在本次演示中授权连接。
|
||
|
||
| 入口 | 配置方式 |
|
||
| --- | --- |
|
||
| 飞书 / Lark | 选 Lark;可扫码创建应用,也可手填 App ID、App Secret、与平台一致的 Bot Name。中国平台域名选 Feishu,默认使用长连接;开发者后台配置消息权限、事件并发布应用。 |
|
||
| 钉钉 | 选 DingTalk;扫码或填写 Client ID、Client Secret。Robot Code 需从开发者后台复制;按文档配置 Stream 接收消息、机器人名称和需要的卡片模板。 |
|
||
| 企业微信智能机器人 | 选 WeComBot;长连接用 BotId、Secret,填写机器人名称。Webhook 模式另配 Corpid、Token、EncodingAESKey。两套模式不要混填。 |
|
||
| 企业微信内部应用 / 微信客服 | 分别选 WeCom 或 WeComCustomerService,按各自后台填写企业与应用凭据、Token、EncodingAESKey,完成 HTTPS 回调和可信 IP 配置。内部应用不能直接当群机器人使用。 |
|
||
| 微信个人会话 | 选 OpenClaw WeChat,通过界面的二维码授权登录,按适配器说明接入。 |
|
||
| 微信公众号 | 选 Official Account,填写 App ID、App Secret、Token、EncodingAESKey,配置公网回调与 IP 白名单。根据接口限制选择回复模式;耗时较长时可能需要用户再发一条消息取回结果。 |
|
||
| QQ:OneBot v11 | 运行兼容 OneBot v11 的协议端,配置反向 WebSocket 到 LangBot 的监听端口,两侧 Access Token 保持一致;演示环境的 Compose 把主机 2288 映射到容器 2280。 |
|
||
| QQ 官方机器人 | 选 QQ Official API;可扫码绑定或填写 App ID、Secret。当前界面说明 Token 可留空;接收模式、沙箱范围、发布审核以 QQ 官方及适配器文档为准。 |
|
||
|
||

|
||
|
||
*飞书适配器支持域名选择、扫码创建和手工配置。*
|
||
|
||

|
||
|
||
*QQ 的 OneBot v11 方案需要反向 WebSocket 监听地址和端口。*
|
||
|
||
LangBot 的适配器列表还包括 Discord、Slack、Telegram、LINE、Mattermost、Matrix、KOOK、Satori、HTTP Bot、Page Bot 和 WeChatPad。每种适配器需要的权限、回调和协议不同,不是填一个通用 Token 就全部接通。完整入口见 [LangBot 平台文档](https://langbot.app/docs/zh/usage/platforms/readme)。
|
||
|
||
如果只是想先模拟 QQ 消息,可以使用 matcha 之类的 OneBot 测试端;本文展示的对话来自 LangBot 自带 Debug Chat,没有把模拟对话当作真实群消息。
|
||
|
||
## 几个容易卡住的地方
|
||
|
||
|
||
遇到问题先按链路定位:Dify 预览能否回复、应用是否已 Publish、LangBot 的 Base URL 是否包含 `/v1`、应用类型是否正确,最后才看平台事件是否到达。如果改过 Dify 服务密码,Redis 与 Celery、Sandbox 与代码执行客户端的配置必须成对修改。
|
||
|
||
本机部署还遇到过代理软件返回虚拟 DNS 地址,导致 Dify 的 SSRF 代理拒绝插件下载。修好 DNS 后恢复,没必要关掉证书校验或内网访问保护。一次外部 API 的临时失败也不能当作模型或平台已经接通的证明,重试后仍应检查运行记录。
|
||
|
||
项目入口:[LangBot](https://github.com/langbot-app/LangBot) 和 [Dify](https://github.com/langgenius/dify)。截图和测试日期为 2026 年 9 月 16 日,后续版本的菜单名称可能会变化。
|
||
|
||
|
||
## 继续阅读
|
||
|
||
- [让客服问题走对分支:Dify + LangBot 钉钉、企业微信机器人实战](https://langbot.app/zh/blog/dify-langbot-support-triage)
|
||
- [在飞书里查询 GitHub 更新:Dify Workflow + GPT-6 Astra + LangBot 实战](https://langbot.app/zh/blog/dify-langbot-github-release-briefing)
|