用 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 IDApp 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原创,转载请注明出处。