第1章:AI大模型大模型快速上手+SpringAI相关环境搭建

什么是AI大模型?

当我们进入AI学习的阶段我们首先需要知道什么是AI大模型LLM?

LLM是Large Language Model大语言模型的首字母简写,简单来说AI就是一个超级的学者,它的学习量和能力范围远超过普通人,其核心能力包括以下几部分:

  1. 文本生成(对话,代码,故事)
  2. 语义理解(回答,摘取,分类)
  3. 推理能力(逻辑判断,数学计算)
  4. 多模态能力(图片,视频,语言生成)

那么为什么大模型可以回到我们的问题呢?
其核心就是靠着吃透了海量规律,再结合规律猜出来合理的答案。

AI大模型智能体体场景:

  1. 城市公共服务:民生诉求智能处理(成都新津 "民意速办" 系统通过语音 / 图像输入,结合 AI 小助手实现政策解读与工单处理,响应效率提升 5 倍),政务服务升级(黄埔区政务智能体整合 2000 余项服务事项,意图识别准确率 95%,实现 "询 - 约 - 办" 一体化,夜间服务覆盖率 100%)。
  2. 金融科技创新:智能投资顾问(基于市场趋势与宏观经济数据,AI 生成个性化投资组合,年化收益提升 15%,风险控制能力增强 40%),智能客服系统(金融机构客服响应速度提升 300%,客户满意度从 72% 提升至 89%)。
  3. 在线教育创新:个性化学习路径(AI 根据学生知识图谱生成专属学习计划,英语薄弱学生词汇量提升速度加快 2 倍),智能作业批改(作文批改覆盖语法、逻辑、文采多维度,教师工作量减少 60%)。

为什么不直接调用API和主流大模型介绍

直接调用API虽然方便快捷,但是存在显著局限,难以支撑复杂,动态的生成场景。而且还存在这以下几种问题:

  1. 任务理解与执行脱节:大模型擅长生成长文本,但是无法主动调用工具,访问数据库或操作系统.
  2. 缺乏持续学习与记忆:API属于无状态服务,无法积累对话历史或用户偏好,导致每次交互都是从0开始,且无法获取最新的实时数据和内部业务系统对接。
  3. 安全与合格风险:直接暴露API密钥可能引发滥用,且敏感任务(如数据库查询),不能依赖第三方云服务,公司内部核心数据不能上传外部,容易导致数据泄露。

公司招聘我们开发大模型是开发什么?

开发智能体Agent,即一种具备自主决策能力的AI系统,通过感知环境,分析信息,调用工具,执行动作的闭环完成任务。

智能体=大模型(Brain)+工具(Tools)+记忆(Memory)+规划(Planning)

Agent包括以下能力:

  1. 环境感知与实时决策:通过RAG,网络搜索,API调用获取实时数据(如机票价格,库存状态)
  2. 自我规划与任务分解:将复杂指令拆解为可执行步骤(如规划->查机票->订酒店)
  3. 工具调用与多模态交互:支持执行代码,操作软件,连接硬件(如大模型可调用搜索引擎,日历,添加行程)

主流大模型横向对比

场景

推荐模型

核心优势

复杂推理与工具调用

OpenAI O3 / DeepSeek R1

自主问题分解、多步推理,支持数学证明、代码调试

多模态内容生成

通义千问 Qwen2.5-Omni / Gemini 2.5

全模态交互、实时视频生成,适合短视频制作、教育课件开发

中文专业领域(法律 / 金融)

通义千问 Qwen2.5 / DeepSeek V3

中文语义理解准确率 92%,合同审查支持结构化输出,金融量化策略生成

企业级长文本处理

Claude 3.7 Sonnet / Qwen2.5-Turbo

200K+ tokens 上下文,支持法律文书分析、学术论文综述

低成本开源部署

Llama 3 / DeepSeek R1-Distill

MIT 协议开源,参数覆盖 14B-70B,适合中小型企业本地部署

大模型开发平台API准备

DeepSeek:https://www.deepseek.com/

阿里百炼:https://bailian.console.aliyun.com/

七牛云:https://portal.qiniu.com/ai-inference/api-key

编写测试接口,如

curl https://openai.qiniu.com/v1/chat/completions \
  --request POST \
  --header 'Authorization: Bearer <API_KEY>' \
  --header 'Content-Type: application/json' \
  --data '{
  "stream": false,
  "model": "qwen3-max-preview",
  "messages": [
    {
      "role": "system",
      "content": "You are a helpful assistant."
    },
    {
      "role": "user",
      "content": "Hello!"
    }
  ]
}'

AI应用开发框架SpringAI和LLM多模态介绍

AI应用开发还有很多框架和平台:Langchain、Langchain4j、LangGraph、SpringAI、Dify、Coze、CrewAI等。

Spring 生态下的企业级 AI 应用开发框架,将 Spring 的可移植性、模块化设计原则应用于 AI 领域。

帮助 Java 开发者快速集成大模型能力到现有应用中,通过标准化接口和工具链,解决了 AI 模型与企业数据、API 的连接难题。

提供商无关:统一的API接口支持多个AI提供商,支持聊天、嵌入、向量存储、RAG等完整的AI应用开发栈。

官网地址:https://spring.io/projects/spring-ai#learn,https://github.com/spring-projects/spring-ai

多模态

通俗说就是:一个模型能同时 “看懂、听懂、读懂、甚至生成” 多种类型的信息

这里的 “模态” 就是指信息的类型,常见的有:文字(比如聊天、文章);图片 / 视频(比如照片、短视频);声音(比如语音、音乐、环境音)。

SpringAI框架支持的多模态

  1. 聊天模型:用于对话和文本生成
  2. 嵌入模型:用于文本向量化
  3. 图像生成模型:用于文本到图像的转换
  4. 语音模型:用于语音转文本和文本转语音

创建SpringAI项目

配置xml文件

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>3.5.3</version>
    <relativePath/>
  </parent>
  <groupId>com.guslegend</groupId>
  <artifactId>SpringAI</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <name>SpringAI</name>
  <description>Demo project for Spring Boot</description>
  <properties>
    <java.version>21</java.version>
    <spring-ai.version>1.0.0</spring-ai.version>
  </properties>




  <dependencies>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-web</artifactId>
    </dependency>

    <!-- Spring AI OpenAI 依赖 -->
    <!-- BEFORE -->
    <!--		<dependency>-->
    <!--			<groupId>org.springframework.ai</groupId>-->
    <!--			<artifactId>spring-ai-openai-spring-boot-starter</artifactId>-->
    <!--		</dependency>-->

    <!-- AFTER M7开始-->
    <dependency>
      <groupId>org.springframework.ai</groupId>
      <artifactId>spring-ai-starter-model-openai</artifactId>
    </dependency>

    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-test</artifactId>
      <scope>test</scope>
    </dependency>
  </dependencies>
  <dependencyManagement>
    <dependencies>
      <dependency>
        <groupId>org.springframework.ai</groupId>
        <artifactId>spring-ai-bom</artifactId>
        <version>${spring-ai.version}</version>
        <type>pom</type>
        <scope>import</scope>
      </dependency>
    </dependencies>
  </dependencyManagement>

  <build>
    <plugins>
      <plugin>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-maven-plugin</artifactId>
      </plugin>
    </plugins>
  </build>

  <!-- 配置Maven仓库 -->
  <repositories>
    <repository>
      <id>aliyun</id>
      <name>aliyun</name>
      <url>https://maven.aliyun.com/repository/public</url>
      <releases>
        <enabled>true</enabled>
      </releases>
      <snapshots>
        <enabled>false</enabled>
      </snapshots>
    </repository>
    <repository>
      <id>aliyun-spring</id>
      <name>aliyun-spring</name>
      <url>https://maven.aliyun.com/repository/spring</url>
      <releases>
        <enabled>true</enabled>
      </releases>
      <snapshots>
        <enabled>false</enabled>
      </snapshots>
    </repository>
  </repositories>

  <!-- 配置插件仓库 -->
  <pluginRepositories>
    <pluginRepository>
      <id>aliyun-plugin</id>
      <name>aliyun-plugin</name>
      <url>https://maven.aliyun.com/repository/public</url>
      <releases>
        <enabled>true</enabled>
      </releases>
      <snapshots>
        <enabled>false</enabled>
      </snapshots>
    </pluginRepository>
  </pluginRepositories>
</project>

配置application.yml文件

spring:
  application:
    name: spring-ai-demo
  ai:
    openai:
      # 上述获取的的API-KEY
      api-key: sk-416bd00ea214466b827ae2b2aa1ae34f
      # 使用DeepSeek
      base-url: https://api.deepseek.com
      chat:
        options:
          # 使用的模型
          model: deepseek-chat
          # 采样的随机性 0~1 较高的值将使输出更具随机性,而较低的值将使结果更加集中和确定
          temperature: 0.8

快速上手

什么是OpenAiChatModel:是SpringAI框架中用于集成OpenAI语言模型的核心组件,提供了简洁且灵活的接口,支持从基础文本生成到复杂多模态交互的全流程开发,多个大模型相关协议都兼容支持OpenAI。

创建Controller

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

    @Autowired
    private OpenAiChatModel chatModel;

    @GetMapping("/generate")
    public Map generate(@RequestParam(name = "msg") String msg){
        String res = chatModel.call( msg);
        System.out.println(res);
        return Map.of("generate",res);
    }

}


 

ChatModel源码接口说明

/**
 * ChatModel接口扩展了Model接口,专门用于处理聊天相关的任务它定义了如何调用聊天模型以获取响应,
 * 包括单个消息和多个消息的调用,以及流式处理聊天响应的能力
 */
public interface ChatModel extends Model<Prompt, ChatResponse>, StreamingChatModel {
    
    /**
     * 使用单个用户消息调用聊天模型
     * 
     * @param message 用户输入的单个消息
     * @return 聊天模型返回的响应文本
     */
    default String call(String message) {
        // 创建一个包含单个用户消息的Prompt对象
        Prompt prompt = new Prompt(new UserMessage(message));
        // 调用模型并获取生成结果
        Generation generation = this.call(prompt).getResult();
        // 返回生成结果的文本,如果没有结果则返回空字符串
        return generation != null ? generation.getOutput().getText() : "";
    }

    /**
     * 使用多个消息调用聊天模型
     * 
     * @param messages 一个或多个消息
     * @return 聊天模型返回的响应文本
     */
    default String call(Message... messages) {
        // 创建一个包含多个消息的Prompt对象
        Prompt prompt = new Prompt(Arrays.asList(messages));
        // 调用模型并获取生成结果
        Generation generation = this.call(prompt).getResult();
        // 返回生成结果的文本,如果没有结果则返回空字符串
        return generation != null ? generation.getOutput().getText() : "";
    }

    /**
     * 调用聊天模型以获取ChatResponse对象
     * 
     * @param prompt 包含用户消息的Prompt对象
     * @return 聊天模型返回的ChatResponse对象
     */
    ChatResponse call(Prompt prompt);

    /**
     * 获取聊天模型的默认选项
     * 
     * @return 默认的ChatOptions对象
     */
    default ChatOptions getDefaultOptions() {
        // 构建并返回一个默认的ChatOptions对象
        return ChatOptions.builder().build();
    }

    /**
     * 以流的形式调用聊天模型默认实现是抛出不支持操作异常,
     * 因为不是所有聊天模型都支持流式处理
     * 
     * @param prompt 包含用户消息的Prompt对象
     * @return ChatResponse的Flux流
     * @throws UnsupportedOperationException 如果模型不支持流式处理
     */
    default Flux<ChatResponse> stream(Prompt prompt) {
        // 抛出不支持操作异常,因为默认实现不支持流式处理
        throw new UnsupportedOperationException("streaming is not supported");
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值