这次我们来看一个跟 Coze 扣子 AI 智能体有关的完整实战项目。标题里其实已经交代得很清楚:平台对比、项目搭建、多 Agent 开发、本地 Agent 接入,四件事串成一条从 0 到 1 的路径。它不是一个只教你“创建聊天机器人”的简单教程,而是把智能体从选型、开发到对接真实系统的完整链路走了一遍,所以非常适合想在产品里落地 AI Agent 的同学。
先说这个项目的核心价值在哪里。扣子本身是一个云端 AI 智能体开发平台,重点不是让你从底层训练模型,而是通过智能体、工作流、知识库、插件、多 Agent 这些模块,把大模型变成能真正干活的业务助手。它的门槛很低,因为大部分能力在云端运行,不需要本地 GPU,也不要求你从零写模型训练代码。真正需要动手的部分,反而是“把智能体接入到自己的系统或本地服务”,这也是标题里单列“本地 Agent 接入”的原因。
这篇文章会按照实战思路拆解整个流程:先是扣子平台的核心能力与选型对比,然后从零搭建一个智能体,再进入工作流编排、知识库接入、多 Agent 协作开发,最后重点演示 API 调用、批量任务和本地 Agent 接入方式。无论你是产品经理、后端开发者,还是刚开始接触 AI 应用的内容运营,都能照着这套路径跑完一遍。
1. 核心能力速览
| 能力项 | 说明 |
|---|---|
| 项目类型 | AI 智能体开发平台(云端 SaaS + API 服务) |
| 出品方 | 字节跳动:扣子 Coze |
| 主要功能 | 智能体创建、人设与提示词配置、工作流编排、知识库问答、插件工具调用、多 Agent 协作、发布与 API 对接 |
| 硬件门槛 | 平台本体云端运行,不需要 GPU;浏览器访问即可 |
| 部署方式 | Web 端创建与调试;本地 Agent 接入时需部署本地服务或通过 API 对接 |
| API 能力 | 支持开放平台 API,可用于把智能体/工作流接入自建系统,具体接口路径以官方文档为准 |
| 批量任务 | 可通过 API 逐条调用或脚本化批量处理;平台内置工作流也能承担多步骤任务 |
| 适合场景 | 客服问答、文档知识库、内容生成、数据整理、业务流程自动化和多 Agent 协作 |
| 使用边界 | 涉及隐私数据、人脸声音、版权素材时必须获得授权;生产接入前要做效果和合规复核 |
从这张表能得出一个结论:扣子的核心优势是“快速把大模型包装成可交付的 Agent”,而不是帮你训练模型。它省去了本地环境的折腾,重点在于业务逻辑的编排和系统对接。
2. 适用场景与使用边界
2.1 适合哪些人
第一类是 AI 产品经理或运营人员,需要快速验证“智能体能不能解决某个业务问题”,比如做一个售前客服、文档问答助手、内容创作助手。第二类是后端开发者,想把 Agent 能力通过 API 集成到现有系统里,比如订单查询、工单创建、内容审核。第三类是正在调研多 Agent 架构的团队,扣子的多 Agent 模式很适合先做小范围可行性验证。
2.2 能解决什么问题
典型的例子是:你有一批产品文档、客户常见问题、业务流程说明,想做一个智能客服。传统做法要养一个团队去维护问答库,还要处理各种语义变化。用扣子可以先把文档导入知识库,然后在智能体里配置回复规则和工具调用,让大模型基于检索结果回答。更复杂一点,可以建一个工作流,先让主 Agent 判断用户意图,再分发给不同子 Agent,最后汇总结果输出。
2.3 不适合的场景
需要说明的是,扣子是云端平台,如果你的业务要求完全私有化部署、离线运行、超高并发低延迟,那就需要评估 Dify、FastGPT 这类支持私有化部署的开源方案,或者直接基于本地模型做二次开发。另外,如果业务场景需要非常垂直的领域微调模型,平台自带的通用大模型不一定能满足,必须先用真实数据做充分验证。
2.4 合规边界
涉及图像、音频、视频生成,或者人脸、声音、个人隐私数据的场景,必须确保素材来源合法、对象授权明确。接入 API 时要注意保存好密钥,不要硬编码在公开代码中。发布到微信公众号、飞书、抖音等渠道前,要确认平台的内容规则和用户隐私保护要求。商用之前,一定要对智能体的输出做多轮抽检,避免生成内容越界。
3. 平台对比:扣子、Dify、FastGPT、GPTs 怎么选
很多人第一次接触智能体开发时会纠结选哪个平台。这里给一个比较通用的对比视角,重点看六个维度:部署方式、中文支持、知识库、插件生态、API 开放度、多 Agent 能力。
| 对比维度 | Coze 扣子 | Dify | FastGPT | GPTs |
|---|---|---|---|---|
| 定位 | 云端智能体开发平台 | 可私有化部署的 LLMOps 平台 | 知识库问答与工作流平台 | OpenAI 生态内自定义 GPT |
| 部署方式 | 云端 SaaS | 云服务或自部署 | 云服务或自部署 | 云端,依赖 ChatGPT |
| 中文友好度 | 高 | 中等 | 高 | 中等 |
| 知识库 | 支持文档导入、分段、检索 | 支持多种数据源和 RAG 编排 | 支持知识库与向量检索 | 支持文件引用 |
| 插件/工具 | 插件市场与自定义插件 | 工具调用与 API 接入 | 工作流内工具节点 | Actions 自定义 API |
| 多 Agent | 支持多 Agent 模式 | 支持 Agent 节点编排 | 支持 Agent 与工作流混合 | 较单一 |
| 适合人群 | 快速上线、多渠道发布、中文业务 | 需要私有化或深度定制的团队 | 知识库密集的中文问答场景 | 已经在 ChatGPT 生态中的用户 |
从选型角度给一个参考:如果你要快速做一个中文业务智能体,并且希望直接发布到飞书、微信公众号或通过 API 集成,扣子是很顺手的方案。如果你要求数据不出内网,或者需要把本地部署的大模型直接接进来,Dify 和 FastGPT 的私有化能力更强。如果你本身就是 ChatGPT 深度用户,只想要一个轻量的自定义助手,GPTs 也可以满足。注意,平台的具体付费策略和免费额度会变动,需要以官方实时公示为准。
4. 环境准备与前置条件
4.1 扣子平台侧
扣子本体在云端运行,所以本地硬件基本没有要求。准备步骤如下:
- 注册并登录扣子平台账号。
- 确认账号可以正常访问智能体创建入口。
- 准备一个用于接收 API 请求的个人访问令牌(Token),在开放平台的密钥管理中生成。
- 创建智能体后,在控制台找到智能体 ID 或工作流 ID,后续 API 调用会用到。
如果你只在 Web 端操作,这一步浏览器就够了。
4.2 本地 Agent 接入侧
如果你要把扣子智能体接入本地服务,需要提前准备以下环境:
| 准备项 | 说明 |
|---|---|
| Python 3.9+ | 用于编写本地 HTTP 服务和 API 调用脚本 |
| Node.js | 可选,用于开发自定义插件或前端对接 |
| 本地模型服务 | 可选,比如通过 Ollama 部署本地模型,或自建 HTTP 推理服务 |
| 内网穿透工具 | 常用方案有 cpolar、frp 等,用于把本地 Webhook 暴露成可访问回调地址 |
| 磁盘空间 | 取决于本地模型大小;如果只做 API 对接,基本可忽略 |
| 端口 | 本地服务默认使用 8000 或其他空闲端口,避免与现有服务冲突 |
这里特别提醒一下:本地服务一旦暴露成公网回调地址,必须加访问鉴权,只允许扣子平台请求到达,不允许任何人随意调用。
5. 智能体项目搭建全流程
这一节是整个实战的主线。无论后面要加工作流、多 Agent 还是本地接入,都先从一个基础智能体开始。
5.1 创建智能体
登录扣子平台后,进入智能体管理页面,点击创建智能体。需要填的信息一般包括:
- 智能体名称。
- 功能介绍,简短描述这个智能体要解决什么问题。
- 人设与回复逻辑,也就是系统提示词。
这里最容易犯的错误是“人设写得太大”。比如直接写“你是一个万能助手,能回答任何问题”,这样的智能体没有业务边界,效果很难控制。更稳妥的做法是给智能体定义一个明确的角色、目标、工作流程和限制条件。
5.2 人设与回复逻辑模板
下面是一个面向企业售前客服的通用模板,可以直接当作起点来改。
# 角色与目标 你是一个企业售前智能体,负责解答产品功能、价格套餐和下单流程相关的用户问题。 # 工作流程 1. 先判断用户问题类型:产品功能、价格咨询、下单流程、售后问题。 2. 如果是产品功能问题,调用知识库检索对应产品资料。 3. 如果是价格咨询,优先引用知识库中的价格套餐表。 4. 知识库检索不到时,明确告诉用户需要转人工,不要编造。 # 回复格式 1. 先用一句话概括结论。 2. 再列出关键要点。 3. 最后给出下一步建议。 # 限制 - 禁止编造不存在的价格、功能和优惠活动。 - 涉及退款、投诉、法律合规问题时直接转人工客服。这段模板不是扣子的内置配置,只是一套常见的提示词结构。实际项目中需要根据你的业务文档、常见问题和客户语气进一步调整。调试时如果回复效果差,大多数情况下不是模型不行,而是提示词缺少约束。
5.3 配置模型与调试
在智能体设置中可以选择回复所用的模型。不同模型的推理能力和响应速度有差异,建议先用默认配置跑通,再根据效果调整。调试阶段要重点测这些问题:
- 普通问题是否能按提示词格式回答;
- 知识库相关的问题是否引用了正确资料;
- 超出业务范围的问题是否被正确拦截或转人工;
- 多轮对话中是否记住上下文。
调试完成后,可以把智能体发布到可用的渠道,例如网页应用、飞书、微信公众号、抖音,或者通过 API 方式接入自己的系统。
6. 工作流编排、知识库与插件
基础智能体跑通后,下一步是让智能体具备“流程化处理”能力。这里绕不开三样东西:工作流、知识库、插件。
6.1 工作流:从简单问答到多步骤任务
扣子的工作流采用拖拽式节点编排,常见的节点包括开始、大模型、条件判断、代码、知识库、结束等。一个典型的工作流结构是:
- 开始节点接收用户输入。
- 大模型节点判断用户意图。
- 条件分支决定走哪个后续节点。
- 知识库节点检索业务资料。
- 再次通过大模型节点生成最终回答。
- 结束节点返回结果。
这种编排方式和写代码很像,但不需要自己处理复杂的线程和调用链,适合做业务逻辑的可视化管理。调试时要注意节点之间的数据流:上游节点输出的字段必须和下游节点输入字段匹配,否则会出现“参数类型不匹配”的报错。
6.2 知识库:让智能体拥有业务资料
扣子支持把文档导入知识库,系统会做分段和向量化处理。建议在上传文档前做几步预处理:
- 去除页眉页脚、水印等无关内容;
- 把长文档按章节拆分,保证每个片段语义完整;
- 给不同业务方向的知识库单独命名,方便智能体选择引用;
- 定期更新知识库内容,避免模型引用过期信息。
知识库接入后,验证效果时不能只看回答是否通顺,还要看回答中的关键信息是否来自检索结果。如果经常答非所问,优先调整分段策略和检索方式。
6.3 插件:扩展智能体的行动能力
插件是让智能体从“只会说”变成“能做事”的关键。扣子提供了多种系统插件,例如联网搜索、图像生成、数据处理等。自定义插件则可以把外部 API 封装成智能体能直接调用的工具。
自定义插件的常见场景是:智能体要查询订单状态,但订单数据在本地业务系统里。只要把本地接口封装成插件,智能体就能在对话中触发这个接口并把查询结果返回给用户。插件的请求参数、鉴权方式、返回格式都需要在定义时写清楚,否则智能体无法正确调用。
6.4 代码节点示例
工作流中的代码节点可以写简单的数据处理逻辑。下面是一个通用示例,用于清洗输入文本,实际字段名需要按工作流节点输入定义调整。
# 代码节点内对输入文本做清洗处理 # 实际运行时,字段名以下游节点传入的变量名为准 def main(input_text: str) -> dict: clean_text = input_text.replace('\n', ' ').strip() return {"cleaned_text": clean_text}代码节点适合做格式转换、数据过滤、简单计算,但不适合承载复杂业务逻辑。复杂逻辑建议放到本地服务处理,再通过插件或 API 调用。
7. 多 Agent 开发实战
多 Agent 是扣子开发中比较进阶的内容,也是标题里单独列出的重点。简单说,多 Agent 就是让一个主智能体负责接收用户请求,进行意图识别和任务拆解,然后把不同任务分发给多个子智能体,最后把子智能体的结果汇总返回给用户。
7.1 典型多 Agent 结构
| 层级 | 角色 | 职责示例 |
|---|---|---|
| 入口 | 主 Agent | 判断用户意图、拆解任务、分发请求、汇总结果 |
| 执行 | 知识问答 Agent | 负责文档检索和知识类问题回答 |
| 执行 | 数据处理 Agent | 调用代码节点或工作流完成数据计算 |
| 执行 | 外部服务 Agent | 查询订单、创建工单、调用第三方系统 |
| 出口 | 结果整合 Agent | 将多个子 Agent 的结果合并成统一格式 |
7.2 开发步骤
第一步,先把每个子 Agent 单独创建并调试通过,确保子 Agent 在独立状态下能完成自己的任务。第二步,再创建主 Agent,把子 Agent 挂到主 Agent 下面。第三步,在主 Agent 的提示词里明确规定“什么情况下调用哪个子 Agent”。这里的关键是职责边界要写清楚,否则两个子 Agent 会互相抢答或都不回答。
7.3 多 Agent 常见问题
- 子 Agent 互相推诿。原因通常是主 Agent 的指令不够具体,需要在提示词中加入“如果问题属于 A 类则只调用 A,禁止自行回答”这样的约束。
- 上下文丢失。多 Agent 协作时,要确保主 Agent 给子 Agent 传入了用户原始问题,而不是一段被压缩后的摘要。
- 响应时间变长。每多一个 Agent 调用环节,整体响应时间都会增加。不要为了“多 Agent”而多 Agent,简单场景单 Agent 就够了。
7.4 多 Agent 与工作流的关系
在扣子里,工作流更像是“确定的流程”,多 Agent 更像是“动态的决策”。实际项目中可以把两者结合:主 Agent 做意图判断,工作流承载固定流程,子 Agent 处理需要模型理解的任务。一个比较稳妥的做法是先用工作流把能确定的部分跑通,再把需要模型决策的部分交给多 Agent 处理。
8. 本地 Agent 接入全流程
“本地 Agent 接入”是标题里另一个重点。这里有两种理解方向:一是把扣子智能体的能力通过 API 接入到本地应用;二是把本地已有的工具、知识库、模型服务接入到扣子智能体中,让智能体拥有调用本地资源的能力。两者在实战中经常一起出现。
8.1 方案一:扣子做大脑,本地服务做手
这是比较推荐的一种方式。智能体负责对话理解和任务规划,本地服务负责真正的业务执行。比如智能体收到用户“帮我创建一个工单”的请求后,调用一个 Webhook 把请求发到本地接口,本地服务写入数据库后返回工单号。
本地服务可以用 FastAPI 快速实现:
# 本地服务示例:接收扣子插件请求并返回业务结果 # 实际业务逻辑需要按项目需求开发,并做好鉴权 from fastapi import FastAPI, Request import uvicorn app = FastAPI() @app.post("/api/work-order") async def create_work_order(req: Request): data = await req.json() # 这里写本地系统的处理逻辑,例如写入数据库或调用内部接口 return {"status": "ok", "order_id": "LOCAL-2025-001"} if __name__ == "__main__": uvicorn.run(app, host="0.0.0.0", port=8000)本地服务写完并启动后,使用内网穿透工具生成一个公网可访问的回调地址,然后在扣子平台创建自定义插件,把接口路径、请求方法、参数和鉴权配置填进去。这样当智能体决定调用该插件时,请求就会通过回调地址到达你本地的业务系统。
这套方案的优点是:模型能力、工作流、多 Agent 都交给扣子,业务系统改造成本低。缺点是:本地服务必须 7x24 小时可用,否则智能体调用会失败。生产环境要加可用性监控和失败重试。
8.2 方案二:通过 API 把扣子能力接入本地应用
这种方式适合你已经有一个 App 或 Web 系统,想直接把扣子智能体作为后台机器人的情况。整体流程是先获取访问令牌,找到智能体 ID,再调用开放平台 API。这里提供一个通用调用模板,实际接口路径和参数名需要以官方开放平台文档为准:
import requests # 以扣子开放平台 API 为例,具体路径以官方文档为准 url = "https://api.coze.cn/v3/chat" headers = { "Authorization": "Bearer <你的访问令牌>", "Content-Type": "application/json", } payload = { "bot_id": "<智能体ID>", "user_id": "user_test_001", "additional_messages": [ { "role": "user", "content": "请根据知识库说明产品的收费标准", "content_type": "text", } ], } response = requests.post(url, headers=headers, json=payload, timeout=60) print(response.status_code) print(response.json())如果在本地跑这个脚本,注意安装 requests 库。调用后观察返回状态码和内容,能正常拿到回复就说明 API 链路已打通。
8.3 方案三:本地模型与扣子混合编排
如果你本地已经部署了模型服务,希望部分推理在本地完成,可以考虑混合编排。扣子负责整体对话流程和任务分发,本地模型负责离线环境下的私有知识问答。这种架构下,扣子通过自定义插件调用本地模型服务,并在提示词中说明“这是一个离线问答服务”。
混合架构最大的问题是链路更长,响应时间和稳定性都需要重点测试。如果只是偶尔用本地模型,不建议在正式环境直接串进主流程,可以先用 API 批量脚本做效果对比。
9. 接口 API 与批量任务
智能体调试完成后,接 API 是把它变成真实产品的关键一步。通过 API,你可以让智能体处理来自自己系统的消息,也可以把智能体生成能力嵌入到现有工作流中。
9.1 API 调用通用流程
- 获取访问令牌;
- 找到智能体 ID 或工作流 ID;
- 构造请求,传入用户输入参数;
- 解析返回结果;
- 处理错误与限流。
在编码时建议把 Token 和 ID 放到环境变量或配置文件中,不要直接硬编码在脚本里。
9.2 批量任务脚本示例
批量任务是 API 接入最常见的需求。比如你有一批历史工单描述,想用智能体自动生成回复初稿。可以先把问题列表放到一个文本文件中,然后逐条调用接口,保存结果并记录失败项。
import requests import json import time from pathlib import Path # 示例配置:实际以官方文档和你的账号信息为准 API_URL = "https://api.coze.cn/v3/chat" HEADERS = { "Authorization": "Bearer <你的访问令牌>", "Content-Type": "application/json", } BOT_ID = "<智能体ID>" def call_agent(content: str, user_id: str = "batch_worker"): payload = { "bot_id": BOT_ID, "user_id": user_id, "additional_messages": [ { "role": "user", "content": content, "content_type": "text", } ], } resp = requests.post(API_URL, json=payload, headers=HEADERS, timeout=120) resp.raise_for_status() return resp.json() def main(): inputs = Path("questions.txt").read_text(encoding="utf-8").strip().splitlines() results = [] for i, line in enumerate(inputs, 1): try: data = call_agent(line) results.append({"index": i, "question": line, "response": data}) print(f"[{i}/{len(inputs)}] OK") except Exception as exc: results.append({"index": i, "question": line, "error": str(exc)}) print(f"[{i}/{len(inputs)}] FAIL: {exc}") # 预留限流间隔,具体频率以官方限制为准 time.sleep(0.5) Path("batch_results.json").write_text( json.dumps(results, ensure_ascii=False, indent=2), encoding="utf-8", ) if __name__ == "__main__": main()批量任务工程化时有三点建议:第一,每条任务记录原始输入和对应输出,方便回溯;第二,失败任务不要直接丢弃,单独保存到错误文件;第三,控制并发,避免触发限流。如果一次要处理几千条数据,建议先跑 50 条做耗时估算,再决定夜间任务还是分批跑。
9.3 接口调用中的错误处理
常见状态码和处理思路大致如下:
| 状态码 | 可能情况 | 处理思路 |
|---|---|---|
| 401 | 鉴权失败 | 检查 Token 是否正确、是否过期、请求头格式 |
| 404 | 接口路径或 ID 错误 | 核对官方文档和智能体 ID |
| 429 | 触发限流 | 降低并发,增加退避重试 |
| 5xx | 平台服务异常 | 记录错误日志,稍后重试 |
10. 资源占用与性能观察
因为扣子是云端平台,所以本地跑智能体基本不存在显存占用。浏览器打开控制台就能开发,API 调用也只需要网络请求。真正的性能观察点集中在三个方面:智能体响应耗时、批量任务吞吐量、本地接入链路稳定性。
| 观察点 | 方法 | 优化方向 |
|---|---|---|
| 单次回复响应时间 | 记录请求开始时间和返回时间 | 检查模型选择、工作流节点数量、知识库检索耗时 |
| Token 消耗 | 查看平台调用统计 | 精简提示词长度、压缩历史上下文、减少无关工具调用 |
| 批量任务成功率 | 脚本日志和结果文件 | 降低并发、增加失败重试、处理超时 |
| 本地回调稳定性 | 本地服务日志和隧道状态 | 本地服务做守护进程,隧道失效自动重连 |
| 多 Agent 响应耗时 | 看主 Agent 分发到子 Agent 的链路 | 精简子 Agent 数量,必要时让主 Agent 直接给出答案 |
如果你在本地部署了模型服务,才需要关注 CPU 和 GPU 占用。本地模型的显存占用取决于模型大小、量化方式和推理参数,没有统一数字,必须以你自己的实际部署环境为准。优化的通用思路是:优先用量化模型降低显存,控制上下文长度,减少并发请求数。
11. 常见问题与排查方法
| 问题现象 | 可能原因 | 排查方式 | 解决方案 |
|---|---|---|---|
| 智能体回答不符合预期 | 提示词缺少约束或业务边界模糊 | 查看调试记录,逐轮测试问答 | 重写人设与回复逻辑,增加限制条件 |
| 知识库检索不到资料 | 文档分段不合理、检索方式不匹配 | 查看回答中的引用片段 | 调整分段策略,更换检索方式,补充文档 |
| 工作流节点报错 | 上、下游字段类型不匹配 | 查看工作流调试日志 | 按上游输出字段调整下游输入参数 |
| 多 Agent 不按规则分发任务 | 主 Agent 的职责描述不够准确 | 检查对话过程中的角色分配 | 给每个子 Agent 增加严格的触发条件和兜底回复 |
| API 鉴权失败 | Token 无效或请求头格式错误 | 检查返回状态码和鉴权头 | 重新生成 Token,核对官方文档 |
| 本地回调地址不通 | 隧道失效、本地服务未启动、地址过期 | 检查本地日志和隧道状态 | 重启本地服务,重新生成回调地址 |
| 批量任务大量失败 | 并发过高或触发限流 | 查看错误码分布 | 降低并发,增加退避重试 |
| 发布到飞书或微信后收不到消息 | 发布配置或回调权限未设置 | 检查发布日志和回调配置 | 按官方开发文档配置权限和回调地址 |
排查时一个有用的习惯是:把每次异常请求的入参、出参、状态码、时间点都记录到日志里。没有日志,很多问题只能靠猜,效率很低。
12. 最佳实践与使用建议
第一,先做最小闭环。不要一上来就把工作流、知识库、多 Agent、本地接入全部铺开。先做一个只包含“用户提问 + 大模型回答”的智能体,跑通后再逐步加部件。每一步加完都要重新测试,确认新加的功能没有破坏老功能。
第二,提示词要做版本管理。每次修改提示词后,把版本和对应的表现记录到文档或 Git 仓库。这样当智能体行为发生回退时,可以快速定位是哪一次改动导致的。
第三,知识库要精细化管理。不同业务方向的知识库分开建,上传前清理无关内容。定期检查文档是否需要更新,避免智能体引用过期数据。
第四,本地服务安全边界要严格。自定义插件回调本地接口时,必须在本地校验请求来源和令牌。不要把本地服务和数据库直接暴露到公网,只要是公网可访问的接口,就要按生产环境安全标准对待。
第五,多 Agent 不要为了拆而拆。一个复杂任务拆成多个子 Agent 后,响应时间一定会变长,排查难度也会增加。建议先用单 Agent 加工作流实现,遇到明显瓶颈时再引入多 Agent。
第六,商用前做合规审核。涉及人脸、声音、肖像、版权素材、用户隐私数据的场景,必须确认授权链条完整。智能体批量生成的对外内容,要加入人工抽检流程,防止模型出现错误输出。
13. 总结与下一步
这套实战内容最值得尝试的地方,是它把智能体开发从“在网页里问问题”推进到了“接 API、做批量任务、连本地系统”的真实使用阶段。建议你按照本文的顺序走一遍:先创建基础智能体,再导入一份真实业务文档做知识库问答,接着跑通一个工作流,最后用 API 脚本做一次批量调用。整个过程不需要 GPU,也不需要写复杂后端,只要有一台能跑 Python 的电脑就能开始。
最容易踩的坑有三个:一是提示词写得太泛,导致智能体没有业务边界;二是知识库文档没有预处理,检索命中率低;三是本地回调地址没有做鉴权就暴露到公网,存在安全风险。先做好这三件事,后面扩展多 Agent 和本地接入会顺很多。
后续可以继续深入的方向包括:把智能体发布到飞书或微信公众号形成完整产品;用自定义插件对接公司内部系统,比如工单、CRM 和数据库;以及把本地模型、扣子工作流和批量任务结合起来,搭建一条自动化内容处理流水线。建议收藏备用,等真正开始搭项目时,按第 5 章到第 9 章的步骤逐步推进,不要把知识库、多 Agent、API 一次性堆在一起。