如何实现程序和 AI 大模型的集成?有哪些方式?
- 标签:后端、编程导航
🏛 业务架构师
程序集成大模型的方式按控制力与成本分档:
- 官方 SDK / HTTP API:最直接,功能最全(各家新特性第一时间可用),但要处理各家的差异——多模型并存时业务代码里会长出一堆 if/else;
- OpenAI 兼容协议:多数国产模型(DeepSeek、通义、智谱)都提供兼容端点——按 OpenAI 格式写一套,多家模型即插即用,是当前性价比最高的接入层;
- 统一框架层(Spring AI / LangChain4j):抽象模型接口,配置切换 provider——防锁定 + 统一治理(重试、降级、监控一处收口);
- 私有化部署(Ollama/vLLM + 开源模型):数据不出域——合规敏感场景(医疗、金融内部知识)的必选项,代价是 GPU 资源与运维能力。
我的集成架构决策:
- 供应商抽象必做:模型能力(chat/embedding)接口化,业务只依赖自己的接口——模型市场每季度都在洗牌,路由层是换模型的止损线;
- 降级链配置化:主模型超时/限流自动切备用模型(国外→国产),AI 服务的可用性 SLA 要靠多供应商保障,单一供应商的限流就是你的业务上限;
- 成本与合规前置:token 计量埋进调用层(按用户/功能统计成本)、敏感数据出域审查——集成方式不只是技术选型,是成本结构与合规边界的定义。
一句话:集成方式的演进方向是——协议标准化(OpenAI 兼容)、供应商抽象化(框架层)、能力商品化(按量付费),业务侧保留随时换模型的自由。
🏗 系统架构师
程序与大模型集成的方式按"控制权由低到高"排:
- HTTP API 直接调用:最原始,OpenAI 兼容的 /chat/completions 接口,自己管重试、超时、密钥、流式解析——学习协议有价值,工程上重复造轮子;
- 官方/第三方 SDK:OpenAI Java SDK、LangChain4j 等,封装请求响应,但各家 API 不统一;
- Spring AI 框架集成(我的选择):ChatModel 抽象 + 自动配置 + Starter,供应商可换,与 Spring 生态(事务、监控、配置中心)无缝;
- 本地模型集成:Ollama/LM Studio/vLLM 部署开源模型,OpenAI 兼容端点接入——数据不出域;
- Function Calling / Tool Calling 协议:不止"调模型",让"模型调程序"——注册工具描述,模型决策调用,程序执行后回填结果,这是 Agent 的基础;
- MCP 标准协议:工具生态的统一接入层,客户端/服务端解耦,跨应用复用工具;
- RAG 集成:Embedding API + 向量库,知识注入而非参数注入。
架构关注点(比方式更重要):
- 流式:LLM 生成慢(秒级),必须 SSE/流式返回,否则用户体验和网关超时都过不去;
- 超时重试:LLM 延迟方差大(P99 可能 30s+),超时要按阶段配(首 token / 全量);
- 成本控制:token 计费,模型分级路由 + 缓存高频问题;
- 密钥治理:统一网关代理 LLM 调用,密钥不落应用。
💻 全栈开发专家
本质就一条路:调大模型的 HTTP API(绝大多数兼容 OpenAI 协议),工程上分四种落地姿势:
1. 直接 HTTP 调用(理解原理用):
java
// POST https://api.openai.com/v1/chat/completions
// body: {"model":"deepseek-chat","messages":[...],"stream":true}
WebClient.create(baseUrl).post().uri("/chat/completions")
.bodyValue(Map.of("model", "deepseek-chat",
"messages", messages, "stream", true))
.retrieve().bodyToFlux(String.class); // SSE 流式2. 官方/三方 SDK:openai-java、各厂商 SDK——封装好但绑死厂商。
3. Spring AI 统一抽象(我的主选):一套 ChatClient API,换模型只换 starter 和配置,还白拿 Advisor/工具/RAG 生态。
4. 本地/私有化部署:Ollama(开发联调)、vLLM(生产级推理服务,OpenAI 兼容 API)——数据不出域时用。
工程上必须处理的四件事(比接入方式更重要):
- 超时与重试:LLM 首 token 延迟 1~5 秒很正常,普通 3 秒超时会误杀,读超时要放宽到 30s+,流式按"两个 chunk 间隔"控制;
- 限流降级:厂商 QPM 配额、429 错误的退避重试、多模型互备;
- Key 管理:环境变量/KMS,绝不进代码库;
- 成本可观测:每次调用记录 prompt/completion token 数,按用户/会话聚合出账单预警。