用 1 小时给团队搭一个 AI 机器人:飞书/钉钉接入 8848AI API 实战
用 1 小时给团队搭一个 AI 机器人:飞书/钉钉接入 8848AI API 实战
📂 「企业 AI 提效」系列 · 第 1 篇(共 4 篇计划)
- ✅ 第 1 篇:搭建飞书/钉钉 AI 机器人(本文)
- 🔜 第 2 篇:接入企业知识库(RAG 实战)
- 🔜 第 3 篇:AI 工作流自动化(自动周报、自动摘要、自动分配任务)
- 🔜 第 4 篇:多 Agent 协作——让 AI 机器人之间也能"开会"
---
周一早上 9 点,产品群里炸了 50 条消息。
有人问"上次那个需求文档在哪",有人问"这个报错什么意思",有人让你帮忙润色一段文案。你还没喝上第一口咖啡,就已经被 @ 了 8 次。
而隔壁团队的群里,大家直接 @AI助手,10 秒内就拿到了答案。
差距不在于谁更懂 AI,而在于谁先把 AI 接进了工作流。这篇文章将带你从 0 到 1,用 1 小时搭建一个属于你团队的 AI 机器人。不需要懂机器学习,只要会调 API,你就能让 GPT-4o 或 Claude 3.5 住进你们的飞书/钉钉群。
---
一、为什么团队需要一个"住在群里"的 AI?
先算一笔账。
一个 10 人的研发团队,每人每天平均花 40 分钟在重复性信息查找和内部问答上:查文档、回答新人问题、写日报周报、整理会议纪要。乘以 10 人,每天消耗 400 分钟,相当于白白蒸发掉一个员工的工作日。
这些任务有一个共同特点:高度重复、有标准答案、不需要人类创造力。这恰好是大模型最擅长的事。
但问题来了——大多数团队的 AI 使用方式是这样的:
个人偷偷开着 ChatGPT 标签页 → 复制问题 → 等回答 → 粘贴回来 → 继续干活
这种方式有三个致命缺陷:
1. 效率损耗:来回切换窗口,上下文割裂
2. 知识孤岛:每个人单独问,团队知识无法沉淀
3. 门槛不均:不会用 AI 的同事完全享受不到红利
真正的解法是:让 AI 住进团队已有的协作工具。飞书和钉钉覆盖了中国超过 5 亿企业用户(飞书约 5000 万 DAU,钉钉约 7 亿注册用户),这两个工具几乎是现代中国职场的基础设施。
在群里 @一下就能得到 AI 回答,才是真正的零摩擦落地。
---
二、技术选型:为什么是 8848AI API?
搭建这套方案,你面临几个选择:
| 方案 | 优势 | 劣势 | | 直接用 OpenAI 官方 API | 原汁原味 | 需要代理,国内访问不稳定,账号风控严 | | 自建开源模型(Llama 等) | 数据不出本地 | 部署成本高,效果和 GPT-4o 差距明显 | | 其他中转服务 | 国内可访问 | 服务稳定性参差不齐,模型选择有限 | | 8848AI API | 多模型 + 国内直连 + OpenAI 兼容 | — |[8848AI(api.884819.xyz)](https://api.884819.xyz) 的核心优势有三点:
① 一站式多模型接入:GPT-4o、Claude 3.5 Sonnet、Gemini Pro 等主流模型统一接口,一个 API Key 搞定,随时切换 ② OpenAI 兼容格式:只需改一行base_url,原有代码零改动迁移
③ 国内网络直连:不需要代理,服务器部署在国内可访问的节点,延迟稳定
接下来进入正题。
---
三、飞书机器人搭建教程(手把手版)
整体架构如下:
用户在飞书群 @机器人
↓
飞书服务器推送 Webhook 事件
↓
你的后端服务(Flask/FastAPI)
↓
调用 8848AI API(转发给 GPT-4o/Claude)
↓
将回复通过飞书 API 发回群里
Step 1:获取 8848AI API Key
打开 [api.884819.xyz](https://api.884819.xyz),注册账号后进入控制台,点击「创建 API Key」。整个过程不到 2 分钟,Key 格式类似 sk-xxxxxxxxxxxxxxxx。
⚠️ 安全提醒:API Key 是敏感凭证,不要硬编码在代码里,建议存入环境变量或配置文件,并加入 .gitignore。
Step 2:在飞书开放平台创建应用
1. 访问 [open.feishu.cn](https://open.feishu.cn),登录后点击「创建企业自建应用」
2. 填写应用名称(比如「AI 小助手」)和描述
3. 进入应用后,左侧菜单找到「添加应用能力」→ 选择「机器人」
4. 在「事件订阅」中,添加 im.message.receive_v1(接收消息事件),并填入你的 Webhook 地址(格式:https://你的域名/webhook/feishu)
5. 在「权限管理」中开通:im:message(读写消息)、im:message.group_at_msg(接收群 @ 消息)
完成后,记录下应用的 App ID 和 App Secret,后面要用。
Step 3:编写后端服务
先安装依赖:
pip install flask openai requests python-dotenv
核心代码如下:
# app.py
import os
import openai
import requests
from flask import Flask, request, jsonify
from dotenv import load_dotenv
load_dotenv()
app = Flask(__name__)
初始化 8848AI 客户端(兼容 OpenAI 格式)
client = openai.OpenAI(
api_key=os.getenv("BABAAI_API_KEY"),
base_url="https://api.884819.xyz/v1" # 替换为 8848AI 的接入点
)
简单的内存对话历史(生产环境建议用 Redis)
conversation_history = {}
def chat_with_ai(user_id: str, user_message: str, system_prompt: str = None) -> str:
"""调用 8848AI API,支持多轮对话"""
if user_id not in conversation_history:
conversation_history[user_id] = []
history = conversation_history[user_id]
# 构建消息列表
messages = []
if system_prompt:
messages.append({"role": "system", "content": system_prompt})
messages.extend(history)
messages.append({"role": "user", "content": user_message})
# 调用 API
response = client.chat.completions.create(
model=smart_route(user_message), # 智能路由,见下文
messages=messages,
max_tokens=2000
)
reply = response.choices[0].message.content
# 更新对话历史(保留最近 10 轮)
history.append({"role": "user", "content": user_message})
history.append({"role": "assistant", "content": reply})
if len(history) > 20:
conversation_history[user_id] = history[-20:]
return reply
def smart_route(message: str) -> str:
"""模型路由策略:简单任务用轻量模型,复杂任务用旗舰模型"""
simple_keywords = ["翻译", "总结一下", "帮我改", "什么意思"]
if len(message) < 50 and any(kw in message for kw in simple_keywords):
return "gpt-4o-mini" # 便宜,够用
return "gpt-4o" # 复杂推理用旗舰
def get_feishu_token() -> str:
"""获取飞书 tenant_access_token"""
url = "https://open.feishu.cn/open-apis/auth/v3/tenant_access_token/internal"
resp = requests.post(url, json={
"app_id": os.getenv("FEISHU_APP_ID"),
"app_secret": os.getenv("FEISHU_APP_SECRET")
})
return resp.json().get("tenant_access_token", "")
def send_feishu_message(chat_id: str, content: str):
"""将回复发送回飞书群"""
token = get_feishu_token()
url = "https://open.feishu.cn/open-apis/im/v1/messages"
headers = {"Authorization": f"Bearer {token}"}
payload = {
"receive_id": chat_id,
"msg_type": "text",
"content": f'{{"text": "{content}"}}'
}
requests.post(url, json=payload, headers=headers,
params={"receive_id_type": "chat_id"})
@app.route("/webhook/feishu", methods=["POST"])
def feishu_callback():
data = request.json
# 处理飞书 URL 验证(首次配置时)
if "challenge" in data:
return jsonify({"challenge": data["challenge"]})
# 提取消息内容
event = data.get("event", {})
message = event.get("message", {})
sender = event.get("sender", {})
user_id = sender.get("sender_id", {}).get("open_id", "default")
chat_id = message.get("chat_id", "")
# 解析文本内容(去掉 @机器人 的标记)
import json
content = json.loads(message.get("content", "{}"))
user_text = content.get("text", "").replace("@_user_1", "").strip()
if not user_text:
return jsonify({"code": 0})
# 调用 AI 并回复
reply = chat_with_ai(user_id, user_text)
send_feishu_message(chat_id, reply)
return jsonify({"code": 0})
if __name__ == "__main__":
app.run(port=5000, debug=True)
Step 4:本地调试与部署
本地调试(用 ngrok 暴露本地端口):# 终端 1:启动 Flask
python app.py
终端 2:用 ngrok 获取公网地址
ngrok http 5000
会得到类似 https://abc123.ngrok.io 的地址
填入飞书开放平台的 Webhook 地址:https://abc123.ngrok.io/webhook/feishu
生产部署推荐三种方案:
| 方案 | 适合场景 | 月成本参考 |
| 云服务器(2核2G) | 稳定长期运行 | ¥50-100/月 |
| 阿里云函数计算 FC | 低频使用,按量付费 | ¥0-20/月 |
| Railway / Render | 个人项目快速上线 | 免费额度够用 |
配置好环境变量 .env:
BABAAI_API_KEY=sk-你的密钥
FEISHU_APP_ID=cli_你的AppID
FEISHU_APP_SECRET=你的AppSecret
部署完成,在飞书群里 @ 你的机器人,如果收到回复——恭喜,你成功了。第一条 AI 回复出现在群里的那一刻,是这整个教程最值得截图留念的时刻。
---
四、钉钉版本 + 三个进阶玩法
钉钉机器人(快速版)
钉钉的 Outgoing 机器人配置更简单:在钉钉开发者后台创建「企业内部机器人」,选择「HTTP 模式」,填入 Webhook 地址即可。
@app.route("/webhook/dingtalk", methods=["POST"])
def dingtalk_callback():
data = request.json
# 钉钉会在消息前自动加机器人名称,需要去掉
user_msg = data.get("text", {}).get("content", "").strip()
sender_id = data.get("senderStaffId", "default")
reply = chat_with_ai(sender_id, user_msg)
# 钉钉 Outgoing 机器人直接 return JSON 即可回复
return jsonify({
"msgtype": "markdown",
"markdown": {
"title": "AI 助手回复",
"text": reply
}
})
⚠️ 钉钉的坑:Outgoing 机器人要求你的服务必须在 3 秒内返回响应,否则会超时。如果 AI 回复较慢,建议先异步处理,再通过钉钉 API 主动推送消息。
进阶玩法 1:角色预设
让机器人根据群的类型或指令切换身份:
ROLE_PRESETS = {
"产品助手": (
"你是一位资深产品经理,擅长需求分析、PRD 撰写和竞品分析。"
"回答时注重结构化,善用列表和框架。"
),
"代码审查": (
"你是一位严格的 Code Reviewer,关注代码安全性、性能和可维护性。"
"发现问题时直接指出,并给出改进建议。"
),
"客服专家": (
"你是公司的客服代表,语气友好专业。"
"遇到无法回答的问题,引导用户联系人工客服。"
),
}
用户可以通过指令切换:"/角色 产品助手 帮我写一个登录功能的需求文档"
def parse_command(text: str):
if text.startswith("/角色"):
parts = text.split(" ", 2)
role = parts[1] if len(parts) > 1 else None
content = parts[2] if len(parts) > 2 else ""
system_prompt = ROLE_PRESETS.get(role, "")
return content, system_prompt
return text, None
进阶玩法 2:多轮对话记忆
上面的代码已经内置了对话历史管理。实际效果是:
用户:帮我写一个 Python 函数,实现二分查找
AI:(给出代码)
用户:再加上单元测试
AI:(基于上文,直接补充测试代码,不需要重复解释)
用户:改成递归版本
AI:(继续在上下文中修改)
这种连贯的对话体验,才是 AI 真正好用的关键。
进阶玩法 3:模型路由省钱策略
8848AI 支持多模型统一接口,这意味着你可以实现精细化的成本控制:
def smart_route(message: str) -> str:
# 简单翻译、格式转换 → 用便宜的轻量模型
if len(message) < 100 and any(
kw in message for kw in ["翻译", "总结", "润色", "改写"]
):
return "gpt-4o-mini"
# 代码生成、复杂推理 → 用旗舰模型
if any(kw in message for kw in ["代码", "架构", "分析", "方案"]):
return "gpt-4o"
# 创意写作 → Claude 效果更好
if any(kw in message for kw in ["写作", "故事", "文案", "营销"]):
return "claude-3-5-sonnet-20241022"
return "gpt-4o" # 默认旗舰
成本测算参考(基于 8848AI 定价,以 GPT-4o 为例):
| 团队规模 | 日均消息量 | 预估月费用 |
| 10 人小团队 | 200 条 | ¥80-150 |
| 50 人中型团队 | 1000 条 | ¥400-700 |
| 200 人大团队 | 4000 条 | ¥1500-2500 |
启用模型路由策略后,费用可降低 30%-50%。在 [api.884819.xyz](https://api.884819.xyz) 后台可以实时查看用量明细,建议设置预算上限,避免测试阶段产生意外开销。
---
五、企业落地:三件必须提前想清楚的事
1. 安全合规
- API Key 管理:使用环境变量,绝不提交到 Git,定期轮换
- 敏感信息过滤:在发送给 AI 之前,过滤掉身份证号、手机号等 PII 数据
- 日志审计:记录每一次调用的 user_id、时间戳和 token 消耗,便于事后审查
# 简单的敏感词过滤示例
import re
def filter_sensitive(text: str) -> str:
# 手机号脱敏
text = re.sub(r'1[3-9]\d{9}', '[手机号已隐藏]', text)
# 身份证脱敏
text = re.sub(r'\d{17}[\dXx]', '[证件号已隐藏]', text)
return text
2. 让非技术同事真正用起来
技术搭好只是第一步,更难的是推广。几个实测有效的方法:
- 起一个好名字:「小智」「AI 队友」比「机器人 001」更有亲近感
- 写好引导语:机器人第一次被 @ 时,自动发送使用说明和示例指令
- 设置快捷指令:
/周报、/翻译、/总结这类快捷词降低使用门槛 - 收集反馈:在回复末尾加「觉得有用请点 👍,有问题请 @ 管理员」
3. 常见报错速查
| 错误现象 | 原因 | 解决方法 | | 飞书 Webhook 验证失败 | 服务未正确返回 challenge | 检查 challenge 处理逻辑 | | AI 回复为空 | API Key 无效或余额不足 | 检查 Key 和账户余额 | | 钉钉回复超时 | AI 响应超过 3 秒 | 改为异步处理 + 主动推送 | | 对话历史丢失 | 服务重启导致内存清空 | 改用 Redis 持久化存储 | | 群里收不到回复 | 消息权限未开通 | 检查飞书应用权限配置 |---
结语
你搭建的不只是一个机器人,而是在团队里种下了一颗 AI 原生协作的种子。
当每个人都习惯了「有问题先问 AI」,整个团队的知识获取效率、决策速度、创造力都会发生质变。写周报从 30 分钟缩短到 5 分钟,查技术文档从翻 10 分钟变成问一句话 10 秒——这些不是 PPT 上的数字,是真实发生在用上这套方案的团队里的改变。
而这一切,只需要一个下午的时间。
现在就去试试吧,你的团队值得拥有一个 AI 队友。---
📌 下期预告
>
今天我们搭建了一个能即时问答的 AI 机器人。但真正让它在企业里不可替代的,是让它读懂你们自己的文档。
>
下一篇,我们将深入实战:《给你的飞书/钉钉机器人接入企业知识库:RAG 实战指南》——让机器人能基于公司内部的产品文档、技术 Wiki、FAQ 来回答问题,真正成为「懂业务的 AI 同事」。
>
我们会用到向量数据库 + 8848AI 的 Embedding API,同样是手把手教程,零基础也能跟上。
>
关注我们,不错过更新 👆
---
本文由8848AI原创,转载请注明出处。