Skip to content

快速开始

从基础概念 -> 核心框架 -> 实战开发的完整指南

AI 基础词汇 必读
LLM(大语言模型)

Large Language Model,如 GPT-4、Claude、Gemini。基于 Transformer 架构,通过海量文本训练,能理解和生成自然语言。

核心概念
Token(词元)

文本的最小处理单位,不等于一个汉字或单词。中文约 1.5-2 字/token,英文约 3-4 字符/token。影响计费和上下文长度。

计量单位
Prompt(提示词)

发送给模型的输入文本,包括 System Prompt(系统指令)和 User Message(用户消息)。Prompt 工程是提升输出质量的关键。

交互基础
Context Window(上下文窗口)

模型一次能处理的最大 token 数量。GPT-4 Turbo 支持 128K,Claude 3 支持 200K。超出后早期内容被截断。

限制参数
Embedding(嵌入向量)

将文本转化为高维向量(浮点数数组),语义相似的文本向量距离更近。是语义搜索和 RAG 的基础技术。

向量表示
Temperature(温度)

控制输出随机性的参数,范围 0~2。0 = 确定性输出(适合代码),1 = 平衡,>1 = 更具创意但可能不稳定。

生成参数
Fine-tuning(微调)

在预训练模型基础上,使用特定领域数据继续训练,使模型更擅长特定任务。成本高但效果针对性强。

训练方式
RAG(检索增强生成)

Retrieval-Augmented Generation,先从知识库检索相关文档片段,再将其注入 Prompt,让模型基于私有数据回答。

架构模式
Agent(智能体)

能自主规划、调用工具(Tool)、执行多步骤任务的 AI 系统。通过 ReAct 等推理框架循环执行直到目标完成。

高级应用
Vector Store(向量数据库)

专门存储和检索 Embedding 向量的数据库,支持语义相似度搜索(ANN 近似最近邻)。如 Chroma、Pinecone、PGVector。

存储组件
Tool / Function Calling

让模型能够调用外部函数(API、数据库、计算器等)的能力。模型返回 JSON 结构,由宿主程序执行并将结果返回模型。

扩展能力
Inference(推理)

使用训练好的模型生成输出的过程,区别于训练过程。API 调用即推理。本地推理可用 Ollama + llama.cpp。

运行方式
主流模型与 API 对比
模型/服务提供商特点Java 接入方式
GPT-4oOpenAI多模态,速度快,支持 Function CallingOpenAI Java SDK / LangChain4j
Claude 3.5 SonnetAnthropic长上下文 200K,代码能力强Anthropic Java SDK / Spring AI
Gemini 1.5 ProGoogle超长上下文 1M,多模态Google AI Java SDK
Llama 3Meta(开源)可本地部署,无数据隐私风险Ollama + LangChain4j
Qwen2阿里(开源)中文优化,多尺寸可选Ollama / DashScope API
企业内网数据场景推荐使用 Ollama 部署本地模型(Llama 3 / Qwen2),避免数据外发风险。
Java AI 主流框架 选型
LangChain4j

Java 生态最成熟的 AI 框架,对标 Python LangChain。支持 15+ 模型、10+ 向量库,提供 Chain、RAG、Agent、Tool 等高级抽象。

★★★★★ 推荐独立使用
Spring AI

Spring 官方 AI 框架,与 Spring Boot 深度集成,自动配置极简。适合已有 Spring 项目。功能在持续完善中。

★★★★ 推荐Spring 生态
OpenAI Java SDK

OpenAI 官方 Java 客户端,仅限 OpenAI/Azure OpenAI,功能精简但官方维护,API 兼容性最好。

★★★OpenAI 专用
Ollama Java Client

本地模型调用客户端,配合 Ollama 服务使用,适合本地推理场景,无需联网。

★★★本地部署
LangChain4j 核心用法
Maven 依赖:langchain4j-open-ailangchain4j-ollama,核心包 langchain4j-core

1. 基础对话调用

// 添加依赖:dev.langchain4j:langchain4j-open-ai:0.31.0
import dev.langchain4j.model.openai.OpenAiChatModel;
import dev.langchain4j.model.chat.ChatLanguageModel;

ChatLanguageModel model = OpenAiChatModel.builder()
    .apiKey("your-api-key")
    .modelName("gpt-4o")
    .temperature(0.7)
    .build();

String response = model.generate("用 Java 写一个冒泡排序");
System.out.println(response);

2. AI Service 接口(推荐方式)

// 定义 AI 服务接口
interface AssistantService {
    @SystemMessage("你是一个专业的 Java 技术专家,用简洁的中文回答")
    String chat(@UserMessage String userMessage);

    // 支持结构化输出
    @UserMessage("分析这段代码的问题:{{code}}")
    CodeReview reviewCode(@V("code") String code);
}

// 创建代理实例
AssistantService assistant = AiServices.builder(AssistantService.class)
    .chatLanguageModel(model)
    .chatMemory(MessageWindowChatMemory.withMaxMessages(10))
    .build();

String answer = assistant.chat("Java 中 volatile 有什么作用?");

3. Tool(工具调用)

// 定义工具类
class DatabaseTool {
    @Tool("根据用户ID查询用户信息")
    public String getUserById(@P("用户ID") long userId) {
        return userRepository.findById(userId).toString();
    }
}

// 注册工具到 AI Service
AssistantService assistant = AiServices.builder(AssistantService.class)
    .chatLanguageModel(model)
    .tools(new DatabaseTool())
    .build();
Spring AI 集成
添加依赖:spring-ai-openai-spring-boot-starter,需要 Spring Boot 3.2+

application.yml 配置

spring:
  ai:
    openai:
      api-key: ${OPENAI_API_KEY}
      chat:
        options:
          model: gpt-4o
          temperature: 0.7
      embedding:
        options:
          model: text-embedding-3-small

Controller 中直接注入使用

@RestController
@RequestMapping("/ai")
public class AiController {

    @Autowired
    private ChatClient chatClient;

    @GetMapping("/chat")
    public String chat(@RequestParam String message) {
        return chatClient.prompt()
            .system("你是专业的 Java 开发助手")
            .user(message)
            .call()
            .content();
    }

    @GetMapping(value = "/stream", produces = "text/event-stream")
    public Flux<String> stream(@RequestParam String message) {
        return chatClient.prompt()
            .user(message)
            .stream()
            .content();
    }
}
RAG 检索增强生成 核心架构
1
文档加载与切片读取 PDF/Word/网页,切分成 300~500 token 的 Chunk,保留语义完整性
2
Embedding 向量化调用嵌入模型(text-embedding-3-small)将每个 Chunk 转为 1536 维向量
3
存入向量数据库将向量 + 原文存入 Chroma / PGVector / Redis Vector 等
4
用户查询向量化将用户问题同样转为向量
5
语义相似度检索在向量库中找 Top-K 最相似的文档片段(余弦相似度)
6
注入 Prompt 生成答案将检索结果拼入提示词,让模型基于上下文回答,附带来源引用
// LangChain4j RAG 实现示例
// Step 1: 加载文档并分割
Document document = FileSystemDocumentLoader.loadDocument("knowledge.pdf");
DocumentSplitter splitter = DocumentSplitters.recursive(500, 50);
List<TextSegment> segments = splitter.split(document);

// Step 2: 向量化并存储
EmbeddingModel embeddingModel = OpenAiEmbeddingModel.withApiKey(apiKey);
EmbeddingStore<TextSegment> store = new InMemoryEmbeddingStore<>();
EmbeddingStoreIngestor ingestor = EmbeddingStoreIngestor.builder()
    .embeddingModel(embeddingModel)
    .embeddingStore(store)
    .build();
ingestor.ingest(document);

// Step 3: 构建 RAG 检索器
ContentRetriever retriever = EmbeddingStoreContentRetriever.builder()
    .embeddingStore(store)
    .embeddingModel(embeddingModel)
    .maxResults(3)
    .minScore(0.6)
    .build();

// Step 4: 注入 AI Service
interface KnowledgeAssistant {
    String answer(@UserMessage String question);
}
KnowledgeAssistant assistant = AiServices.builder(KnowledgeAssistant.class)
    .chatLanguageModel(chatModel)
    .contentRetriever(retriever)
    .build();
Agent 智能体开发 高级
Agent 适合多步骤复杂任务,但需要控制循环次数(maxIterations),避免无限循环和费用失控。
ReAct 模式

Reason + Act 循环:思考 -> 选择工具 -> 执行 -> 观察结果 -> 继续思考,直到任务完成。LangChain4j 内置支持。

常用工具类型

Web 搜索、数据库查询、代码执行、文件读写、HTTP API 调用、计算器、发送邮件/消息等。

记忆管理

短期记忆(对话历史)用 MessageWindowChatMemory,长期记忆可结合 Redis 或向量库持久化存储。

多 Agent 协作

一个 Orchestrator Agent 负责规划任务,多个 Worker Agent 各司其职(代码 Agent、搜索 Agent 等)。

// 定义多工具 Agent
class SearchTool {
    @Tool("搜索互联网上的最新信息")
    String search(@P("搜索关键词") String query) { /* ... */ }
}

class CodeTool {
    @Tool("执行 Java 代码并返回结果")
    String execute(@P("Java 代码字符串") String code) { /* ... */ }
}

interface ResearchAgent {
    @SystemMessage("你是一个研究助手,可以搜索信息和执行代码来回答问题")
    String research(@UserMessage String task);
}

ResearchAgent agent = AiServices.builder(ResearchAgent.class)
    .chatLanguageModel(model)
    .tools(new SearchTool(), new CodeTool())
    .chatMemory(MessageWindowChatMemory.withMaxMessages(20))
    .build();
实战项目架构 落地
项目类型核心技术栈关键点
企业知识库问答Spring Boot + LangChain4j + PGVector文档解析、Chunk 策略、多租户隔离
AI 客服机器人Spring AI + Redis Memory + WebSocket意图识别、对话管理、人工转接
代码审查助手LangChain4j + GitHub APIPR 触发、差异分析、安全扫描
数据报告生成Spring AI + MySQL + 结构化输出Text2SQL、图表生成、定时推送
本地私有部署Ollama + LangChain4j + Chroma模型选型、GPU 配置、性能调优

推荐项目依赖(pom.xml)

<!-- Spring Boot 基础 -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>

<!-- LangChain4j OpenAI -->
<dependency>
    <groupId>dev.langchain4j</groupId>
    <artifactId>langchain4j-open-ai-spring-boot-starter</artifactId>
    <version>0.31.0</version>
</dependency>

<!-- 向量数据库:本地用 Chroma -->
<dependency>
    <groupId>dev.langchain4j</groupId>
    <artifactId>langchain4j-chroma</artifactId>
    <version>0.31.0</version>
</dependency>

<!-- 文档解析 -->
<dependency>
    <groupId>dev.langchain4j</groupId>
    <artifactId>langchain4j-document-parser-apache-pdfbox</artifactId>
    <version>0.31.0</version>
</dependency>
学习路径建议:Java 基础 -> Spring Boot -> HTTP/REST 原理 -> LangChain4j 基础对话 -> RAG 实现 -> Tool 调用 -> Agent 开发 -> 生产优化(缓存、限流、监控)

如有转载或 CV 的请标注本站原文地址

访客数 --| 总访问量 --