玩转大模型(四):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_idapp_id token响应模式response_modestreaming/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是随便起的调用者标识用于区分来源。为什么优先 streamingblocking 模式下 Cloudflare 会在100 秒无返回时掐断请求稍长的流程必然超时。可运行的最小版本把 Key 换成你自己的importjson,requests BASE_URLhttps://api.dify.ai/v1# 本地部署改为 http://localhost/v1API_KEY{your-api-key}defstream_dify_workflow(target,modestreaming):urlf{BASE_URL}/workflows/runpayload{inputs:{target:target},response_mode:mode,user:python_request}headers{Authorization:fBearer{API_KEY},Content-Type:application/json}withrequests.post(url,jsonpayload,headersheaders,streamTrue)asr:ifr.status_code!200:print(r.text);returnforlineinr.iter_lines():ifnotline:continue# 中文乱码必须走这一层textline.decode(utf-8).encode(utf-8).decode(unicode_escape)iftext.startswith(data: ):texttext[6:]# 剥离 SSE 前缀try:datajson.loads(text).get(data,{})exceptjson.JSONDecodeError:continueifdata.get(status)succeeded:returndata.get(outputs,{}).get(output)这四个处理是课程现场踩出来的坑少一个都跑不通unicode_escape解中文乱码、剥data:前缀、逐行json.loads包异常、streamTrue保持连接。一次一键生成行业调研报告的真实返回statussucceeded、elapsed_time90.76s、total_tokens9010、total_steps44。90 秒、44 步、9000 token——这三个数字基本就是低代码工作流的成本量级。Coze 侧有个必踩的坑官方 Python 示例直接粘到本地会报错原因是工作流定义了输入变量而示例没传parameters。另外 API 能力必须通过应用发布才启用发布后画布页才有 API 调试入口在 playground 左侧点授权才会自动生成 token。7.2 本地跑一个大模型Ollama满血版 DeepSeek-R1 是 671B全量文件720GB个人别想。但蒸馏版够用——官方开源 26 个模型最小 1.5B10G 显存就能跑蒸馏模型基座R1-Distill-Qwen-1.5B / 7B / 14B / 32BQwen2.5-Math-1.5B / 7B、Qwen2.5-14B / 32BR1-Distill-Llama-8B / 70BLlama-3.1-8B、Llama-3.3-70B-InstructOllama 库里的体积参考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# 首次自动拉取CtrlC 后按上方向键可断点续传ollama listnetstat-ano|findstr11434# 确认服务在跑两个实操细节值得单独说第一别双击安装。默认全进 C 盘模型也会堆进 C 盘。正确做法是在安装包目录的地址栏敲cmd然后OllamaSetup.exe /DIRF:\common_tools\Ollama第二模型目录要单独迁。默认在C:\Users\{用户名}\.ollama\models剪切到 E 盘后新建系统变量OLLAMA_MODELSE:\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 核 8GBUbuntuDify 最低要求 CPU≥2 核、RAM≥4GiB带宽拉满新建安全组开常用端口GPU 推理AutoDL西北 B 区单卡 RTX 4090系统盘 30GB / 数据盘 50GB约 2 元/小时只开放 6006 端口AutoDL 推荐 4090/3090/3080其它卡可能不兼容。Dify 部署版本选择是重点cd/optsudomkdirdifysudochmod-R777/opt/difysudotar-zxvfdify-0.15.5.tar.gzcd/opt/dify/dify-0.15.5/dockersudocp.env.example .envsudodockercompose up-dsudodockercomposeps版本一定用 0.15.5课程原话是新版本本地部署有各种兼容问题。.env里端口默认NGINX_PORT80冲突就改 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 侧AutoDLsource/etc/network_turbo conda create-p/root/autodl-tmp/conda_envs/xinfer_envpython3.10conda activate /root/autodl-tmp/conda_envs/xinfer_env pipinstallxinference[vllm,embedding,rerank,transformers]1.16.0\--extra-index-url https://pypi.tuna.tsinghua.edu.cn/simpleXINFERENCE_MODEL_SRCmodelscope xinference-local--host0.0.0.0--port6006四个要点环境放数据盘系统盘只有 30GBAutoDL 学术加速镜像缺num2words会报错所以要挂清华备用源XINFERENCE_MODEL_SRCmodelscope把模型仓库从 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 显存占比单卡 409024G上 0.6 已经够跑 0.6B 的小模型。每类模型起好后都能用 curl 自测/v1/chat/completions、/v1/embeddings、/v1/rerankrerank 传querydocumentstop_n。接进 Dify 的入口比想象中隐蔽先在插件市场搜 Xinference 并安装插件然后在该插件下分别添加 LLM / 添加 Embedding 模型 / 添加 Rerank 模型——三类模型在同一个插件里按类型分栏配置endpoint 都指向 6006 那个服务地址。能看到模型列表就算通了。Q1为什么 Dify 装 DockerXinference 却直接装在 GPU 服务器上这是课件 v1.2 专门补的问题。Xinference 当然能进 Docker但模型推理需要大量 GPU而 Docker 默认用 CPU 不能用 GPU要让容器用 GPU 得额外装 nvidia-container-toolkit 之类的东西。课程取了省事的那条路Xinference 不进 Docker。Q2Coze 也能私有化值得自己搭吗2025 年 07 月 26 日开源Apache 2.0 可商用48 小时 GitHub 星标 90002 核 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然后改id5 位以上纯数字、全局唯一、上线后别改、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改成 8889docker-compose.yml里的${COZE_LOOP_APP_OPENAPI_PORT}必须保持一致。结论能跑但远不如云托管版本易用和第二篇对 Coze 私有化的评价一致。7.5 成本控制三条能直接照做的建议AutoDL 按上班开机、下班关机管理2 元/小时不是小数目。代价是每次开机要重新conda activatesource /etc/network_turbo 重启 Xinference。腾讯云如果用竞价实例有人出更高价就会把你踢掉。对策是在控制台设定期快照策略实例被释放后能凭快照快速恢复。Dify 不用时docker compose down课件的说法是一键关停所有相关容器干净不残留。最后总结调用侧记住三个差异Dify 用inputsresponse_modeKey 与工作流一一绑定Coze 用parametersworkflow_id/app_id账号级 token。两个平台都要优先走流式Dify 的 blocking 模式 100 秒必超时。本地跑模型已经没什么门槛Ollama deepseek-r1:7b4.7GB 显存级别就能玩。但一定要用命令行指定安装目录并且单独配OLLAMA_MODELS。私有化的正确姿势是三层解耦Dify 进 Docker锁 0.15.5Xinference 直接装在 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 InferenceXinference[8] AutoDL 算力云[9] Cherry Studio 官网本文整理自《尚硅谷大模型智能体线上速成班 V2.0》Day04《企业级大模型部署》课件。课程交付脚本中包含的真实 API Key 与 token 已全部脱敏请勿在任何公开仓库提交明文密钥。