阶段4(下):LangChain 1.x、提示词与注入防护、模型侧(路由/vLLM/LoRA)、AI 编程工具与验证、Dify/Coze 专题

This commit is contained in:
Shikui Wang committed 2026-10-23 16:15:33 +08:00
1 parent caaec830b3
commit 7a32d2c9a6
38 files changed
+3059 -67

No files matched your search

@@ -0,0 +1,80 @@
---
id: ai.lowcode.scenario.poc-to-production
title: 从 Dify 原型到生产:哪些留在平台、哪些改成代码
type: scenario
domain: ai
stack: [lowcode, fastapi, rag]
tags: [PoC, 低代码, 私有化部署, 自定义工具, 迁移, 评测]
level: intermediate
prerequisites: [ai.lowcode.dify-coze]
est_hours: 2
related: [ai.lowcode.interview, ai.agent-ops.scenario.agent-quality-gate]
week: [13]
---
# 从 Dify 原型到生产:哪些留在平台、哪些改成代码
## 业务背景与问题
业务部门用私有化部署的 Dify 搭了一个“合同条款问答”原型,两周内在部门内部很受欢迎,准备推广到全公司。评估时发现:
1. 知识库是所有合同混在一起,没有按部门和密级做权限;
2. 回答效果没有量化,改提示词全凭感觉;
3. 某些问题需要查合同管理系统的实时状态,平台的 HTTP 节点直接写了系统的内部账号;
4. 用户量扩大 20 倍后,平台的响应变慢。
## 约束
- 业务部门希望继续能自己调整提示词和流程。
- 合同属于敏感数据,权限必须严格。
## 方案设计
1. **能力拆分**:
- 留在平台:对话流程编排、提示词、界面、通用知识(公开的制度);
- 改成代码服务:**带权限的合同检索**(按用户部门和密级过滤,见 [RAG 权限场景](../../rag/scenarios/permission-aware-kb.md))、合同系统查询(用户身份透传),以自定义工具接入平台。
2. **评测**:从原型的对话日志中整理 100 条问题和标准答案,形成评测集;每次修改提示词后通过 API 批量调用平台应用跑评测。
3. **配置版本化**:定期导出应用配置(DSL)存入 Git,修改前后对比。
4. **性能**:自定义工具服务独立扩容;平台按官方文档做多实例部署;高频问题加缓存(注意权限维度)。
5. **退出路径**:如果平台无法满足(例如需要复杂的多 Agent 和人工审批),核心服务已经是独立代码,迁移到 LangGraph 的成本可控。
## 关键代码
通过 API 批量调用平台应用做评测(Dify 应用 API 的路径和参数以官方文档为准,示意):
```python
async def ask(client: httpx.AsyncClient, question: str, user: str) -> str:
r = await client.post(
f"{DIFY_BASE}/v1/chat-messages",
headers={"Authorization": f"Bearer {APP_API_KEY}"},
json={"inputs": {}, "query": question, "user": user, "response_mode": "blocking"},
timeout=60,
)
r.raise_for_status()
return r.json()["answer"]
results = await asyncio.gather(*(ask(client, c["q"], "eval-bot") for c in CASES))
report = score(CASES, results) # 复用 Agent 评测专题中的打分和门禁逻辑
```
自定义工具接口示例:[examples/dify-tool-api](../examples/dify-tool-api/)。
## 取舍
| 选择 | 优点 | 缺点 |
| --- | --- | --- |
| **平台编排 + 代码服务(本方案)** | 业务可自助调整,关键逻辑可控 | 两套系统,要定义清楚边界 |
| 全部留在平台 | 最快 | 权限、评测、性能受平台能力限制 |
| 全部重写为代码 | 完全可控 | 失去业务自助能力,开发周期长 |
## 易错点
- 在平台的 HTTP 节点中写死系统账号和密钥。
- 原型的知识库直接用于全公司,没有权限。
- 评测时用的平台应用版本和线上不一致。
- 推广前没有压测。
## 面试怎么讲
> “Dify 原型验证了需求之后,我做的是拆分:流程、提示词和界面留在平台,让业务自己调;带权限的合同检索和合同系统查询写成代码服务,用用户身份调用,再作为自定义工具接入。用原型日志整理了评测集,通过平台的 API 批量跑;平台配置定期导出进 Git。这样既保留了低代码的效率,权限和质量又在我们控制之下。”