从零起步学习AI大模型应用开发 || 第一章:AI应用开发核心技术栈全解析(从工具调用到智能Agent)

27 阅读17分钟

image.png

随着大语言模型(LLM)技术的爆发,AI应用从“闲聊问答”走向“企业级落地”,核心突破口在于解决LLM“知识过期、幻觉生成、无法联动业务系统”的痛点。

那么AI应用开发到底是在做什么?又要学习哪些技术栈呢?这些技术栈又分别起着什么作用呢?因为获取信息的渠道五花八门,可能绝大多数人都还是迷迷糊糊。

本文将系统梳理AI应用开发中最关键的6大核心概念——Prompt Engineering、Function Call、MCP、向量数据库、RAG、Agent,以“底层赋能→工具调用→知识增强→支撑载体→智能升级”为逻辑线,结合Java后端开发视角,讲清每个技术的定义、作用、实战要点及相互关联,帮你快速搭建AI应用开发的完整技术框架

一、底层基础:Prompt Engineering(提示工程)——AI技术的“指挥棒”

所有AI上层技术(Function Call、RAG、Agent等)的落地效果,均依赖底层的Prompt Engineering。它是连接开发者与LLM的“桥梁”,决定了LLM能否精准理解意图、遵循规则、高效联动其他技术,是AI应用开发的核心底层能力。

1.1 定义

Prompt Engineering(提示工程)是通过精准设计自然语言指令,引导大语言模型(LLM)完成指定任务的技术。核心是用清晰、结构化的方式,向LLM传递“任务目标、执行规则、输出要求、约束条件”,解决LLM“理解偏差、输出失控、逻辑混乱”的问题,本质是AI时代的“自然语言编程语法”。

1.2 核心价值:贯穿全技术链的底层支撑

Prompt Engineering并非独立技术,而是渗透在所有上层技术中,决定其发挥效果:

  • Function Call/MCP:引导LLM精准判断“是否调用工具、调用哪个工具、传递什么参数”,避免误调用或参数错误;
  • RAG:强制LLM基于检索到的参考资料回答,不编造、不遗漏关键信息,最大化RAG的事实性增强价值;
  • 向量数据库:间接优化检索效果(通过提示重写模糊问题,生成精准检索词,提升向量相似度匹配度);
  • Agent:定义Agent的任务拆解逻辑、工具调用优先级、异常处理规则,是Agent自主决策的“核心规则集”。

1.3 三大核心设计原则

企业级AI应用的提示设计,无需复杂话术,只需遵循以下三大原则,即可大幅提升LLM输出质量:

  1. 清晰性:目标明确、无模糊表述,明确任务边界、输入输出格式,避免“大概、尽量”等词汇,让LLM无歧义理解需求;
  2. 结构化:按“角色定义→任务规则→输入信息→输出要求”分层设计,用分点、模块化格式呈现,降低LLM解析成本;
  3. 约束性:明确禁止行为(如不编造、不泄露敏感信息)、异常处理方式,与RAG、权限控制形成双重保障,解决LLM幻觉问题。

1.4 Java后端实战技巧

作为Java后端开发者,需用工程化思维设计提示,适配企业级开发的可维护性与扩展性:

  • 模板工程化:将提示模板抽离为yml/properties配置文件或数据库,通过Spring Boot动态加载,避免硬编码,支持规则热更新;

    提示词模板配置文件(application.yml)

    resources目录下创建,按业务场景分类管理模板:

    # 提示词模板配置
    llm:
      prompt:
        # Java问题解答模板
        java-qa: |
          角色:你是一名资深Java后端架构师,擅长解决Java/Spring Boot相关问题。
          约束:
          1. 回答必须简洁、实用,只讲核心方案,不冗余;
          2. 优先给出代码示例,再补充文字说明;
          3. 仅回答与Java相关的问题,非Java问题请提示"仅支持Java相关问题"。
          问题:{{question}}
          回答格式:
          【核心方案】:xxx
          【代码示例】:xxx
        # 日志分析模板
        log-analysis: |
          角色:你是一名运维专家,擅长分析Java后端日志错误。
          任务:分析以下日志内容,输出错误类型、原因和解决方案。
          日志内容:{{logContent}}
          输出格式:JSON字符串,包含errorType、reason、solution三个字段。
        # RAG知识库问答模板
        rag-qa: |
          基于以下上下文回答问题,严格遵守:
          1. 仅使用上下文信息,不编造内容;
          2. 若上下文无相关信息,回答"暂无相关信息";
          3. 回答语言简洁,不超过200字。
          上下文:{{context}}
          问题:{{question}}
          回答:
    
  • 动态拼接提示:通过Java代码动态注入工具列表、参考资料、用户场景等变量,适配不同业务场景,无需编写多个固定模板;

  • 框架集成:借助LangChain4j等Java版AI框架,使用标准化Prompt模板工具,简化拼接、上下文管理逻辑,无缝融入Spring Boot生态;

  • 日志迭代优化:记录LLM的输入提示与输出结果,分析误调用、幻觉等问题,逐步强化提示规则,形成闭环优化。

二、工具调用:LLM联动外部系统的两大核心方式

LLM的原生能力局限于训练数据内的知识,要对接企业业务系统(数据库、内部API),需通过工具调用突破边界。目前主流的两种方式为Function Call(原生能力)和MCP(通用协议),适配不同场景需求。

2.1 Function Call:模型原生的工具调用能力

2.1.1 定义

Function Call(函数调用)是OpenAI、Anthropic等大模型自带的核心能力,允许LLM解析用户自然语言需求后,自动判断是否调用预设外部函数,按指定格式传递参数,最终基于函数执行结果生成回答。

2.1.2 核心作用

  • 打破LLM“闭门造车”局限,实现实时业务数据处理(如数据库查询、API调用、文件生成);
  • 降低开发门槛,无需设计复杂协议,通过模型SDK即可快速实现LLM与业务系统联动。

2.1.3 Java后端实战要点

以对接OpenAI GPT为例,核心流程为:定义函数描述(告知LLM函数名、参数、用途)→ 接收LLM的函数调用指令→ 执行Java业务函数(如数据库CRUD)→ 将结果回传给LLM生成最终回答。关键依赖为模型SDK(如OpenAI Java SDK),代码逻辑简洁,适合单一模型场景。

2.2 MCP:跨模型的工具调用标准

2.2.1 定义

MCP(Model Context Protocol,模型上下文协议)是Anthropic推出的开源通用协议,为LLM与外部工具的交互制定“统一接口标准”,类似AI领域的“USB-C”,实现不同模型与工具的即插即用

2.2.2 核心作用

  • 核心解决的问题:没有 MCP 时,调用不同工具(如数据库、API、向量库)需要写不同的适配代码;有了 MCP,只需遵循统一协议,大模型就能无缝调用任意兼容 MCP 的工具。

  • 应用场景

    • 让大模型通过 MCP 调用你的 Java 后端微服务(如订单服务、用户服务)。
    • 让大模型通过 MCP 访问向量数据库、文件系统、第三方 API(如天气、支付)。
  • Java 开发者的关注点:无需深入协议底层实现,重点关注如何基于 LangChain4j/Java 对接 MCP 兼容的工具(目前主流大模型 / 框架已逐步支持 MCP,如 OpenAI、LangChain)。

2.2.3 与Function Call的核心区别

维度Function CallMCP
定位模型原生功能跨模型通用协议
适配成本单一模型低,多模型高多模型场景下成本极低
耦合度与具体模型SDK强耦合与模型解耦,专注业务逻辑

三、知识增强:RAG(检索增强生成)——解决LLM事实性痛点

即使通过Function Call/MCP实现工具调用,LLM仍存在“知识过期”“幻觉生成”问题(如无法回答新业务规则、编造企业制度)。RAG技术通过检索企业私有知识库,为LLM提供实时、准确的参考资料,从源头解决该问题。

3.1 定义

RAG(Retrieval-Augmented Generation,检索增强生成)的核心逻辑是:先从企业私有知识库中检索与用户问题相关的精准信息,再将这些信息作为“参考资料”喂给LLM,让LLM基于真实数据生成回答,而非单纯依赖训练数据。

3.2 核心作用

  • 解决知识时效性:接入实时更新的企业文档、数据库,让LLM“懂最新的业务”;
  • 消除幻觉:强制LLM基于检索到的真实资料回答,从源头减少无依据编造;
  • 降低成本:无需对LLM进行昂贵的微调,只需更新知识库即可让LLM掌握新知识。

3.3 核心工作流程(Java后端主导)

RAG分为“离线构建知识库”和“在线检索生成”两个阶段,全流程可无缝集成Spring Boot技术栈:

阶段 1:离线构建知识库(Java 后端主导)

这一步是 RAG 的基础,目的是把非结构化的文档(如 PDF 手册、Word 文档、Markdown 笔记)转化为可检索的结构化数据。

  1. 文档加载(Load)

    • 功能:把企业内部的文档(如《员工手册.pdf》《产品 API 文档.md》)读取到系统中。
    • Java 实现:使用工具库(如 Apache PDFBox、POI)解析不同格式的文档,提取纯文本内容。
    // 示例:用PDFBox读取PDF文档
    PDDocument document = PDDocument.load(new File("员工手册.pdf"));
    PDFTextStripper stripper = new PDFTextStripper();
    String text = stripper.getText(document); // 提取PDF中的纯文本
    document.close();
    
  2. 文档切分(Split)

    • 功能:把长文本切成小块(Chunk) (比如 500 字 / 块,保留重叠上下文)。因为 LLM 有上下文窗口限制,且小块文本检索更精准。
    • 核心原则:切分时要保证语义完整(比如按段落、按章节切,不要把一个完整的知识点切散)。
    • Java 实现:自定义切分逻辑,或使用 LangChain4j(Java 版 LangChain)的RecursiveCharacterTextSplitter工具。
    // LangChain4j示例:切分文本为500字的块,重叠50字
    TextSplitter splitter = RecursiveCharacterTextSplitter.builder()
        .chunkSize(500)
        .chunkOverlap(50)
        .build();
    List<String> chunks = splitter.split(text);
    
  3. 向量化与存储(Embed & Store)

    • 功能:把每个文本块转化为向量(Embedding) (计算机能理解的数字表示),然后存入向量数据库。

    • 关键工具:

      • 向量化模型:如 BERT、text-embedding-ada-002(OpenAI)、m3e-base(中文开源)。
      • 向量数据库:如 Milvus、Pinecone、Chroma、Elasticsearch(支持向量检索)。
    • Java 实现:调用向量化模型 API 生成向量,再写入向量数据库。

    // 示例:用LangChain4j生成向量并存入Chroma
    EmbeddingModel embeddingModel = new OpenAiEmbeddingModel("your-api-key");
    ChromaStore chromaStore = new ChromaStore("http://localhost:8000");
    // 为每个文本块生成向量并存储
    for (String chunk : chunks) {
        Embedding embedding = embeddingModel.embed(chunk);
        chromaStore.add(new TextSegment(chunk, embedding));
    }
    

阶段 2:在线检索生成(用户交互阶段)

当用户提出问题时,RAG 的在线流程启动,核心是 “检索相关资料→辅助 LLM 生成回答”。

  1. 用户问题向量化(Query Embed)

    • 功能:把用户的自然语言问题(如 “员工年假天数怎么算?”)转化为和知识库相同格式的向量。
  2. 相似性检索(Retrieve)

    • 功能:在向量数据库中,计算用户问题向量与所有文本块向量的相似度,返回最相关的 Top-N 个文本块(比如 Top3)。
    • 核心逻辑:向量相似度越高,说明文本块和用户问题的相关性越强。
    // 示例:检索与用户问题最相关的3个文本块
    String userQuery = "员工年假天数怎么算?";
    Embedding queryEmbedding = embeddingModel.embed(userQuery);
    List<TextSegment> relevantSegments = chromaStore.findRelevant(queryEmbedding, 3);
    
  3. 构建提示词(Prompt Construction)

    • 功能:把用户问题 + 检索到的相关文本块拼接成一个新的提示词,传给 LLM。

    • 示例 Prompt:

      参考资料:
      1. 员工手册第5章:入职满1年不满10年的员工,年假天数为5天;满10年不满20年的,年假10天;满20年的,年假15天。
      2. 补充说明:年假天数按自然年计算,当年未休完的年假可结转至次年一季度。
      
      问题:员工年假天数怎么算?
      请基于参考资料回答,不要编造内容。
      
  4. LLM 生成回答(Generate)

    • 功能:LLM 基于拼接好的提示词,生成有依据、无幻觉的回答。
    • Java 实现:调用 LLM 的 API(如 GPT-4、通义千问),传入构建好的 Prompt。
    // 示例:用LangChain4j调用GPT-4生成回答
    ChatLanguageModel model = new OpenAiChatModel("your-api-key");
    String prompt = "参考资料:\n" + relevantSegments + "\n问题:" + userQuery + "\n请基于参考资料回答";
    String answer = model.generate(prompt);
    System.out.println(answer);
    // 输出:入职满1年不满10年的员工年假5天,满10年不满20年的10天,满20年的15天。年假按自然年计算,未休完可结转至次年一季度
    

与模型微调的选型建议

90%的企业级问答场景优先选RAG:仅当需要LLM深度适配特定任务(如代码风格、专属业务规则)时,再考虑成本高昂的模型微调。

四、支撑载体:向量数据库——RAG的核心动力源

RAG的核心是“高效的语义检索”,而传统关系型数据库(MySQL、PostgreSQL)无法完成这一任务——向量数据库专为存储、管理、检索向量设计,是RAG架构落地的核心支撑。

4.1 定义

向量数据库是专门用于存储、管理和检索“向量(Embedding)”的数据库。向量是将文本、图片等非结构化数据通过模型转换后的固定长度数字列表,语义越相似的内容,向量距离越近。

4.2 核心作用

  • 高效语义检索:内置近似最近邻(ANN)算法(如HNSW),可在毫秒级从百万/亿级向量中找到最相似结果,传统数据库无法实现;
  • 支撑RAG架构:是RAG知识库的核心存储载体,所有文本块的向量均依赖其管理;
  • 混合查询能力:支持“向量相似度+元数据过滤”(如“检索来自《员工手册》且与年假相关的内容”),提升检索精准度。

4.3 与传统数据库的核心差异

维度向量数据库(Milvus、Chroma)关系型数据库(MySQL)
存储对象向量+元数据结构化数据(表、行、列)
查询方式语义相似度查询精准条件查询(=、>、<)
核心算法ANN算法B+树、哈希索引
适用场景RAG、图片检索、推荐系统业务数据存储、交易系统

4.4 Java后端选型建议

  • 企业级私有化部署:优先选Milvus(性能强、支持大规模数据);
  • 已有PostgreSQL架构:优先选pgvector扩展(无缝融入现有生态,学习成本低);
  • 快速原型开发:选Chroma(轻量开源,Docker一键启动)。

五、智能升级:Agent(智能体)——复杂任务的端到端解决方案

Function Call、MCP、RAG解决的是“单一任务”的工具调用或知识增强问题,而企业场景中更多是“复杂多步骤任务”(如“生成2025年Q3销售报告并对比Q2趋势”)。Agent技术将AI应用从“被动回答”升级为“主动解决问题”,集成所有前置技术形成闭环。

5.1 定义

Agent(智能体)是“LLM+工具调用+任务规划+记忆机制”的集成框架,能够自主感知用户目标、拆解复杂任务、调用外部工具、执行决策并完成目标——相当于给LLM配上了“大脑(规划能力)”和“手脚(工具)”。

5.2 核心架构(四大组件)

组件作用Java实现方式
感知模块理解用户目标意图LLM的NLU能力+Prompt工程
规划模块拆解复杂任务为子步骤LLM思维链(CoT)+LangChain4j规划工具
工具模块调用外部资源执行子任务MCP/Function Call+Java业务接口
记忆模块存储任务执行过程信息向量数据库(上下文记忆)+MySQL(结构化记忆)

5.3 核心作用

普通 LLM 只能处理单轮、简单、无工具依赖的任务,而 Agent 的价值在于处理多轮、复杂、需要外部工具协作的任务,具体作用体现在 3 个方面:

1. 任务拆解:把 “大目标” 拆成 “小步骤”

面对复杂任务,Agent 会自动拆解为可执行的子任务,避免因任务过于复杂导致 LLM 输出混乱。示例

  • 用户目标:帮我分析公司2025年Q3的销售数据,对比Q2的增长情况,生成一份带图表的报告

  • Agent 拆解的子任务:

    1. 调用数据库查询 2025 Q2 和 Q3 的销售数据(按地区、产品分类);
    2. 计算各维度的增长率(Q3 - Q2)/ Q2 * 100%;
    3. 调用图表工具生成柱状图(对比 Q2/Q3 销量)和折线图(增长趋势);
    4. 基于数据和图表撰写分析报告,总结增长亮点和不足。

2. 工具调用:连接外部资源,拓展 AI 能力边界

Agent 能自主调用工具(数据库、API、文件系统等),解决 LLM “知识过期”“不会计算 / 操作” 的痛点 —— 这正是你作为 Java 后端能发挥价值的地方(提供工具接口)。示例

  • 普通 LLM 无法直接查你的业务数据库,但 Agent 可以通过你写的Java 接口(MCP Server/Function Call)查询实时数据;
  • 普通 LLM 无法生成 Excel 图表,但 Agent 可以调用 Apache POI 的 Java 工具类,自动生成带图表的 Excel 报告。

3. 自主决策与迭代:根据执行结果调整方案

Agent 不是 “一次性执行”,而是 “执行→反馈→调整” 的闭环流程。如果某一步子任务失败,它会自动重试或换一种工具。示例

  • 子任务 1 调用数据库时,发现 “Q3 西北地区数据缺失”;
  • Agent 会自动调整策略:先调用 “数据补全接口” 获取华东地区数据,若补全失败,则在报告中注明 “西北地区数据暂缺”,并基于现有数据完成分析。

5.4 与普通LLM/RAG的区别

技术核心能力适用场景
普通LLM单轮简单问答闲聊、基础知识查询
RAG检索增强的精准问答企业文档问答、知识库查询
Agent复杂任务自主执行数据分析、自动化报告、智能办公

六、总结:AI应用开发的技术链与落地思路

以上6大核心技术形成了“底层赋能→工具调用→知识增强→支撑载体→智能升级”的完整技术链,并非孤立存在,而是层层递进、相互支撑:

  1. 底层保障:用Prompt Engineering统一指令规则,为所有上层技术赋能,确保LLM精准执行;
  2. 工具联动:小场景/单一模型用Function Call快速落地,多模型/企业级场景用MCP实现标准化对接;
  3. 知识增强:用RAG+向量数据库构建企业私有知识库,解决LLM事实性与时效性问题;
  4. 智能升级:用Agent集成所有技术,实现复杂任务的端到端自主执行。

对于Java后端开发者而言,核心价值在于“技术落地”——即开发工具接口(MCP Server/Function Call函数)、搭建RAG知识库、集成向量数据库、通过Prompt Engineering优化LLM交互逻辑,对接现有业务系统(MySQL、Spring Boot),让AI能力真正融入企业业务流程。

随着AI技术的演进,这些核心技术的集成会越来越便捷,但“理解业务需求、选择合适技术、搭建稳定架构”的能力,将始终是AI应用落地的关键。