尧图网络科技YAOTU DIGITAL 获取报价
获取报价
首页 / 资讯中心 / 文章详情

AI应用开发极简路线:从Prompt到Agent实战指南

发布时间:2026/9/28 1:19:18

资讯中心
01
ARTICLE

AI应用开发极简路线:从Prompt到Agent实战指南

AI应用开发极简路线:从Prompt到Agent实战指南
兜兜转转看了一堆“AI应用开发学习路线”要么是几十个视频链接的搬运合集要么是一上来就甩一套 LangChain 源码。真正想动手做点东西的人反而不知道第一步应该落在哪里。这篇文章我打算换一种讲法不谈那些宏大的“人工智能导论”也不扯大模型训练细节就围绕AI 应用开发本身拆出一条极简路线。你不需要数学基础不需要自己训练模型只需要会用 Python、会调接口就能在两周左右做出一个带业务价值的 AI 应用。内容会覆盖四个核心知识点Prompt 工程、上下文管理、Function Calling、RAG 与 Agent。同时我会给出一条可以直接照着练的完整实战案例包含可复制代码和运行说明。新手可以用它入门后端开发也能快速把大模型接入自己的业务。1. AI 应用开发到底在做什么1.1 先搞清楚这不是算法岗很多初学者把 AI 应用开发和算法研究混在一起然后被“神经网络”“反向传播”“分布式训练”这些词劝退。实际上AI 应用开发更接近传统后端开发的延伸。核心工作不是训练模型而是调用大模型 API把模型能力接入具体业务流程。设计 Prompt让模型按预期格式输出结果。管理上下文处理多轮对话和历史记忆。连接外部系统让模型能查数据库、调接口、操作工具。处理模型返回的幻觉、截断、不稳定等问题。换句话说模型是一个已经存在的服务你要做的是把它变成可用的产品功能。1.2 应用开发与大模型的关系当前主流大模型包括 ChatGPT、DeepSeek、通义千问、文心一言、Kimi 等都提供了 HTTP API 接口。开发者只需要按照协议传入消息内容就能拿到模型的回复。这个模式下应用开发的复杂度从“怎么训练模型”转移到了“怎么组织输入、处理输出”。以最常见的对话接口为例一次 API 调用包含两个关键部分messages对话消息列表决定模型看到什么内容。model指定使用哪个模型。应用层要做的事情就是动态构造 messages、解析返回值、循环调用。这也是为什么很多招聘 JD 上写的“AI 应用开发”要求其实不高熟悉 Python/Java了解 HTTP 和 JSON懂得怎么调 API再加一点 Prompt 设计经验就够了。1.3 当前岗位与市场的真实情况“中小自研公司 AI 应用开发岗位多吗”这个问题答案要分两面看。一方面很多公司并没有单独设立“AI 应用开发工程师”这个岗位而是把它并入后端开发或全栈开发。你在面试时看到的要求往往是“熟悉 Spring Boot / Python 后端开发有 AI 应用开发经验优先”。另一方面业务侧对大模型落地的需求确实在快速增加。客服助手、知识库问答、代码辅助、内容生产、自动化流程等场景都需要有人去对接大模型能力。所以我的建议是不要把“AI 应用开发”当成一个脱离后端体系的独立方向。把它当作后端开发的一项核心加分技能学习性价比反而更高。2. 学习前需要具备的能力模型在动手之前先对照一下知识储备。AI 应用开发对基础要求不算高但也不是零基础就能直接上手。2.1 基础能力清单能力项要求说明Python 基础熟悉语法、函数、类、异常处理后端脚本和数据处理都靠它HTTP 请求理解 GET/POST、请求头、响应体大模型 API 本质是 HTTP 接口JSON 处理能解析、构造 JSON 数据API 出入参基本都是 JSON命令行能安装依赖、运行脚本开发调试的基本功API Key 管理知道环境变量和配置文件防止密钥泄漏到代码仓库如果你的 Python 基础还停留在“看过语法”阶段建议先花 3 到 5 天写几个小脚本比如爬取网页、处理 CSV、调用一个第三方天气 API补齐基础能力再进入大模型 API 学习。2.2 学习路径中的五个层次第一层API 调用。学会用代码与大模型对话理解 messages、role、temperature 等基础参数。第二层Prompt 工程。学会通过提示词控制模型的输出格式、风格和准确性。第三层上下文管理。解决多轮对话、长文本、记忆丢失问题。第四层RAG 检索增强。把私有知识库接入模型让模型基于你的资料回答。第五层Agent 智能体。让模型具备调用工具、规划任务、自主决策的能力。这五个层次是层层递进的关系。绝大多数 AI 应用开发岗位的核心技能就在第三层到第五层之间。2.3 框架选型上的一个提醒很多教程一开始就教 LangChain、LlamaIndex、Spring AI 这类框架。我不是说框架没用而是不建议零基础直接学。原因很简单框架抽象了大量细节如果不懂底层逻辑遇到报错会完全不知道从哪里排查。更合理的顺序是先用原生 SDK 读懂一次完整的大模型 API 调用流程再引入框架提升开发效率。3. 环境准备与版本说明本部分给出一个通用的开发环境搭建方案。版本号不建议追求最新稳定即可。3.1 运行环境操作系统Windows 10 / macOS / Linux 均可。Python 版本建议 3.10 及以上。包管理工具pip 或 conda。开发工具VS Code 或 PyCharm。API 服务OpenAI 接口兼容的大模型服务均可例如 DeepSeek、通义千问等文中示例以“自定义 Base URL”方式接入不依赖任何特定服务商。如果你的大模型 API 是 OpenAI 官方接口默认配置即可。如果是国内服务商提供的兼容接口只需要修改base_url和model。3.2 项目依赖在项目根目录创建requirements.txtopenai1.30.0 python-dotenv1.0.0安装命令pip install -r requirements.txt这里使用的openai官方 Python 包并非只能连接 OpenAI 官方服务。只要服务商提供 OpenAI 兼容接口都可以通过配置base_url来接入。这样既方便切换服务商也能复用生态里成熟的 SDK 能力。3.3 环境变量配置在项目目录下创建.env文件OPENAI_API_KEY你的API密钥 OPENAI_BASE_URLhttps://api.deepseek.com/v1 OPENAI_MODELdeepseek-chat如果使用官方 OpenAI 服务可以不填OPENAI_BASE_URL代码默认走官方地址OPENAI_MODEL则按你实际使用的模型名填写。创建.env.example作为团队协作时的模板不要把真实密钥提交到 Git 仓库。3.4 项目结构ai-assistant/ ├── .env # 本地密钥配置勿提交 ├── .env.example # 配置模板 ├── requirements.txt # 依赖清单 ├── ai_tools.py # 工具函数定义 └── main.py # 主程序入口4. 核心原理速览四个关键词在进入实战之前先花一点时间理解 AI 应用开发最常见、也最核心的四个概念。后面的学习路线和代码都围绕它们展开。4.1 Prompt Engineering提示词工程大模型本身是一个概率生成模型输入决定输出。好的 Prompt 能显著提升回答的准确性和格式稳定性。一个实用的 Prompt 通常包含以下要素角色设定告诉模型你希望它扮演什么身份。任务描述明确要求模型做什么。输出约束指定格式、字数、风格。上下文材料提供任务相关的参考资料。边界说明什么情况应该拒绝回答什么情况应该提问澄清。写 Prompt 不是一次就能成功的建议在实际业务中准备一个 Prompt 版本管理目录每轮修改都记录前后效果便于回滚比较。4.2 Context 上下文管理大模型的输入输出长度都有限制。对话记录越长消耗的 Token 越多响应也越慢。上下文管理的核心思路是只把当前任务最需要的对话片段、知识片段传给模型而不是把整个历史记录都无脑拼进请求。常用手段滑动窗口只保留最近 N 轮对话。摘要替换把早期对话总结成一句摘要放入上下文。相关性筛选从知识库中检索出与当前问题最相关的片段。4.3 Function Calling函数调用Function Calling 是大模型与外部系统交互的关键能力。模型本身无法查数据库、无法调接口但可以通过输出结构化的调用指令让程序替它执行。典型流程把可用工具的描述传给模型。模型判断当前问题是否需要调用工具。如果需要模型返回“工具名 参数”。程序执行真实工具函数得到结果。把工具执行结果返回给模型模型据此生成最终回复。这一机制是 AI Agent 的技术基础后面实战案例会完整演示这个过程。4.4 RAG检索增强生成RAG 解决的是“大模型不知道你的私有数据”问题。原理不复杂把知识文档切分为文本块。对每个块做向量化存入向量数据库。用户提问时先从向量库中检索最相关的文本块。将检索到的文本块和问题一起发给模型。模型基于给定的资料生成回答。RAG 适合做企业知识库问答、文档助手等场景。相比重新训练模型RAG 的成本低、更新快是目前应用落地的主流方案。4.5 Agent智能体Agent 可以理解为“增强版的大模型应用”模型作为决策大脑通过调用多个工具完成复杂任务。一个简单的 Agent 至少具备任务理解能力。工具调用能力。多步推理能力。记忆能力。当前学习路线中Agent 属于较高级的阶段建议先用 Function Calling 打好基础再尝试多工具协作、任务规划等进阶玩法。5. 极简学习路线按阶段拆解下面按“周”给出一个参考节奏。基础好的可以压缩时间基础薄弱的可以适当延长关键是每个阶段都要有可运行的产出。5.1 第一阶段API 调用约 1 周学习目标理解 Chat Completion 接口的基本请求格式。能通过 Python 代码发送消息并接收回复。能动态构造 messages 列表模拟多轮对话。核心知识点system、user、assistant三种角色含义。temperature、max_tokens等参数作用。API Key 的安全管理方式。动手练习写一个命令行版翻译工具。写一个固定角色的客服机器人。注意不要止步于“调通了”。要重点实验 system prompt 对输出的影响比如让模型“只回复 JSON”、让模型“遇到不懂就说是不知道”观察输出变化。5.2 第二阶段Prompt 工程约 1 周学习目标掌握结构化 Prompt 的编写规范。学会用 Prompt 控制输出格式、语气和内容边界。核心知识点角色扮演、思维链、Few-shot少样本示例。输出约束的写法。处理模型幻觉的基本策略。动手练习设计一个“简历优化助手”的 Prompt要求输出固定 JSON 结构。设计一个“敏感内容守卫” Prompt要求对于不相关问题拒绝回答并说明原因。建议把常用的 Prompt 模板沉淀成模块方便在多个项目中复用。5.3 第三阶段RAG 检索增强约 2 周学习目标理解文档切分、向量化、检索、重排的基本流程。能实现一个简单的知识库问答应用。核心知识点文本切分策略。Embedding 向量的含义。向量数据库选型生产环境可选 Chroma、Milvus、Qdrant 等初学可用简单相似度检索代替。动手练习把一个 Markdown 文档作为知识库做一个“文档问答机器人”。对比“直接问模型”和“RAG 检索后问答”的效果差异总结原因。这里强调一点RAG 的效果更多取决于文档切分和检索质量不完全取决于模型本身。建议初学阶段先不引入重量级向量数据库用关键词或 TF-IDF 方案跑通流程再逐步替换。5.4 第四阶段Function Calling 与 Agent约 2 周学习目标理解函数调用的完整链路。能接入自定义工具如查天气、查数据库、执行计算。核心知识点tools 参数写法。解析模型返回的 tool_calls。多轮工具调用的循环逻辑。动手练习做一个带“查询时间”“计算器”两个工具的命令行助手。尝试让模型自主决定是否调用工具。这部分是当前应用开发面试的高频点值得多花时间。要弄清楚什么时候模型会触发 tool_calls怎么把工具结果传回模型以及如何避免死循环。5.5 第五阶段工程化与部署约 2 周学习目标掌握 FastAPI 或 Flask 接口封装。掌握流式输出、日志监控、配置管理等工程能力。了解生产环境的安全边界与成本控制。核心知识点异步接口封装。请求日志和 Token 消耗统计。限流、鉴权、Compliance 边界。前后端分离架构中 WebSocket / SSE 的流式方案。动手练习将以上任意一个命令行工具改造成 Web API。增加简单鉴权逻辑与接口调用日志。6. 完整实战案例Function Calling 命令行助手下面这个案例适合在第四阶段练习。它完整展示了 API 调用、上下文管理、工具调用三部分内容代码可以直接复制运行。先强调一下不同服务商对 Function Calling 的支持程度有差异。本文以 OpenAI 兼容接口为例如果你的服务商不支持 tools 参数需要替换为支持该能力的服务。6.1 创建项目结构mkdir ai-assistant cd ai-assistant touch .env requirements.txt ai_tools.py main.py6.2 编写工具函数打开ai_tools.py定义两个工具get_current_time获取当前时间和calculator计算数学表达式。# 文件路径ai_tools.py import datetime import math def get_current_time(): 获取当前本地时间 now datetime.datetime.now() return {result: now.strftime(%Y-%m-%d %H:%M:%S)} def calculator(expression: str): 计算简单数学表达式。 仅支持数字、加减乘除、括号、幂运算等基础表达式。 allowed_chars set(0123456789-*/(). ) if not all(char in allowed_chars for char in expression): return {error: 表达式包含非法字符} try: result eval(expression, {__builtins__: {}}, {math: math}) return {result: result} except Exception as exc: return {error: f计算失败: {exc}} TOOLS [ { type: function, function: { name: get_current_time, description: 获取当前的本地日期和时间不需要参数, parameters: { type: object, properties: {} } } }, { type: function, function: { name: calculator, description: 计算数学表达式例如 12 * 5 3, parameters: { type: object, properties: { expression: { type: string, description: 要计算的数学表达式 } }, required: [expression] } } } ] def call_function(name: str, arguments: dict): 根据模型返回的工具名称和参数执行对应的真实函数 if name get_current_time: return get_current_time() if name calculator: return calculator(arguments.get(expression, )) return {error: f未知工具: {name}}这里有一个需要特别说明的安全点示例中的calculator使用了eval在真实业务里应尽量避免直接执行用户输入。生产环境建议用ast.literal_eval或专用计算库这里仅作演示。6.3 编写主程序打开main.py实现完整的调用流程# 文件路径main.py import json import os from dotenv import load_dotenv from openai import OpenAI from ai_tools import TOOLS, call_function # 加载 .env 环境变量 load_dotenv() def get_client(): return OpenAI( api_keyos.getenv(OPENAI_API_KEY), base_urlos.getenv(OPENAI_BASE_URL, https://api.openai.com/v1), ) def chat(client, messages): model os.getenv(OPENAI_MODEL, gpt-4o-mini) response client.chat.completions.create( modelmodel, messagesmessages, toolsTOOLS, tool_choiceauto, ) return response.choices[0].message def run_conversation(): client get_client() system_prompt ( 你是智能助手。如果你认为用户的问题需要调用工具来解决请使用工具。 调用工具后请结合工具返回的结果组织最终回复。 回复使用简洁、自然的中文。 ) messages [{role: system, content: system_prompt}] print(AI 助手已启动输入 exit 退出。) print(你可以尝试现在几点 计算 (23*4512)/7) while True: user_input input(\n ) if user_input.lower() in [exit, quit]: break messages.append({role: user, content: user_input}) # 工具调用循环模型可能要求连续调用多个工具 for _ in range(5): # 最多循环 5 次防止死循环 message chat(client, messages) messages.append(message) if not message.tool_calls: print(f\nAI: {message.content}) break # 遍历模型要求的工具调用 for tool_call in message.tool_calls: function_name tool_call.function.name arguments json.loads(tool_call.function.arguments) print(f [工具调用] {function_name}({arguments})) result call_function(function_name, arguments) messages.append({ role: tool, tool_call_id: tool_call.id, content: json.dumps(result, ensure_asciiFalse), }) else: print(AI: 工具调用次数过多已终止。) if __name__ __main__: run_conversation()6.4 运行与验证python main.py运行效果示例AI 助手已启动输入 exit 退出。 你可以尝试现在几点 计算 (23*4512)/7 现在几点 [工具调用] get_current_time({}) AI: 当前时间是 2025年03月10日 14:30:22。 计算 (23*4512)/7 [工具调用] calculator({expression: (23*4512)/7}) AI: 计算结果为 149.57142857142858。6.5 结果说明这个案例包含三个关键环节messages.append(message)不能漏掉模型返回的 assistant 消息否则工具调用结果无法正确关联。tool_call_id工具结果必须回传给对应的tool_call_id模型才能理解这是哪次调用的结果。循环结构模型可能多次提出工具调用需求因此需要使用循环直到模型不再返回tool_calls为止。7. 一个极简 RAG 实例为了帮助理解 RAG 的核心流程再给出一个不依赖向量数据库的简易版本。生产环境可以在此基础上替换为向量数据库和 Embedding 模型。7.1 思路与实现思路把文档按段落切分当用户提问时用简单的关键词相似度选出最相关的段落拼接到 Prompt 中再发给大模型。# 文件路径simple_rag.py import os from dotenv import load_dotenv from openai import OpenAI load_dotenv() def load_document(path): with open(path, r, encodingutf-8) as f: text f.read() # 按空行切分为段落 paragraphs [p.strip() for p in text.split(\n\n) if p.strip()] return paragraphs def retrieve(question, paragraphs, top_k2): # 计算每个段落与问题的简单关键词重合度 question_words set(question) scored [] for idx, para in enumerate(paragraphs): score len(set(para) question_words) scored.append((score, idx, para)) scored.sort(keylambda x: x[0], reverseTrue) return scored[:top_k] def ask_with_rag(question, doc_path): client OpenAI( api_keyos.getenv(OPENAI_API_KEY), base_urlos.getenv(OPENAI_BASE_URL, https://api.openai.com/v1), ) paragraphs load_document(doc_path) hits retrieve(question, paragraphs) context \n\n.join([para for _, _, para in hits]) messages [ {role: system, content: 你是一个基于给定资料回答问题的助手。只根据提供的资料作答资料中没有的内容要明确说明不知道。}, {role: user, content: f资料\n{context}\n\n问题{question}}, ] response client.chat.completions.create( modelos.getenv(OPENAI_MODEL, gpt-4o-mini), messagesmessages, ) return response.choices[0].message.content7.2 运行说明准备一个.txt格式的知识文档然后调用print(ask_with_rag(公司的年假制度是什么, knowledge.txt))这个简化版能帮你理解 RAG 的骨架。真正落地时建议把关键词匹配换成向量检索引入sentence-transformers或云厂商的 Embedding 接口再配合向量数据库做大规模检索。8. 常见问题与排查思路8.1 高频问题排查表问题现象常见原因解决思路调用报 401 认证失败API Key 错误或已过期检查 .env 配置确认环境中没有多余空格调用报模型不存在model 名称与服务商不匹配查看服务商文档确认模型标识响应速度太慢上下文过长、模型过大精简 messages、切换更小模型、启用流式输出回复内容被截断max_tokens 设置过小调大 max_tokens或在 Prompt 中要求精简输出工具调用一直不触发tools 描述不清楚检查 description 是否明确确认模型支持 Function Calling多轮对话后回复变差上下文包含干扰信息增加上下文剪裁或摘要逻辑回答内容明显错误模型幻觉添加引用要求、限制回答范围、接 RAG 检索连接频繁超时网络不稳或请求体过大配置重试策略、压缩请求内容8.2 排查工具与技巧建议在开发阶段开启“完整请求日志”包括时间戳。入参 messages 大小。模型返回内容。工具调用详情。Token 消耗。这样能快速定位是 Prompt 问题、上下文问题还是模型能力边界问题。9. 最佳实践与工程建议结合多个 AI 应用项目的落地经验整理出下面几条容易踩坑但值得坚持的建议。9.1 API Key 绝对不能写进代码把密钥写入环境变量或密钥管理平台.env文件加入.gitignore。密钥泄漏的后果不仅是经济损失还可能产生合规风险。9.2 Prompt 工程要版本化Prompt 和普通代码一样会持续迭代。建议用一个prompts/目录存放各类 Prompt遵循“一个场景一个文件”的原则。修改时保留历史版本并记录不同版本的验证结果。9.3 先验证效果再做强封装不要一开始就引入微服务、消息队列、复杂 Agent 编排框架。先用脚本验证模型输出的质量和稳定性确认业务可行后再考虑工程架构。9.4 想清楚模型能力边界大模型适合做内容生成、意图理解、文本分类、总结归纳等任务。对于精确计算、多步规则校验、强一致性的业务应让代码处理而不是指望模型。结合 Function Calling 把模型不擅长的事情交给程序。9.5 安全与合规不能省对用户输入做内容安全检测防止提示词注入攻击。对模型输出做基础校验涉及个人信息、法规内容时设人工审核环节。避免让模型访问无关系统权限所有工具调用遵循最小权限原则。涉及生产环境变更、数据导出的操作要经过合法授权并保留审计日志。9.6 成本控制要前置模型调用成本按 Token 计算失控的主要场景是长对话、密集重试和 Agent 死循环。建议设置单用户单日调用上限。对长文本做摘要压缩。为 Agent 设置最大循环次数和超时时间。将高频固定回复命中缓存减少重复调用。9.7 日志是 AI 应用调试的生命线记录每一次请求和响应之外还要记录“为什么选择这个 Prompt”“为什么触发这次工具调用”。AI 应用比传统应用更依赖可观测性因为错误往往不是崩溃而是“悄悄给出了错误答案”。10. 下一步学习建议这条极简路线的终点其实是一个更广阔的技术世界的起点。当你掌握了 API 调用、Prompt 设计、上下文管理和 Agent 基础之后接下来可以根据你的工作方向做针对性的深入转向 Web 应用开发学习 FastAPI / Flask 接口开发把命令行助手改造成 Web 服务再结合 Vue / React 做一个可视化聊天窗口。转向业务落地调研企业知识库场景把简易 RAG 换成向量数据库方案处理 PDF、Word 等复杂格式的文档解析。转向后端整合如果你在 Java / Spring 技术栈可以关注 Spring AI 等框架把大模型能力整合进现有的 Spring Boot 项目。转向 Agent 编排在多工具协作、任务规划、记忆管理方面继续深入尝试做一个能完成多步骤任务的自动化助手。无论选择哪条路都建议保持“每个阶段都有能运行的产物”这个习惯。AI 应用开发和其他技术方向一样看一百个教程不如亲手调通一次接口。把上面第 6 节和第 7 节的代码跑起来再基于自己的业务场景做一次改造你对 AI 应用开发的理解会比看五篇万字长文更有价值。
02
RELATED NEWS

相关资讯

更多网站建设与数字化升级内容

03
WHY YAOTU

想打造同款高转化官网?

懂行业、懂生意,从建站到增长一站式陪跑

◈

场景化定制

不做模板站,围绕你的业务场景量身设计,小众不撞款。

◐

营销型架构

以转化目标组织内容与路径,让官网真正带来询盘。

▲

全周期服务

设计、开发、运营、运维一体,上线只是开始。

免费获取你的建站方案

留下需求,专属顾问 24 小时内为你输出方案建议。