阶段4(下):LangChain 1.x、提示词与注入防护、模型侧(路由/vLLM/LoRA)、AI 编程工具与验证、Dify/Coze 专题
This commit is contained in:
1 parent
caaec830b3
commit
7a32d2c9a6
38 files changed
+3059
-67
No files matched your search
@@ -0,0 +1,82 @@
|
||||
---
|
||||
id: ai.lowcode.dify-coze
|
||||
title: Dify / Coze 低代码 AI 平台:工作流、知识库、自定义工具和与代码开发的分工
|
||||
type: lesson
|
||||
domain: ai
|
||||
stack: [lowcode]
|
||||
tags: [Dify, Coze, 低代码, 工作流, 知识库, 自定义工具, OpenAPI]
|
||||
level: basic
|
||||
prerequisites: [ai.rag.pipeline-chunking]
|
||||
est_hours: 2.5
|
||||
related: [ai.lowcode.scenario.poc-to-production, ai.function-calling.tool-loop, ai.lowcode.interview]
|
||||
week: [13]
|
||||
order: 1
|
||||
---
|
||||
|
||||
# Dify / Coze 低代码 AI 平台:工作流、知识库、自定义工具和与代码开发的分工
|
||||
|
||||
> Dify、Coze 等平台迭代很快,界面和功能以官方文档为准:https://docs.dify.ai/ 、https://www.coze.cn/open/docs
|
||||
|
||||
## 解释说明
|
||||
|
||||
低代码 AI 平台把大模型应用的常见部件做成可视化组件:
|
||||
|
||||
| 部件 | 说明 |
|
||||
| --- | --- |
|
||||
| 应用类型 | 聊天助手、Agent、工作流(Workflow / Chatflow) |
|
||||
| 知识库 | 上传文档 → 自动切分、嵌入、检索(可配置切分规则、混合检索、重排) |
|
||||
| 工作流节点 | 大模型、知识检索、条件分支、代码节点、HTTP 请求、工具、变量处理 |
|
||||
| 工具 | 内置工具 + **自定义工具**(导入 OpenAPI 描述即可调用你的接口) |
|
||||
| 发布 | Web 页面、API、嵌入网页;部分平台可发布到飞书 / 企业微信 / 公众号等渠道 |
|
||||
| 运维 | 对话日志、标注、简单的效果统计 |
|
||||
|
||||
**Dify** 开源、可私有化部署(Docker Compose),适合企业内部;**Coze(扣子)** 是字节的平台,渠道发布方便,也有开源版本(以官方为准)。
|
||||
|
||||
### 和写代码怎么分工?
|
||||
|
||||
| 适合低代码 | 适合写代码 |
|
||||
| --- | --- |
|
||||
| 快速验证想法(PoC)、内部小工具 | 复杂业务逻辑、精细的权限控制 |
|
||||
| 业务人员需要自己调整提示词和流程 | 需要完整测试、评测门禁、版本管理 |
|
||||
| 标准的知识库问答 | 高并发、低延迟、自定义的检索优化 |
|
||||
|
||||
常见的企业做法是**组合**:平台负责编排和界面,核心业务能力用代码实现成接口,作为自定义工具接入平台。这样开发者掌握关键逻辑和权限,业务人员可以调整流程。
|
||||
|
||||
## 案例
|
||||
|
||||
运营团队想要一个“订单查询助手”。开发者用 FastAPI 写了订单查询接口(带 API Key 鉴权和店铺隔离),导出 OpenAPI 描述;运营在 Dify 中创建工作流:意图判断 → 调用订单查询工具 → 大模型组织回复,并接入知识库回答售后政策。两天上线试用,后续根据日志调整提示词。
|
||||
|
||||
## 代码示例
|
||||
|
||||
供 Dify 导入的自定义工具接口(完整版本 [examples/dify-tool-api/app.py](examples/dify-tool-api/app.py),带测试):
|
||||
|
||||
```python
|
||||
app = FastAPI(
|
||||
title="订单查询工具",
|
||||
version="1.0.0",
|
||||
servers=[{"url": "http://127.0.0.1:8100"}], # 导入时需要 servers,部署后改成实际地址
|
||||
)
|
||||
|
||||
|
||||
@app.get("/orders/{order_id}", operation_id="getOrderStatus", response_model=OrderStatus,
|
||||
summary="查询订单状态", description="根据订单号查询订单状态和预计送达时间。订单号形如 A1001。")
|
||||
def get_order_status(order_id: str, shop: str = Depends(auth)) -> OrderStatus:
|
||||
...
|
||||
```
|
||||
|
||||
要点:`operation_id` 会成为工具名;`summary` / `description` 就是模型看到的工具说明,要写清楚;鉴权用 API Key,每个调用方一个 Key,按 Key 隔离数据。在 Dify 中导入 `http://<地址>/openapi.json` 即可。
|
||||
|
||||
## 易错点
|
||||
|
||||
- 自定义工具接口没有鉴权,或者所有调用方共用一个 Key。
|
||||
- OpenAPI 中缺少 `servers`、`operationId`,导入失败或工具名难以理解。
|
||||
- 平台部署在内网,工具接口地址填了 `localhost`(平台容器里的 localhost 不是你的电脑)。
|
||||
- 把复杂业务逻辑都写在代码节点里,无法测试和复用。
|
||||
- 平台中的提示词和流程没有版本记录,改坏了无法回退:定期导出 DSL / 配置并放进 Git。
|
||||
- 私有化部署后忽视升级和安全补丁。
|
||||
|
||||
## 面试常问
|
||||
|
||||
- 用过 Dify / Coze 吗?做过什么?
|
||||
- 低代码平台和自己写代码怎么选?
|
||||
- 怎么把公司已有的接口接入 Dify?
|
||||
Reference in new issue
Block a user