最近AI投资圈又出现一条吸引眼球的消息腾讯又投了一家AI独角兽估值897亿。这类投融资新闻放在新闻客户端里是资本话题放在开发者社区里真正值得追问的是另一个问题一家公司被冠上“AI独角兽”标签之后它的工程团队靠什么把大模型能力变成一天24小时稳定运行的业务系统。答案不是发布会上的演示视频而是一条完整的技术链路。一个能用的AI应用通常要从模型选型和部署开始经过API调用、Agent编排、幻觉治理、性能优化、成本控制最后接入日志监控和合规约束。任何一个环节没打通产品就会停在demo阶段。下面会从零演示如何把一个大模型跑起来完成第一次调用实现一个会用工具的Agent加入RAG检索降低幻觉然后讨论生产环境必须关注的指标和排查方法。适合阅读这篇博客的开发者包括正在做AI应用开发、准备把大模型接入公司业务以及刚接触AI工程化但不想只停在“跑通一个demo”阶段的同学。读完后你会对AI应用从模型到产品的完整路径有一个可操作的认知。1. AI独角兽的估值故事技术侧应该关注什么1.1 模型能力不等于产品能力普通用户看到的“AI独角兽”是模型能写文案、能画图、能回答复杂问题。但工程团队看到的是完全不同的对象每天几万次请求里有多少次返回超时有多少次模型编造了不存在的合同条款工具调用失败后用户看到的提示是什么突发流量下GPU资源够不够账单里的Token消耗是否正常。模型能力解决的是“能不能生成合理内容”的问题。产品能力解决的是“在一套业务规则下能不能稳定、安全、可预期地提供内容”的问题。后者需要工程化手段。一个很好的方法是把AI产品拆成几条线模型能力线、应用代码线、数据线、运维线。模型再强应用代码线没有处理异常分支数据线没有做好检索和更新运维线没有监控产品依然不可用。实际项目中的表现往往是这样demo在本地显卡上跑得很流畅部署到服务器后首Token延迟超过3秒测试时模型回答正确上线后同一个问题换了表述答案完全不同。这些都不是模型“变笨了”而是工程链路没有跟上。1.2 一条可复用的大模型应用技术栈结合大多数AI应用项目的落地形态可以梳理出这样一条技术栈分层应用层业务系统、小程序、Web、客服、内容生成工具 编排层Agent框架、RAG检索、提示词管理、多轮会话状态 推理层OpenAI兼容API、本地推理服务、量化部署、流式输出 模型层开源模型权重、托管大模型服务 平台层日志追踪、监控告警、评测回归、限流、安全过滤每一层都有独立的关注点。模型层决定能力上限推理层决定速度和成本编排层决定模型能不能结合业务数据执行真实任务应用层决定用户体验平台层决定系统能不能长期稳定运行。这套技术栈和普通Web后端有明显的差异。普通后端的大部分逻辑是确定性代码而AI应用的输出不确定所以平台层的评测和监控更加关键。没有评测你就无法判断一次系统变更到底是变好了还是变坏了没有追踪用户报告一个错误回答时你不知道是提示词问题、检索问题还是模型本身问题。1.3 一条能落地的工程主线接下来的章节会沿一条最小可复现的路径推进先搭建一个可用的模型服务可以是本地推理服务也可以是兼容接口的云端API。完成第一次对话调用理解请求参数和返回结构。加入工具调用让模型具备使用外部函数的能力。引入RAG检索让回答基于真实资料而不是模型记忆。最后讨论把Demo推向生产时的指标、成本和排查手段。这条主线不需要你提前具备很深的机器学习理论基础但需要你熟悉Python、命令行并且知道怎么安装依赖。每完成一步都可以用一段代码和一次运行结果验证。2. 先把大模型跑起来选型、部署与最小调用2.1 三种部署形态云端API、私有化部署和混合架构不管项目来自融资新闻里的高估值公司还是一个刚启动的小团队所有AI应用都逃不开一个问题模型跑在哪里。三种常见形态如下表形态适用场景优点代价云端托管API快速验证、原型开发、非敏感业务接入简单不需要GPU按量付费数据会交给服务方长期使用成本随调用量增长私有化部署数据敏感、需要离线可用、深度定制数据不出内网可以针对业务做微调和量化需要GPU资源、推理框架和运维能力混合架构敏感业务和通用业务共存敏感数据走本地通用任务走API灵活平衡成本链路更复杂需要统一网关和路由策略选型时不要只看模型榜单还要考虑三个问题数据能不能出域调用量是否有峰值团队有没有能力维护推理服务。如果只是一天几百次调用云端API通常更划算如果是内部知识库数据安全要求高私有化部署更合适。混合架构看起来先进但管理复杂度会成倍增加。2.2 本地部署开源模型的最小步骤为了后面演示RAG和工具调用这里先介绍本地部署方式。它最大的价值是可以反复调试不需要为每次实验付费。常见做法是使用Ollama这类推理工具它把模型下载、量化、启动和对外提供服务封装成了几条命令。前提条件一台装有Linux或macOS的机器Windows建议使用WSL2。至少有8GB可用内存运行7B参数模型时更稳妥。确认Ollama已经安装具体安装方式以官方文档为准。安装并启动后拉取一个中文场景常用的模型ollama pull qwen2.5:7b ollama run qwen2.5:7b拉取模型的时间取决于网络环境。如果拉取速度很慢不要反复中断先检查磁盘剩余空间和网络连接质量。模型文件通常有几个GB磁盘不足会直接导致失败。模型启动后Ollama会监听本机的11434端口并提供一个类似大模型服务的HTTP接口。可以用命令行先验证一次curl http://localhost:11434/api/generate \ -d {model:qwen2.5:7b,prompt:用一句话介绍你自己,stream:false}返回的JSON里会包含模型生成的文本。这一步通过说明本地推理链路已经打通。这里要注意Ollama更适合学习和开发调试生产环境通常在vLLM这类推理框架上部署目的是获得更稳定的吞吐量和更丰富的监控指标。2.3 通过兼容接口完成第一次模型调用很多大模型服务商都提供了OpenAI兼容接口这意味着你可以用同一套客户端代码去调用不同厂商的模型。本地部署的Ollama也支持这种方式。先安装依赖pip install openai然后创建一个Python脚本示例调用如下from openai import OpenAI client OpenAI( api_keysk-local-noop, # 本地部署时仅用于占位 base_urlhttp://localhost:11434/v1 ) resp client.chat.completions.create( modelqwen2.5:7b, messages[ {role: system, content: 你是一名技术助手回答要简洁。}, {role: user, content: 用一句话解释什么是大模型。} ], temperature0.3, max_tokens300, streamFalse ) print(resp.choices[0].message.content)运行后终端会打印模型的回答。这个代码块里有几个点要理解base_url指向本地服务。如果你在使用某个云端大模型平台把它换成平台提供的接口地址。api_key在本地部署时不一定需要真实密钥但云端调用时必须通过环境变量或密钥管理服务提供不要硬编码在代码里。messages是对话结构system用于设定行为边界user是用户输入。temperature控制随机性max_tokens限制输出长度。2.4 模型调用的关键参数与成本观察同样是“写一段产品文案”把temperature从0.2调到1.0结果可能完全不同。下面这张表总结了常见参数参数含义常见取值范围调大影响调小影响temperature采样随机性0到2输出更发散、更有创造性输出更稳定、更保守top_p核采样概率阈值0到1允许更多候选词参与生成候选词更少结果更集中max_tokens最大输出Token数视模型而定回答可能更长回答易被截断stream是否流式输出true或false用户能更快看到首字等待完整结果感知延迟更高参数没有绝对的对错关键是和任务匹配。抽取合同编号、提炼结构化信息、生成代码这类任务推荐低温参数头脑风暴、广告创意、开放式写作可以适当调高温度和top_p。Token用量直接影响成本和响应速度。一个中文汉字通常会被拆成多个Token输入和输出都会计费。实际项目里第一件事不是看模型回答得好不好而是先记录一次请求消耗了多少Token再估算一个月会产生多少费用。3. 从单次调用到AI Agent让模型会使用工具3.1 为什么单次问答不够用如果你只是用大模型做“一问一答”很多业务场景是跑不通的。用户问“帮我查一下订单状态”模型并不知道订单数据存在哪个数据库里用户问“明天上海适合穿什么”模型没有实时天气数据。单次问答只能使用模型内部的记忆而Agent可以通过工具调用读取真实数据、操作系统接口再把结果回传给模型生成回答。打个比方把单次问答理解成一个只会背书的顾问Agent理解成一个能查资料、能算数、能提交工单的助理。后者的价值在于大模型不需要“记住”每一个细节它只需要学会在什么场景下调用哪个工具。3.2 Agent的五个核心模块一个最小可用的Agent系统通常包含五个模块规划把复杂任务拆解成步骤。记忆保存多轮对话上下文和业务知识。工具对外提供函数、API或数据库查询能力。执行实际运行工具代码把结果返回给模型。反思根据执行结果判断是否还需要下一步操作。这五个模块并不需要一次性全部实现。从能跑通开始先实现“工具调用”这一个能力再逐步加入规划、记忆和反思是更稳妥的路线。3.3 最小工具调用示例工具调用的核心机制是应用先把工具清单发给模型模型根据用户问题决定是否调用工具应用执行工具后把结果追加到对话里再让模型生成最终回答。以天气查询场景为例from openai import OpenAI client OpenAI( api_keysk-local-noop, base_urlhttp://localhost:11434/v1 ) tools [ { type: function, function: { name: get_weather, description: 查询指定城市当前的天气情况, parameters: { type: object, properties: { city: { type: string, description: 城市名例如北京、上海 } }, required: [city] } } } ] messages [ {role: user, content: 北京今天适合穿什么衣服} ] resp client.chat.completions.create( modelqwen2.5:7b, messagesmessages, toolstools, tool_choiceauto ) assistant_msg resp.choices[0].message print(assistant_msg.tool_calls)如果模型判断需要查询天气返回的tool_calls里会包含函数名get_weather和参数{city: 北京}。应用拿到这个结构后执行真实的天气查询代码再把结果追加到messages中发起第二轮调用messages.append(assistant_msg) messages.append({ role: tool, tool_call_id: assistant_msg.tool_calls[0].id, content: 北京今天多云气温12到20摄氏度 }) final client.chat.completions.create( modelqwen2.5:7b, messagesmessages, toolstools, tool_choiceauto ) print(final.choices[0].message.content)这一轮模型会基于工具返回结果生成“建议穿薄外套”之类的回答。工具调用已经成为应用层能力和模型之间的桥梁。3.4 工具调用失败时的回退策略工具调用看起来简单实际项目中会暴露很多边界问题。下表列出了常见异常现象可能原因处理方式模型返回的tool_calls为空工具描述不清或模型判定无需工具检查工具名称和描述必要时强制tool_choice指定工具工具参数解析失败JSON格式不符合预期增加参数校验把解析错误返回给模型重新生成工具执行异常数据库无响应、第三方接口超时捕获异常把错误信息作为工具结果回传模型循环调用同一工具没有设置最大步数限制Agent最多执行N轮超出后返回兜底回答这里的关键是工具调用不是“模型输出正确代码”就结束了而是要把错误信息也当作一种数据回传给模型让它有机会修正。不要把异常直接丢给用户。4. 缓解AI幻觉提示词、上下文和RAG要一起上4.1 AI幻觉的表现与产生原因AI幻觉是指模型生成了看起来合理、但实际没有事实依据的内容。它可能表现为编造不存在的公司名称、引用错误的法条、给出未经验证的医学建议。产生幻觉的原因大致有三类模型训练数据存在截止时间无法覆盖最新信息。模型本身是概率生成器它不知道什么是“事实”只知道什么词更容易出现在一起。用户问题超出了模型知识边界模型为了给出完整回答而强行补全。理解这一点很重要。缓解幻觉不是靠一个参数而是要在提示词、上下文、检索和评测四个方面同时加约束。4.2 提示词模板设计与参数约束提示词模板是成本最低、见效最快的手段。把“回答限制在给定资料内”写清楚能明显减少编造。下面是一个客服场景的模板你是一名电商客服助手。 回答问题前请优先参考如下资料 {context} 用户问题 {question} 要求 1. 只依据资料作答资料中没有的信息直接回答“资料中未提及”。 2. 不要补充资料之外的猜测性内容。 3. 回答控制在200字以内。 4. 如果资料中有多个观点请分别说明。模板里使用{context}和{question}占位符在代码里用真实数据替换。注意模板本身不能保证不产生幻觉但它能给模型一个明确的行为边界。配合低温参数输出会更稳定。4.3 用RAG让模型基于真实资料回答RAG检索增强生成是目前生产环境中使用最广泛的幻觉治理方案。它的思想很简单模型需要回答问题时先从知识库里检索相关内容把检索结果拼进提示词再让模型基于这些内容生成回答。一个最小实现包含四步切分文档、向量化、检索、生成。向量化部分常用Embedding模型把文本转成向量然后通过相似度计算找最相关的片段from sentence_transformers import SentenceTransformer import numpy as np embedder SentenceTransformer(BAAI/bge-small-zh-v1.5) documents [ 公司报销流程员工提交报销单直属领导审批财务复核后打款。, 公司年假标准入职满一年可享受5天年假。, 办公用品申请需要在OA系统提交申请单部门主管审批。 ] doc_vecs