ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

玩转大模型(四):Python 调用工作流,到 Dify + Xinference 私有化部署全流程

玩转大模型(四):Python 调用工作流,到 Dify + Xinference 私有化部署全流程

玩转大模型(四):Python 调用工作流,到 Dify + Xinference 私有化部署全流程

💡第四天是整门课里工程密度最高的一天:先用 Python 把 Coze 和 Dify 的工作流接进自己的程序,再把整套服务从云端搬到自己的服务器上。

低代码平台搭完不是终点。你要接进现有系统,要过数据合规这一关,要算清楚长期 API 账单和自建机器的成本,最后都绕不开"部署"这两个字。

这篇把可运行的调用代码、踩过的坑、服务器配置和完整命令一次列全,照着敲就能跑通。


7. 从平台回到代码:API 调用与私有化部署

低代码平台搭完不是终点。要接进自己的系统、要过数据合规这关,还得回到工程侧。这一天信息密度最高。

7.1 两个平台的调用差异,一张表看完

维度DifyCoze
端点POST https://api.dify.ai/v1/workflows/runPOST https://api.coze.cn/v1/workflow/stream_run
调用方式裸 HTTP 即可官方 SDKpip install cozepy(也可裸 HTTP)
入参字段inputsparameters
必填标识API Keyworkflow_id+app_id+ token
响应模式response_mode:streaming/blocking只有流式
事件类型workflow_started/node_started/node_finished/iteration_next/workflow_finishedMESSAGE/ERROR/INTERRUPT(可 resume)
密钥作用域Key 与工作流绑定,一个 Key 只能访问特定工作流账号级 PAT,一个 token 可跑多个工作流

最后一行是设计哲学差异:Dify 是"应用维度授权",Coze 是"账号维度授权"。做多工作流集成时,Dify 要管一堆 Key。

Dify 的请求体:

{"inputs":{},"response_mode":"streaming","user":"abc-123"}

user是随便起的调用者标识,用于区分来源。为什么优先 streaming:blocking 模式下 Cloudflare 会在100 秒无返回时掐断请求,稍长的流程必然超时。

可运行的最小版本(把 Key 换成你自己的):

importjson,requests BASE_URL="https://api.dify.ai/v1"# 本地部署改为 http://localhost/v1API_KEY="{your-api-key}"defstream_dify_workflow(target,mode="streaming"):url=f"{BASE_URL}/workflows/run"payload={"inputs":{"target":target},"response_mode":mode,"user":"python_request"}headers={"Authorization":f"Bearer{API_KEY}","Content-Type":"application/json"}withrequests.post(url,json=payload,headers=headers,stream=True)asr:ifr.status_code!=200:print(r.text);returnforlineinr.iter_lines():ifnotline:continue# 中文乱码必须走这一层text=line.decode("utf-8").encode("utf-8").decode("unicode_escape")iftext.startswith("data: "):text=text[6:]# 剥离 SSE 前缀try:data=json.loads(text).get("data",{})exceptjson.JSONDecodeError:continueifdata.get("status")=="succeeded":returndata.get("outputs",{}).get("output")

这四个处理是课程现场踩出来的坑,少一个都跑不通:unicode_escape解中文乱码、剥data:前缀、逐行json.loads包异常、stream=True保持连接。

一次"一键生成行业调研报告"的真实返回:status=succeeded、elapsed_time=90.76s、total_tokens=9010、total_steps=44。90 秒、44 步、9000 token——这三个数字基本就是低代码工作流的成本量级。

Coze 侧有个必踩的坑:官方 Python 示例直接粘到本地会报错,原因是工作流定义了输入变量而示例没传parameters。另外 API 能力必须通过"应用发布"才启用,发布后画布页才有 API 调试入口,在 playground 左侧点"授权"才会自动生成 token。

7.2 本地跑一个大模型:Ollama

满血版 DeepSeek-R1 是 671B,全量文件720GB,个人别想。但蒸馏版够用——官方开源 2+6 个模型,最小 1.5B,10G 显存就能跑:

蒸馏模型基座
R1-Distill-Qwen-1.5B / 7B / 14B / 32BQwen2.5-Math-1.5B / 7B、Qwen2.5-14B / 32B
R1-Distill-Llama-8B / 70BLlama-3.1-8B、Llama-3.3-70B-Instruct

Ollama 库里的体积参考:deepseek-r1:1.5b1.1GB、:7b4.7GB、:14b9.0GB、:32b20GB、:70b43GB、:671b404GB。:7b的实际规格是arch qwen2 · parameters 7.62B · quantization Q4_K_M。

ollama run deepseek-r1:7b# 首次自动拉取,Ctrl+C 后按上方向键可断点续传ollama listnetstat-ano|findstr11434# 确认服务在跑

两个实操细节值得单独说:

第一,别双击安装。默认全进 C 盘,模型也会堆进 C 盘。正确做法是在安装包目录的地址栏敲cmd,然后:

OllamaSetup.exe /DIR=F:\common_tools\Ollama

第二,模型目录要单独迁。默认在C:\Users\{用户名}\.ollama\models,剪切到 E 盘后,新建系统变量OLLAMA_MODELS=E:\ollama\models(变量名固定),重启客户端,用ollama list验证——列表为空说明配置没生效。

选型上 Ollama 支持 CPU/GPU 混合推理,把内存与显存之和当作"总内存空间"看。671B 量化后 404GB,课程的建议是内存+显存 500GB 以上才考虑,因为还要预留上下文缓存。

7.3 为什么要私有化:五个理由

维度第三方 API企业级部署
安全合规敏感数据外泄风险数据掌握在企业手中
成本预算高频调用成本不可控成本可预测(服务器+运维)
能力可控黑箱与版本漂移推理性能、模型版本可定制
可靠性延迟、吞吐不可控内网低延迟,弹性扩缩容
运维治理模型服务不透明,难定位故障服务可观测,支持故障定位

"版本漂移"这个词值得记住——第三方悄悄换版本导致你的系统行为变了,你还查不到原因。

目标架构是三层解耦:

应用层 Dify → 标准 OpenAI-compatible API → 模型推理层(Xinference/vLLM) → GPU

好处除了技术解耦,还有运营治理:统一鉴权、限流、审计,独立监测QPS、TTFT、TPS、GPU 利用率。

推理引擎选型:

引擎定位结论
Ollama个人/本地,最简单,效率低不适合高并发
llama.cppCPU / 边缘企业级不考虑
vLLMPagedAttention、P/D 分离,支持英伟达/AMD/昇腾、多卡高并发首选
SGLang面向应用编排、结构化生成,合并复用减少推理次数特定场景
HF TEI嵌入模型专用—
Xinference托管平台,LLM/Embedding/Rerank 通吃(杭州未来速度科技)课程最终选择

选 Xinference 的三条理由我认为是这套方案里最值得抄的部分:统一 API 一个链接管多模型;底层接 vLLM 所以推理性能有保障;嵌入和重排只需一次前向、开销很小,用一个平台管所有模型运维成本最低。

7.4 服务器选型与踩坑清单

用途平台配置备注
Dify腾讯云轻量服务器4 核 8GB,UbuntuDify 最低要求 CPU≥2 核、RAM≥4GiB;带宽拉满,新建安全组开常用端口
GPU 推理AutoDL西北 B 区单卡 RTX 4090系统盘 30GB / 数据盘 50GB,约 2 元/小时,只开放 6006 端口

AutoDL 推荐 4090/3090/3080,其它卡可能不兼容。

Dify 部署(版本选择是重点):

cd/opt&&sudomkdirdify&&sudochmod-R777/opt/difysudotar-zxvfdify-0.15.5.tar.gz&&cd/opt/dify/dify-0.15.5/dockersudocp.env.example .envsudodockercompose up-dsudodockercomposeps

版本一定用 0.15.5,课程原话是"新版本本地部署有各种兼容问题"。.env里端口默认NGINX_PORT=80,冲突就改 8100。起来后应该看到3 个业务服务(api/worker/web)+ 6 个基础组件(weaviate/db/redis/nginx/ssrf_proxy/sandbox),数量不对就是有问题。访问http://{ip}/install设管理员账号。

Windows 本地部署 Dify 的路径类似:装 Docker Desktop →必须重启电脑→ 拉代码(或直接用课件给的dify-0.15.5.tar.gz)→ 复制.env→docker compose up -d。课程特别提醒:首次 up 大概率因网络或镜像缺失报错,再敲一遍命令重跑就行。

镜像拉不动是最高频故障,配/etc/docker/daemon.json:

{"registry-mirrors":["https://docker.m.daocloud.io","https://docker.1panel.live","..."]}

然后systemctl daemon-reload && systemctl restart docker。Docker 起不来按这个顺序查:systemctl status docker→systemctl unmask docker.service→systemctl start containerd→ 重装containerd.io。

Xinference 侧(AutoDL):

source/etc/network_turbo conda create-p/root/autodl-tmp/conda_envs/xinfer_envpython=3.10conda activate /root/autodl-tmp/conda_envs/xinfer_env pipinstall"xinference[vllm,embedding,rerank,transformers]==1.16.0"\--extra-index-url https://pypi.tuna.tsinghua.edu.cn/simpleXINFERENCE_MODEL_SRC=modelscope xinference-local--host0.0.0.0--port6006

四个要点:环境放数据盘(系统盘只有 30GB);AutoDL 学术加速镜像缺num2words会报错,所以要挂清华备用源;XINFERENCE_MODEL_SRC=modelscope把模型仓库从 HuggingFace 换成魔搭;--port默认 9997,这里必须改成 6006,因为 AutoDL 只放通 6006,改完浏览器才能直接访问 WebUI。

三类模型分别 launch:

# LLMxinference launch --model-engine vllm --model-name qwen3 --size-in-billions 0_6\--model-format pytorch--quantizationnone --model-uid Qwen3-0.6B\--gpu_memory_utilization0.6--max_model_len1024--endpointhttp://localhost:6006# Embeddingxinference launch --model-name bge-small-zh-v1.5 --model-type embedding--endpointhttp://localhost:6006# Rerankxinference launch --model-name bge-reranker-base --model-type rerank--endpointhttp://localhost:6006

注意--gpu_memory_utilization是 vLLM 显存占比,单卡 4090(24G)上 0.6 已经够跑 0.6B 的小模型。每类模型起好后都能用 curl 自测:/v1/chat/completions、/v1/embeddings、/v1/rerank(rerank 传query+documents+top_n)。

接进 Dify 的入口比想象中隐蔽:先在插件市场搜 Xinference 并安装插件,然后在该插件下分别"添加 LLM / 添加 Embedding 模型 / 添加 Rerank 模型"——三类模型在同一个插件里按类型分栏配置,endpoint 都指向 6006 那个服务地址。能看到模型列表就算通了。

Q1:为什么 Dify 装 Docker,Xinference 却直接装在 GPU 服务器上?

这是课件 v1.2 专门补的问题。Xinference 当然能进 Docker,但模型推理需要大量 GPU,而 Docker 默认用 CPU 不能用 GPU;要让容器用 GPU 得额外装 nvidia-container-toolkit 之类的东西。课程取了省事的那条路:Xinference 不进 Docker。

Q2:Coze 也能私有化,值得自己搭吗?

2025 年 07 月 26 日开源,Apache 2.0 可商用,48 小时 GitHub 星标 9000+,2 核 4GB 内存就能跑,门槛确实低。组件是 Coze Studio(可视化开发)+ Coze Loop(运维与生命周期)。

gitclone https://gitee.com/shkstart/coze-studio.git copy .env.example .envdockercompose--profile'*'up-d# 首次 5~10 分钟# http://localhost:8888

模型配置是复制模板改字段:copy backend\conf\model\template\model_template_ark_doubao-seed-1.6.yaml backend\conf\model\ark_doubao-seed-1.6.yaml,然后改id(5 位以上纯数字、全局唯一、上线后别改)、api_key、model。接本地 Ollama 则是base_url填http://host.docker.internal:11434。

但两个坑我得提前说:Coze Loop要求 Go SDK ≥1.23.4,而且课程实测git clone方式启动服务总报错,建议直接下 zip;端口冲突要同时改两处——.env里的COZE_LOOP_APP_OPENAPI_PORT改成 8889,docker-compose.yml里的${COZE_LOOP_APP_OPENAPI_PORT}必须保持一致。结论:能跑,但远不如云托管版本易用,和第二篇对 Coze 私有化的评价一致。

7.5 成本控制:三条能直接照做的建议

  • AutoDL 按"上班开机、下班关机"管理,2 元/小时不是小数目。代价是每次开机要重新conda activate+source /etc/network_turbo+ 重启 Xinference。
  • 腾讯云如果用竞价实例,有人出更高价就会把你踢掉。对策是在控制台设定期快照策略,实例被释放后能凭快照快速恢复。
  • Dify 不用时docker compose down,课件的说法是"一键关停所有相关容器,干净不残留"。

最后总结

  • 调用侧记住三个差异:Dify 用inputs+response_mode,Key 与工作流一一绑定;Coze 用parameters+workflow_id/app_id,账号级 token。两个平台都要优先走流式,Dify 的 blocking 模式 100 秒必超时。
  • 本地跑模型已经没什么门槛:Ollama +deepseek-r1:7b,4.7GB 显存级别就能玩。但一定要用命令行指定安装目录,并且单独配OLLAMA_MODELS。
  • 私有化的正确姿势是三层解耦:Dify 进 Docker(锁 0.15.5),Xinference 直接装在 GPU 服务器上(AutoDL 只放通 6006,端口必须改),三类模型用同一个 Xinference 插件接进 Dify。
  • 成本靠习惯控制:AutoDL 上下班开关机、竞价实例配定期快照、Dify 不用就docker compose down。

本系列:第一篇 大模型概述与选型 / 第二篇 RAG 与低代码智能体 / 第三篇 Coze & Dify 工作流案例集 / 第四篇 API 调用与私有化部署。

参考资料

[1] Dify 官网
[2] Dify 0.15.5 Release - GitHub
[3] Coze 扣子官网
[4] Coze Studio - GitHub
[5] Ollama 模型库
[6] DeepSeek-R1 蒸馏模型 - HuggingFace
[7] Xorbits Inference(Xinference)
[8] AutoDL 算力云
[9] Cherry Studio 官网

本文整理自《尚硅谷大模型智能体线上速成班 V2.0》Day04《企业级大模型部署》课件。课程交付脚本中包含的真实 API Key 与 token 已全部脱敏,请勿在任何公开仓库提交明文密钥。

RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进