你想不想在飞书里有一个随叫随到的 AI 小助手?它能帮你回答问题、写文案、翻译内容,甚至帮你写代码?今天我就手把手教大家,从零开始搭建一个基于飞书的 AI 智能助手。整个过程不需要你有任何编程基础,我会用最简单的大白话讲解,配合图文步骤(文字模拟截图),保证你能跟着做出来。

我们今天用的 AI 大脑是 HolySheep AI,这家平台对国内开发者特别友好,支持微信和支付宝充值,汇率是 ¥1=$1(官方汇率才 ¥7.3=$1),能省下超过 85% 的费用,而且国内直连延迟小于 50ms,速度飞快。

一、准备工作:注册飞书和 HolySheep 账号

1.1 注册飞书账号

飞书是字节跳动推出的企业协作工具,个人也可以免费注册。如果你还没用过,直接去 feishu.cn 下载 App,用手机号注册登录即可。这个步骤很简单,我就不多说了。

1.2 注册 HolySheep AI 账号(领取免费额度)

这是最关键的一步!我们需要有一个 AI 模型的 API 才能让机器人"聪明"起来。推荐大家使用 HolySheep AI,原因如下:

注册步骤(文字模拟截图):

① 打开浏览器访问 https://www.holysheep.ai/register
② 输入手机号和验证码
③ 登录后进入控制台,点击左侧菜单的"API Keys"
④ 点击"创建新的 API Key",随便起个名字比如"飞书机器人"
⑤ 复制生成的 Key,格式类似 sk-holysheep-xxxxxxxxxxxxxxxx

二、创建飞书自建应用

飞书开放平台提供了创建自定义机器人的功能,我们来一步一步操作:

2.1 创建应用

① 打开 open.feishu.cn(飞书开放平台),用飞书账号登录
② 点击右上角"开发者后台"
③ 点击"创建自建应用"
④ 填写应用名称(比如"AI小助手"),选择合适的图标
⑤ 点击"创建"按钮

2.2 获取 App ID 和 App Secret

创建完成后,你会进入应用详情页。找到左侧菜单的"凭证与基础信息",在这里你可以看到:

App ID: cli_xxxxxxxxxxxxxxxx
App Secret: xxxxxxxxxxxxxxxxxxxxxxxxxxxx

把这两个值复制下来,等会儿要用到。注意 App Secret 点击"复制"按钮才能看到完整内容。

2.3 配置机器人能力

① 在左侧菜单找到"添加应用能力"
② 找到"机器人"选项,点击"添加"
③ 在"机器人"设置页面,启用"消息权限"和"使用长连接接收消息"

三、本地开发环境搭建

为了运行我们的飞书机器人代码,需要先准备好 Python 环境。我自己的经验是,搭建环境这一步卡住了很多新手,所以我会讲得非常详细。

3.1 安装 Python

① 打开 python.org/downloads
② 下载最新版本的 Python 3.9 或更高
③ 双击安装包,一定要勾选"Add Python to PATH"(这个超级重要!)
④ 点击"Install Now"完成安装

3.2 验证 Python 安装

打开命令行(Windows 按 Win+R,输入 cmd 回车),输入:

python --version
pip --version

如果显示版本号(比如 Python 3.11.5),说明安装成功。

3.3 安装项目依赖

我们需要一个代码编辑器,我推荐 VS Code,免费的。去 code.visualstudio.com 下载安装即可。

新建一个文件夹命名为 feishu-ai-bot,在里面新建一个文件叫 main.py。先别管内容,我们先安装依赖。打开命令行,进入这个文件夹:

cd Desktop/feishu-ai-bot
pip install feishu-sdk requests python-dotenv

安装完成后,应该能看到"Successfully installed"的提示。

四、完整代码实现

终于到核心环节了!我会一步步解释代码的作用,你只需要复制粘贴即可。我用的是 HolySheep AI 的 API,价格便宜而且国内直连延迟很低。

4.1 创建配置文件

在项目文件夹里新建一个 .env 文件(注意前面有个点),内容如下:

# HolySheep API 配置
HOLYSHEEP_API_KEY=sk-holysheep-your-key-here
HOLYSHEEP_API_URL=https://api.holysheep.ai/v1/chat/completions

飞书配置

FEISHU_APP_ID=cli_xxxxxxxxxxxxxxxx FEISHU_APP_SECRET=your-feishu-secret-here

把你的 HolySheep API Key 和飞书的 App ID、App Secret 填进去。注意不要加引号,直接写。

4.2 主程序代码

下面是完整的 main.py 代码,我已经加了详细的中文注释:

"""
飞书 AI 智能助手 - 主程序
使用 HolySheep AI 作为大脑
"""

import json
import logging
import os
import time
from datetime import datetime
from threading import Thread

import requests
from dotenv import load_dotenv
from lark_oapi.adapter.websocket import WsClient
from lark_oapi.api.im.v1 import CreateMessageP2PResponse

加载环境变量

load_dotenv()

配置日志

logging.basicConfig( level=logging.INFO, format='%(asctime)s - %(name)s - %(levelname)s - %(message)s' ) logger = logging.getLogger(__name__)

读取配置

HOLYSHEEP_API_KEY = os.getenv("HOLYSHEEP_API_KEY") HOLYSHEEP_API_URL = os.getenv("HOLYSHEEP_API_URL") FEISHU_APP_ID = os.getenv("FEISHU_APP_ID") FEISHU_APP_SECRET = os.getenv("FEISHU_APP_SECRET")

存储对话历史(简单的内存存储)

conversation_history = {} def get_holyAPI_access_token(): """获取飞书 API 访问令牌""" url = "https://open.feishu.cn/open-apis/auth/v3/tenant_access_token/internal" headers = {"Content-Type": "application/json"} data = { "app_id": FEISHU_APP_ID, "app_secret": FEISHU_APP_SECRET } response = requests.post(url, headers=headers, json=data) result = response.json() if result.get("code") == 0: return result.get("tenant_access_token") else: logger.error(f"获取 access_token 失败: {result}") return None def call_holysheep_api(user_message, user_id): """ 调用 HolySheep AI API 使用 DeepSeek V3.2 模型,性价比超高($0.42/MTok) """ headers = { "Content-Type": "application/json", "Authorization": f"Bearer {HOLYSHEEP_API_KEY}" } # 获取或初始化对话历史 if user_id not in conversation_history: conversation_history[user_id] = [] # 添加用户消息到历史 conversation_history[user_id].append({ "role": "user", "content": user_message }) # 只保留最近10轮对话,控制上下文长度 messages = conversation_history[user_id][-10:] payload = { "model": "deepseek-chat", # 使用 DeepSeek V3.2 模型 "messages": messages, "temperature": 0.7, "max_tokens": 2000 } try: # 调用 HolySheep API,国内直连延迟 <50ms response = requests.post( HOLYSHEEP_API_URL, headers=headers, json=payload, timeout=30 ) result = response.json() if "choices" in result and len(result["choices"]) > 0: ai_response = result["choices"][0]["message"]["content"] # 保存 AI 回复到历史 conversation_history[user_id].append({ "role": "assistant", "content": ai_response }) return ai_response else: logger.error(f"API 返回格式异常: {result}") return "抱歉,我这边出了点小问题,请稍后再试。" except Exception as e: logger.error(f"调用 HolySheep API 异常: {str(e)}") return "抱歉,AI 服务暂时不可用,请检查网络连接。" def send_feishu_message(user_id, content): """发送消息给用户(私聊)""" access_token = get_holysheep_access_token() if not access_token: return False url = "https://open.feishu.cn/open-apis/im/v1/messages" headers = { "Authorization": f"Bearer {access_token}", "Content-Type": "application/json" } params = {"receive_id_type": "open_id"} data = { "receive_id": user_id, "msg_type": "text", "content": json.dumps({"text": content}) } try: response = requests.post(url, headers=headers, json=data, params=params) result = response.json() if result.get("code") == 0: logger.info(f"消息发送成功 to {user_id}") return True else: logger.error(f"发送消息失败: {result}") return False except Exception as e: logger.error(f"发送消息异常: {str(e)}") return False def process_message(event): """处理接收到的消息事件""" try: # 解析事件数据 message = event.payload.message user_id = message.sender.sender_id.open_id content = message.content # 解析消息内容 msg_data = json.loads(content) text = msg_data.get("text", "").strip() # 忽略空消息 if not text: return logger.info(f"收到用户 {user_id} 的消息: {text[:50]}...") # 排除"AI:"前缀的消息(防止自己回复自己) if text.startswith("AI:"): return # 调用 AI 获取回复 ai_reply = call_holysheep_api(text, user_id) # 发送回复 send_feishu_message(user_id, ai_reply) except Exception as e: logger.error(f"处理消息异常: {str(e)}") def main(): """主函数:启动 WebSocket 长连接""" logger.info("飞书 AI 机器人启动中...") logger.info(f"HolySheep API URL: {HOLYSHEEP_API_URL}") # 启动 WebSocket 长连接 client = WsClient.Builder( FEISHU_APP_ID, FEISHU_APP_SECRET ).build() # 设置消息处理器 client.register_p2p_message_handler(process_message) # 开始接收消息 logger.info("✅ 机器人已启动,正在等待消息...") logger.info("📱 打开飞书,给机器人发消息试试吧!") client.start() if __name__ == "__main__": main()

4.3 一键启动机器人

代码写完了,现在运行它!双击 main.py 文件,或者在命令行里输入:

python main.py

如果看到类似这样的输出:

2024-xx-xx 12:00:00 - root - INFO - 飞书 AI 机器人启动中...
2024-xx-xx 12:00:00 - root - INFO - HolySheep API URL: https://api.holysheep.ai/v1/chat/completions
2024-xx-xx 12:00:00 - root - INFO - ✅ 机器人已启动,正在等待消息...

说明启动成功啦!

五、测试你的 AI 助手

现在打开飞书 App,找到你的机器人(在"应用"里搜索你的应用名称),给它发一条消息:

你好,请介绍一下你自己

如果一切正常,机器人会在几秒钟内回复你一段介绍。我测试下来响应延迟大概在 800ms-1500ms 左右,因为主要是飞书消息转发和 HolySheep AI 模型响应的总时间,纯 API 调用部分延迟很低。

你可以试试其他问题,比如:

六、进阶功能:添加更多 AI 模型支持

HolySheep AI 支持很多主流模型,我来教你怎么切换。我自己的经验是,不同场景用不同模型效果更好:

修改 call_holysheep_api 函数中的 model 字段即可:

# DeepSeek V3.2 - 性价比之王
"model": "deepseek-chat"

GPT-4.1 - 强大的通用模型

"model": "gpt-4.1"

Claude Sonnet 4.5 - 适合复杂推理

"model": "claude-sonnet-4-20250514"

Gemini 2.5 Flash - 速度快,价格低

"model": "gemini-2.5-flash"

常见报错排查

报错1:requests.exceptions.SSLError 或连接超时

错误信息:HTTPSConnectionPool(host='api.holysheep.ai', port=443): Max retries exceeded

原因分析:网络环境问题,可能是公司防火墙或者代理设置导致无法访问 API。

解决方案

# 方法1:设置代理(根据你的网络环境修改代理地址)
import os
os.environ["HTTP_PROXY"] = "http://127.0.0.1:7890"
os.environ["HTTPS_PROXY"] = "http://127.0.0.1:7890"

方法2:如果是 SSL 证书问题,添加 verify=False(不推荐用于正式环境)

response = requests.post(url, headers=headers, json=payload, timeout=30, verify=False)

报错2:飞书 access_token 获取失败

错误信息:获取 access_token 失败: {'code': 99991663, 'msg': 'app not found'}

原因分析:飞书 App ID 或 App Secret 填写错误,或者应用还没发布。

解决方案

# 1. 检查 .env 文件,确保没有多余的空格或引号

正确的格式:

HOLYSHEEP_API_KEY=sk-holysheep-xxxxxxxx FEISHU_APP_ID=cli_xxxxxxxxxxxxxxxx

2. 确认飞书应用已开启机器人能力

开放平台 -> 你的应用 -> 添加应用能力 -> 机器人 -> 启用

3. 如果是内测阶段,需要在"版本管理与发布"中创建版本并发布

报错3:HolySheep API Key 无效

错误信息:{'error': {'message': 'Incorrect API key provided', 'type': 'invalid_request_error'}}

原因分析:API Key 填写错误或者 Key 已被禁用。

解决方案

# 1. 登录 https://www.holysheep.ai/register

2. 进入控制台 -> API Keys

3. 检查 Key 是否还有效(状态应该是"活跃")

4. 如果 Key 过期,创建一个新的

确认 Key 格式正确,应该以 sk-holysheep- 开头

print(HOLYSHEEP_API_KEY) # 调试用,确认 Key 已加载

报错4:机器人消息没有回复

错误信息:程序正常运行,但发送消息后没有响应

原因分析:WebSocket 连接未建立,或者消息处理函数出错。

解决方案

# 1. 确保机器人已添加到你和机器人的私聊中

飞书 App -> 搜索应用名称 -> 发起会话

2. 检查控制台日志,看是否有错误信息

如果显示 "收到用户 xxx 的消息",说明收到了消息

如果没有这个日志,说明 WebSocket 没连接成功

3. 添加调试日志到 process_message 函数

def process_message(event): print(f"收到事件: {event}") # 调试用 # ... 原有代码

报错5:对话历史导致上下文过长

错误信息:{'error': {'message': 'This model's maximum context length is 64000 tokens'}}

原因分析:对话历史积累太多,超过了模型的上下文限制。

解决方案

# 在 call_holysheep_api 函数中,只保留最近的 N 条消息
def call_holysheep_api(user_message, user_id):
    if user_id not in conversation_history:
        conversation_history[user_id] = []
    
    conversation_history[user_id].append({
        "role": "user",
        "content": user_message
    })
    
    # 原来是保留10条,可以改成5条或者直接清空
    # 只保留最近5轮对话
    messages = conversation_history[user_id][-5:]
    
    # 或者超过20条就清空,重新开始
    if len(conversation_history[user_id]) > 20:
        conversation_history[user_id] = []
        messages = [{"role": "user", "content": user_message}]
        conversation_history[user_id].append({"role": "assistant", "content": "之前的对话已清空,我们可以重新开始!"})


或者直接发送单轮,不带历史(适合简单问答)

messages = [{"role": "user", "content": user_message}]

七、总结与展望

恭喜你!到这一步,你已经成功搭建了一个功能完整的飞书 AI 智能助手。回顾一下我们做了什么:

你可以把这个机器人部署到服务器上,让它 24 小时运行。或者在此基础上添加更多功能,比如:

AI 时代已经来临,拥有自己的 AI 助手不再是程序员的专利。快去试试吧