ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

AI大模型应用开发实战:从Prompt工程到多Agent协作系统

AI大模型应用开发实战:从Prompt工程到多Agent协作系统 1. 背景与核心概念AI 浪潮为什么不可避免过去两年AI 领域的变化速度几乎超出了所有人的预期。从大语言模型LLM的快速迭代到 AI 编程助手进入日常开发流程再到 AI Agent 开始承担复杂任务技术演进已经不是“未来趋势”而是正在发生的现实。很多开发者最初只是抱着尝鲜的心态调用一次 API结果发现几个月后AI 已经渗透到代码生成、测试用例编写、文档维护、日志分析、故障排查等几乎所有环节。这篇文章不是泛泛讨论“AI 会不会取代程序员”而是从工程实践角度出发梳理 AI 大模型应用开发中必须掌握的核心概念、环境搭建、代码实现和常见问题。我们会围绕一个真实的项目思路——AI 小镇一个由多个 AI 角色驱动的仿真环境来展开从基础原理讲到一个可运行的多 Agent 协作示例。无论你是刚接触大模型开发的新手还是已经开始用 AI 工具提效的进阶开发者都能从这篇文章中找到可以直接复用的内容。先说清楚几个容易混淆的概念。大语言模型LLM指的是 GPT、Claude、Qwen 这类基于海量文本训练的语言模型它的核心能力是根据输入的文本预测下一个 token从而生成自然语言回复。AI Agent智能体则是以大模型为“大脑”结合工具调用、记忆系统、任务规划等能力能够在特定环境下自主完成任务的程序实体。AI 工程实践覆盖的范围更广包括模型接入、提示词优化、RAG 检索增强、Agent 编排、评测体系、监控告警、成本控制等是让 AI 从“能用”走向“好用”的关键环节。很多人问为什么 AI 的浪潮“不可避免”从技术角度看大模型的能力边界在不断扩展从文本生成到代码理解从多模态识别到复杂推理从工程角度看模型调用成本持续下降开源权重模型让中小团队也能构建自己的 AI 应用从产品角度看用户已经习惯了 AI 带来的效率提升这种预期会倒逼各行业加速落地。对开发者来说重要的不是焦虑而是尽快建立一套系统化的 AI 应用开发方法论。2. 环境准备与开发工具链2.1 运行环境说明在开始实战之前先把环境准备好。AI 应用开发不像传统后端那样只依赖一种语言它通常涉及 Python 脚本、API 调用、数据处理、前端交互等多个层面。本文示例以常见环境为例具体版本需要根据你的项目实际情况调整。操作系统Windows 10/11、macOS 或 Linux 均可本文演示以 macOS/Linux 命令为主Windows 下建议使用 Git Bash 或 WSL。Python 版本建议 3.10 或以上。很多 AI 框架和 SDK 对 Python 版本有最低要求3.10 以下的版本会经常遇到依赖冲突。Node.js如果涉及前端页面或构建工具建议 18 或以上本文不强制要求。IDE推荐 VS Code 或 JetBrains 系列。VS Code 配合 Python 插件和 Jupyter 插件体验很好JetBrains 系PyCharm、IDEA则更适合大型项目重构和调试。包管理工具pip、conda 或 uv选择一个顺手即可。“这不是一篇环境配置专题但环境问题往往是新手最大的拦路虎。”如果你之前没有搭建过 Python 开发环境建议先用 conda 创建独立环境避免不同项目之间的依赖冲突。2.2 模型接入方式大模型的接入方式可以分为三大类调用商业 API国内外的模型服务商都提供 HTTP 接口这种方式最简单按量付费无需关心底层算力适合快速验证和中小流量项目。常见的服务包括 OpenAI 兼容接口、国内大模型厂商开放平台等。调用时注意使用官方 SDK 或标准 HTTP 请求密钥务必放在服务端环境变量中不要硬编码在代码里或提交到公开仓库。部署开源模型使用 vLLM、Ollama、LM Studio 等工具在本地或私有服务器上部署 Qwen、Llama 等开源权重模型。这种方式数据不出内网适合对数据安全要求较高的企业场景但需要准备 GPU 资源并处理推理性能和稳定性问题。云端模型托管平台类似 Hugging Face Inference Endpoints、云厂商的模型服务等本质上是把开源模型做成 API 暴露出来。适合不想自己运维 GPU 又想用开源模型的场景。在后续代码示例中我们统一采用 OpenAI 兼容接口的调用方式因为大多数模型服务商都兼容这一协议便于无缝切换。2.3 安装核心依赖创建一个新目录并安装本实战需要的基础依赖。以下命令在终端中执行mkdir ai-town-demo cd ai-town-demo python -m venv venv source venv/bin/activate # Windows 下使用 venv\Scripts\activate pip install openai pydantic richopenai官方 Python SDK虽然名字是 OpenAI但几乎所有兼容 OpenAI 协议的模型服务都能用它来调用。pydantic用于数据结构校验在 Agent 应用的输出解析中非常实用。rich在终端中渲染漂亮的输出便于观察多个 Agent 的交互过程。另外建议安装 python-dotenv 来管理环境变量pip install python-dotenv然后在项目根目录创建.env文件写入你的模型服务配置API_BASEhttps://your-model-endpoint/v1 API_KEYyour-api-key-here MODEL_NAMEyour-model-name注意这个.env文件不要提交到 git 仓库建议在.gitignore中加入它。API 密钥属于敏感信息一旦泄露可能导致财产损失和数据安全问题。3. 核心原理拆解大模型应用开发的四个关键点3.1 Prompt Engineering与模型对话的正确姿势Prompt Engineering提示词工程是 AI 应用开发中最基础也最重要的能力。同样的模型不同的提示词往往会让输出质量产生巨大差异。先看一个对比示例# 不推荐的提示词 写一首诗。这个提示词过于宽泛模型输出随机性很大。再看推荐的做法你是一名擅长现代诗歌创作的文学编辑。请以“秋天”为主题写一首短诗要求1. 语言简洁2. 有画面感3. 表达一种淡淡的思乡情绪。诗歌不超过8行。好的提示词通常包含几个要素角色设定你是谁、任务目标要做什么、约束条件格式、长度、风格、输入内容可选。在实际工程中我们一般会把提示词做成模板方便复用和迭代。SYSTEM_PROMPT 你是一名资深产品经理擅长从需求描述中提取用户故事和验收标准。 请根据用户的需求描述输出以下内容 1. 用户故事 2. 核心功能点 3. 验收标准 要求使用简洁的中文按 Markdown 格式输出。 USER_INPUT 我需要一个待办事项管理应用支持多清单、提醒和标签功能。把角色、任务、约束写到系统提示词System Prompt中把每次变化的内容放到用户输入User Input中是现代 AI 应用的主流设计模式。提示词也需要版本管理建议存放到独立的prompts/目录中使用 Git 跟踪变更。3.2 Agent 机制从单次对话到自主任务执行大模型本身只是一个“对话引擎”你问一句它答一句。但真实世界中的任务往往需要多步推理、工具调用和记忆管理。这就是 AI Agent 要解决的问题。一个标准的 Agent 循环可以简化为以下几个步骤接收用户意图。由大模型推理出下一步动作调用工具 / 生成回复 / 询问澄清。如果是调用工具则将工具返回值反馈给模型。模型基于新的上下文继续推理直到生成最终回复。以“帮我查一下明天的天气并提醒我带伞”为例传统程序需要硬编码每一个分支而 Agent 可以自主决定先调用天气查询工具再根据结果决定是否生成带伞提醒。多 Agent 协作是在单 Agent 基础上的进一步扩展。AI 小镇项目参考开源项目 my_ai_town的思路就很有意思小镇里的每个角色由一个独立的 Agent 驱动角色之间会有对话、社交、任务协作等行为。每个 Agent 有自己的性格设定、记忆系统和决策逻辑它们在小镇环境中自主运行形成一个微型的“社会仿真”。这种多 Agent 架构非常适合做游戏 NPC 系统、组织流程仿真、社交场景模拟等应用。核心挑战在于如何让多个 Agent 之间的消息传递高效可靠、如何维护每个 Agent 的长期记忆、如何控制总体运行成本。3.3 RAG让模型拥有外部知识大模型的知识截止到训练时间而且无法感知企业内部数据。RAGRetrieval-Augmented Generation检索增强生成是目前最流行的解决方案先把文档切分成片段并向量化存储当用户提问时先检索出相关片段再把这些片段与用户问题一起提交给模型让模型基于给定的资料生成回答而不是凭空发挥。RAG 的基本流程如下用户问题 - 文本向量化 - 向量数据库检索 TopK 相关片段 - 将片段拼入 Prompt - 大模型生成回答这样做的好处是模型回答有依据、可以覆盖私有知识、可以及时更新而无需重新训练模型。RAG 的常见技术栈包括向量数据库如 Milvus、Qdrant、Chroma、 embedding 模型、切分策略等。在 AI 小镇项目中每个角色也可以有“记忆库”通过 RAG 从历史对话中检索相关的记忆片段让角色的反应更加连贯合理。这一点设计很巧妙它模拟了人类“回忆”的过程。3.4 幻觉问题AI 的“一本正经胡说八道”幻觉Hallucination是大模型应用中最让工程师头疼的问题。模型可能用十分自信的语气说出完全虚构的事实、不存在的 API 或错误的计算结果。举个例子如果你直接问模型“某个第三方库的最新稳定版本是多少”模型很可能会给出一个看似合理但实际不存在的版本号。这就是为什么在工程中我们不能直接相信模型生成的代码和配置必须经过人工验证或程序化校验。幻觉产生的原因很复杂包括训练数据质量问题、解码策略的随机性、Prompt 诱导等。缓解幻觉的常用手段包括给出明确的上下文依据要求模型只能基于给定材料回答如果没有相关信息就明确回答“不知道”。降低 temperature 参数减少随机性。引入 RAG让模型有可检索的“事实来源”。对模型输出做校验例如代码类输出可以尝试编译或运行测试。设计反馈回路通过用户纠错数据微调或优化 Prompt。在 AI 工程实践中幻觉问题不可能完全消除但可以通过系统设计将其限制在可控范围。这有点像传统软件开发中的“错误处理”——你无法保证代码永远不报错但你可以保证报错时系统有兜底方案。4. 实战案例构建一个迷你多 Agent 协作系统4.1 需求分析参考 AI 小镇的思路我们来构建一个简化版的多 Agent 协作系统。场景设定为一个“技术编辑部”包含三个角色编辑总控负责接收用户的“选题”并派发给合适的 Agent。技术作者负责根据选题写技术文章大纲。代码审查员负责检查大纲中的技术可行性提出改进建议。这个场景能很好地展示 Agent 之间的分工、消息传递和结果汇总同时每个 Agent 的逻辑都比较简单便于理解。4.2 项目结构ai-town-demo/ ├── .env # 环境变量密钥、模型配置 ├── requirements.txt # 依赖列表 ├── agents/ │ ├── __init__.py │ ├── base_agent.py # Agent 基类 │ ├── editor_agent.py # 编辑 Agent │ ├── writer_agent.py # 技术作者 Agent │ └── reviewer_agent.py # 代码审查员 Agent └── main.py # 主程序负责编排多 Agent 协作流程4.3 核心代码实现先看 Agent 基类。它封装了模型调用的基本逻辑包括读取环境变量、构造消息、调用 API、返回结果。这个基类被后续所有具体 Agent 继承。# 文件路径agents/base_agent.py import os from dotenv import load_dotenv from openai import OpenAI load_dotenv() class BaseAgent: def __init__(self, name, system_prompt, temperature0.7): self.name name self.system_prompt system_prompt self.temperature temperature self.client OpenAI( api_keyos.getenv(API_KEY), base_urlos.getenv(API_BASE), ) self.model os.getenv(MODEL_NAME) self.messages [{role: system, content: self.system_prompt}] def chat(self, user_message): 发送用户消息并获取回复 self.messages.append({role: user, content: user_message}) response self.client.chat.completions.create( modelself.model, messagesself.messages, temperatureself.temperature, ) reply response.choices[0].message.content self.messages.append({role: assistant, content: reply}) return reply def reset(self): 重置对话历史 self.messages [{role: system, content: self.system_prompt}]注意在真实项目中多 Agent 之间共享一个 client 实例效率更高这里为了讲解清晰每个 Agent 单独创建了一个实例。实际部署时可以使用连接池或单例模式优化。接下来实现编辑 Agent。它负责理解用户选题并生成派单指令。# 文件路径agents/editor_agent.py from agents.base_agent import BaseAgent class EditorAgent(BaseAgent): def __init__(self): system_prompt 你是 AI 小镇技术编辑部的总编辑。 你的职责是根据用户提供的选题拆解出需要技术作者完成的任务。 输出格式 选题理解一句话概括 写作方向列出3个要点 派单说明给技术作者的指令 super().__init__(nameeditor, system_promptsystem_prompt, temperature0.7) def dispatch(self, topic): return self.chat(f请针对以下选题进行拆解和派单{topic})然后实现技术作者 Agent。它负责接收编辑的派单指令生成技术文章大纲。# 文件路径agents/writer_agent.py from agents.base_agent import BaseAgent class WriterAgent(BaseAgent): def __init__(self): system_prompt 你是一名技术作者擅长把复杂技术概念讲解得通俗易懂。 你的职责是根据编辑的派单说明生成技术文章大纲。 要求 1. 大纲包含标题、章节结构和每节要点 2. 每节要点不少于 3 条 3. 输出格式为 Markdown super().__init__(namewriter, system_promptsystem_prompt, temperature0.8) def write_outline(self, dispatch_instruction): return self.chat(f请根据以下编辑指令生成文章大纲\n{dispatch_instruction})最后是代码审查员 Agent。它需要从技术可行性角度审查大纲提出修改建议。# 文件路径agents/reviewer_agent.py from agents.base_agent import BaseAgent class ReviewerAgent(BaseAgent): def __init__(self): system_prompt 你是一名资深代码审查员和技术架构师。 你的职责是审查技术文章大纲中的技术方案是否合理、代码示例是否可行。 审查要点 1. 技术选型是否合理 2. 方案是否有明显漏洞或过时内容 3. 是否缺少必要的环境配置说明 4. 是否存在安全风险 输出格式问题清单 改进建议 super().__init__(namereviewer, system_promptsystem_prompt, temperature0.5) def review(self, outline): return self.chat(f请审查以下技术文章大纲\n{outline})4.4 主程序编排 Agent 协作流程主程序的逻辑比较简单创建三个 Agent依次调用把上一个 Agent 的输出作为下一个 Agent 的输入最后输出完整结果。# 文件路径main.py from agents.editor_agent import EditorAgent from agents.writer_agent import WriterAgent from agents.reviewer_agent import ReviewerAgent from rich.console import Console from rich.panel import Panel console Console() def run_ai_town_editorial(topic): # 初始化三个 Agent editor EditorAgent() writer WriterAgent() reviewer ReviewerAgent() # 第1步编辑拆解选题 console.print(Panel(f[bold yellow]用户选题[/bold yellow]{topic}, title选题输入)) dispatch_result editor.dispatch(topic) console.print(Panel(dispatch_result, title编辑派单)) # 第2步技术作者生成大纲 outline writer.write_outline(dispatch_result) console.print(Panel(outline, title技术作者大纲)) # 第3步代码审查员提出建议 review_result reviewer.review(outline) console.print(Panel(review_result, title代码审查员意见)) # 第4步汇总 final_output f## 最终文章大纲\n\n{outline}\n\n## 审查改进建议\n\n{review_result} return final_output if __name__ __main__: topic 如何在大模型应用中设计与实现安全的 RAG 检索链路 result run_ai_town_editorial(topic) print(result)4.5 运行与验证在终端中运行python main.py预期你会看到类似下面的输出流程编辑 Agent 输出选题理解、写作方向、派单说明。技术作者输出一份 Markdown 格式的文章大纲。代码审查员输出问题清单和改进建议。这个流程虽然简单但已经具备多 Agent 协作的核心特征任务分解、角色分工、顺序执行、结果汇总。在实际项目中你可以将顺序执行改为并行执行或者引入循环让审查员的意见再反馈给技术作者进行修订形成“写作 → 审查 → 修订”的迭代闭环。4.6 进一步优化方向上面的示例只用了最简单的“管道模式”实际生产级的多 Agent 系统可以做的优化还有很多引入消息队列如 Redis Stream、RabbitMQ实现 Agent 之间的异步解耦。加入工具调用机制让 Agent 能够查询数据库、调用搜索引擎、执行代码。给每个 Agent 增加向量记忆库让 Agent 能记住历史对话中的关键信息。增加超时与重试机制防止某个 Agent 调用失败导致整个流程卡死。增加人工审核环节在生成结果发布前进行确认。这些优化方向也是 AI Agent 开发中最值得深入研究的内容。5. 常见问题与排查思路在实际开发过程中下面几类问题出现频率最高。这里整理成表格方便遇到问题时快速定位。问题现象常见原因解决思路调用模型 API 时报 AuthenticationErrorAPI Key 无效、过期或未正确设置环境变量检查 .env 文件是否正确加载打印环境变量确认 key 是否存在返回内容包含明显的事实错误模型幻觉导致没有可靠知识来源降低 temperature、引入 RAG、在 Prompt 中要求“不确定就回答不知道”同一输入多次返回结果不一致temperature 过高或模型本身具有随机性降低 temperature必要时设置 seed 参数如果模型支持多 Agent 协作流程运行很慢串行调用多个 Agent每次请求耗时叠加改为并行调用、使用流式输出、优化 Prompt 长度减少 token 消耗Token 消耗量过大导致成本超预期Prompt 太长、历史消息无限累积使用消息截断策略、只保留最近 N 轮对话、对长文档做摘要模型输出格式不稳定解析 JSON 失败模型生成了 Markdown 包裹的 JSON 或格式不合法在 Prompt 中要求只输出 JSON使用 pydantic 做校验或用 JSON Mode模型输出包含偏见或不当内容基础模型本身问题或 Prompt 边界不清晰增加系统级安全规则接入内容审核服务人工抽检本地部署开源模型时显存不足模型参数量过大或推理框架配置不当使用量化版本如 INT8/INT4、调整 batch size、选择更小的模型如果遇到“模型输出格式不稳定”的问题推荐使用 pydantic 定义输出结构再让模型按 JSON Schema 输出这样解析成功率会大幅提升。from pydantic import BaseModel class ArticleOutline(BaseModel): title: str sections: list[str] key_points: dict[str, list[str]] # 解析示例 import json raw_output {title: RAG 实战, sections: [背景, 原理, 实现], key_points: {背景: [a, b]}} parsed ArticleOutline(**json.loads(raw_output)) print(parsed.title)6. 最佳实践与工程建议6.1 提示词工程尽早建立版本管理提示词是 AI 应用的核心资产。建议从项目一开始就用独立的目录存放 Prompt 模板并纳入 Git 管理。每个模板应该包含版本号、变更说明、适用场景、预期效果和回退策略类似传统代码的 CHANGELOG。一个小技巧是先用简单的 A/B 测试评估两个候选 Prompt 的输出质量差异再决定哪个进入正式版本。6.2 安全与合规绝不能放松AI 应用面临的安全风险比传统应用更复杂。主要包括提示词注入Prompt Injection用户可能在输入中嵌入恶意指令试图劫持对话或诱导模型泄露系统提示词。缓解方式是严格区分“系统指令”和“用户输入”对用户输入做过滤和转义并对模型输出做内容安全校验。敏感数据泄露不要将数据库密码、API 密钥、用户隐私数据直接放入 Prompt。模型服务提供商可能会记录请求数据处理敏感数据时要谨慎评估数据出境和数据合规要求。越权访问如果 AI 应用能调用业务系统必须遵循最小权限原则每一个工具调用都经过鉴权不能因为“模型很聪明”就放开权限边界。在 AI 小镇这类项目中如果有用户与 Agent 的自由聊天功能必须加内容审核机制防止模型输出不合规内容。6.3 成本控制把 token 当钱花大模型 API 按 token 计费一次看似简单的对话背后可能是几十万 token 的累计消耗。控制成本的常见手段包括对历史消息做摘要压缩丢弃低价值的历史内容。限制单次回复的最大长度。优先使用更小的模型处理简单任务大模型只处理复杂任务。对长文本先检索再截断不把整篇文档塞进上下文。建立用量监控和告警设置每日消费上限。6.4 评测体系没有评估就没有优化传统开发有自动化测试保障代码质量AI 应用同样需要评测体系。至少要建立以下三个维度准确性输出的答案是否符合预期事实。稳定性相同输入下输出是否有明显波动。安全性是否触犯安全规则。可以准备一批“黄金问题集”每次修改 Prompt 或更换模型后用同一批问题集跑一遍对比质量变化。初期可以用人工评分体量大了再引入 LLM 作为评判者LLM-as-a-judge自动打分。6.5 可观测性让 AI 应用黑盒变白盒AI 应用比传统应用更难调试因为你无法用断点去理解“模型为什么这么回答”。因此日志和追踪尤为重要。建议每个请求都记录输入的 Prompt脱敏后模型参数temperature、max_tokens 等输出结果耗时、token 消耗返回状态码如果使用了多 Agent 流程还需要记录 Agent 之间的消息流转。对应到 AI 小镇项目就是每个角色看到了什么、决定做了什么、输出了什么整个链条都要可视化。这样才能在用户反馈“回答很怪”的时候快速定位根因。7. 总结与学习路线这篇文章从“AI 浪潮不可避免”这个大背景切入梳理了大模型应用开发的核心概念重点拆解了 Prompt Engineering、AI Agent 机制、RAG 和幻觉问题最后通过 AI 小镇的多 Agent 协作场景给出了一个完整可运行的示例。涉及的代码虽然简化但模块划分、职责分离、流程编排的思路可以直接迁移到真实项目中。如果你刚接触这个领域下一步重点是打牢基础学会设计系统提示词、理解模型参数的含义、能够用 Python 调用模型 API 完成简单的文本处理任务。当你对单 Agent 的调用非常熟练之后再去研究工具调用Function Calling、RAG 检索链路和多 Agent 编排框架。社区里已经有不少成熟的开源项目可以参考例如各类 Agent 框架、AI 小镇类仿真项目等但不要只看不练最好的学习方式是选一个感兴趣的场景从零开始写一遍。AI 技术迭代很快今天的主流方案可能半年后就会过时但工程化的思维方式是长期有效的明确边界、控制风险、量化评估、持续迭代。如果这篇教程对你有帮助欢迎收藏备用。实践过程中如果遇到具体报错也可以在评论区描述现象和日志大家一起交流排查思路。
返回列表