飞书机器人两小时接入大模型 - 我把接入流程压缩成了一个晚上
·ThisToken.AI·
Tutorials入门教程ThisToken.AI
为什么是这件事
先算一笔时间账。如果你想让飞书群里的机器人能回答问题、总结消息、写日报,传统路径大致是这样的:
| 步骤 | 自己对接大模型官方API | 走统一网关(如 ThisToken.AI) |
|---|---|---|
| 注册各模型账号 | 每家都要注册、实名、充值 | 注册一次 |
| 阅读各家SDK文档 | 每家格式都略有差异 | 一套 OpenAI 兼容格式 |
| 处理计费与额度 | 多个平台分开管 | 一个后台统一看 |
| 首次跑通代码 | 视熟悉程度半天到两天 | 一个晚上(我的实测约两小时) |
对于独立开发者和小团队来说,最贵的往往不是 API 调用费,而是「第一次跑通」之前的所有摸索时间。走网关的核心价值就在这里:格式统一、账号统一、随时切换模型。价格方面,以官网价格页为准,不做数字对比。
下面是我实际跑通的完整流程。
第一步:注册飞书开放平台并建机器人
- 打开飞书开放平台,创建一个「企业自建应用」。
- 在「添加应用能力」里勾选「机器人」。
- 记下 App ID 和 App Secret(后面要用)。
- 在「事件与回调」中配置订阅方式。本地调试建议选长连接模式(WebSocket),不需要公网 IP、不用配 HTTPS 证书,这一个选择能省掉至少一小时的 nginx 折腾。
- 订阅事件:
im.message.receive_v1。 - 权限管理里开通:
im:message、im:message:send_as_bot。 - 发布版本并让管理员通过审核,然后把机器人拉进一个测试群。
第二步:注册 ThisToken.AI 并获取 API Key
- 访问 https://api.thistoken.ai/register ,用邮箱完成注册。
- 登录后进入控制台,在「API 密钥」页面创建一个新 Key。
- 立刻复制并妥善保存——Key 只完整展示一次。
- 往账户里充一点额度(金额以官网价格页为准),跑通流程用不了多少。
拿到 Key 之后,你就有了一个统一入口:后续无论是换模型、加模型,都只是改代码里一个 model 参数的事,不用再注册新账号。
第三步:一段可运行的 Python 代码
先装依赖:
pip install lark-oapi openai保存为 bot.py:
import os
import lark_oapi as lark
from lark_oapi.api.im.v1 import (
P2ImMessageReceiveV1, ReplyMessageRequest, ReplyMessageRequestBody
)
from openai import OpenAI
# ===== 飞书侧配置 =====
APP_ID = os.environ["FEISHU_APP_ID"]
APP_SECRET = os.environ["FEISHU_APP_SECRET"]
# ===== 大模型侧:走统一网关 =====
llm = OpenAI(
api_key=os.environ["THISTOKEN_API_KEY"],
base_url="https://api.thistoken.ai/v1", # 关键:统一网关入口
)
def ask_llm(question: str) -> str:
resp = llm.chat.completions.create(
model="gpt-4o-mini", # 换模型只改这一行
messages=[
{"role": "system", "content": "你是群里的技术助手,回答简洁准确。"},
{"role": "user", "content": question},
],
)
return resp.choices[0].message.content
def do_reply(client: lark.Client, data: P2ImMessageReceiveV1):
msg = data.event.message
if msg.message_type != "text":
return
import json
text = json.loads(msg.content).get("text", "").strip()
if not text:
return
answer = ask_llm(text)
req = ReplyMessageRequest.builder() \
.message_id(msg.message_id) \
.request_body(ReplyMessageRequestBody.builder()
.content(json.dumps({"text": answer}))
.msg_type("text")
.build()) \
.build()
client.im.v1.message.reply(req)
def main():
client = lark.Client.builder() \
.app_id(APP_ID).app_secret(APP_SECRET).build()
handler = lark.EventDispatcherHandler.builder("", "") \
.register_p2_im_message_receive_v1(
lambda _, data: do_reply(client, data)) \
.build()
ws_client = lark.ws.Client(APP_ID, APP_SECRET,
event_handler=handler,
log_level=lark.LogLevel.INFO)
ws_client.start()
if __name__ == "__main__":
main()运行前设置环境变量:
export FEISHU_APP_ID=你的AppID
export FEISHU_APP_SECRET=你的AppSecret
export THISTOKEN_API_KEY=你的Key
python bot.py然后在测试群里 @机器人 问一句「用一句话解释什么是 WebSocket」,几秒内它会回复。到这里,最小闭环就通了。
几个实测的坑
- 别在代码里写死 Key。环境变量或配置中心,从第一行代码就养成习惯。
- 长连接模式在断网后会自动重连,但如果你的服务器频繁掉线,检查心跳日志,别急着怀疑代码。
- 群聊里只有 @机器人 的消息才触发事件,如果没反应,先确认你 @ 了它,而不是发普通消息。
- 模型名要与网关支持列表一致,在 ThisToken.AI 控制台可以查看可用模型,写错模型名会直接报错。
省下来的时间花在哪
我第一次手工对接某模型的官方 SDK,光处理鉴权签名和错误码就花了一个下午;这次换成统一网关,接入部分约两小时完成,其中一半时间在配飞书权限。更重要的是后续收益:
- 换模型零成本:想对比不同模型在群聊场景的表现,改一个字符串即可,不用再走一遍注册、充值、读文档的流程。
- Key 管理一处搞定:小团队最怕的就是 Key 散落在五六个脚本里,走网关后一把钥匙管所有模型。
- 账单集中:所有调用量在同一个后台可见,月底对账不用翻五个平台。
对独立开发者,这意味着一个晚上就能把想法变成能用的东西;对三五人的小团队,意味着不用指定专人去啃各家 SDK 的差异文档。省下的那些小时,才是这类项目里真正稀缺的资源。
注册入口在这里:https://api.thistoken.ai/register ,拿到 Key 后,上面那段代码原样就能跑。
---
想直接跑通示例?访问 https://api.thistoken.ai/register 注册 ThisToken.AI,获取 API Key 后即可开始。