当前位置: 首页 > news >正文

【保姆级图文详解】大模型、Spring AI编程调用大模型

文章目录

  • 目录
  • 一、AI大模型
    • 1.1、AI大模型概念
    • 1.2、大模型的分类
      • 1.2.1、按模态(Modality)分类
      • 1.2.2、按开源性分类
      • 1.2.3、按规模(Scale)分类
      • 1.2.4、按用途(Application)分类
  • 二、接入大模型
    • 2.1、使用大模型的两种途径
      • 2.1.1、云服务
      • 2.1.2、自部署
    • 2.2、接入大模型的 3 种方式
      • 2.2.1、AI 应用平台接入
      • 2.2.2、AI 软件客户端接入
    • 2.3、程序调用 AI 大模型
      • 2.3.1、SDK 接入
      • 2.3.2、HTTP 接入
      • 2.3.3、Spring AI
      • 2.3.4、LangChain4j
      • 2.3.5、接入方式对比
  • 三、Spring AI 接入ollama部署的本地大模型

目录

亲爱的家人们,创作很不容易,若对您有帮助的话,请点赞收藏加关注哦,您的关注是我持续创作的动力,谢谢大家!有问题请私信或联系邮箱:fn_kobe@163.com

一、AI大模型

1.1、AI大模型概念

AI 大模型是指具有高参数量(通常数以亿计乃至千亿以上)、深层网络结构、以及在海量数据上预训练的深度学习模型。其核心优势在于:

①强泛化能力:通过大规模预训练,模型具备更好的迁移学习能力。
②多任务适应性:同一模型可通过微调(fine-tuning)完成不同下游任务。
③灵活扩展:可通过模型压缩、蒸馏、切片等技术适配不同部署场景。
在这里插入图片描述

1.2、大模型的分类

1.2.1、按模态(Modality)分类

①文本模型:如 GPT、BERT 系列,擅长自然语言理解与生成。

②图像模型:如 ViT、Swin Transformer,专注于视觉识别与生成。

③多模态模型:如 CLIP、DALL·E、GPT-4V,将文本、图像、音频等多种模态融合处理。

1.2.2、按开源性分类

①开源大模型:如 LLaMA、Bloom,代码与权重可公开获取,便于二次开发及本地部署。

②闭源/商用大模型:如 OpenAI GPT、Anthropic Claude,通常通过 API 调用,受限于使用条款与计费模式。

1.2.3、按规模(Scale)分类

①中小型大模型(数亿~数十亿参数):推理成本较低,适合资源受限场景。

②超大规模模型(百亿~千亿+参数):性能更优,但对算力和内存需求高,适合云端部署。

1.2.4、按用途(Application)分类

①通用对话/写作:如 GPT 系列,侧重语言生成与交互。

②专业领域:如 BioGPT(生物医药)、LegalBERT(法律文本),针对垂直领域优化。

③代码辅助:如 Codex、CodeGeeX,专注编程与代码生成。

④图像生成与编辑:如 Stable Diffusion、Midjourney,生成高质量视觉内容。

二、接入大模型

2.1、使用大模型的两种途径

在实际开发过程中,使用AI大模型主要有两种途径:云服务与自部署,各有优缺点。

2.1.1、云服务

  • 无需基础设施投入:直接调用第三方厂商已部署好的大模型服务,无需考虑服务器、GPU 等硬件。
  • 按需付费:无需前期大量基础设施投入,按调用量或时长计费。
  • 高可用 & 低维护:服务可随时可用,厂商负责运维与扩缩容。
  • 自动更新:即时获取最新版本的模型能力。
  • 安全合规:通常具备完善的安全措施与合规保障。

2.1.2、自部署

  • 数据全控 & 高隐私:所有数据流在本地或私有云,满足严苛的数据安全需求。
  • 高度定制化:可根据业务场景微调、剪枝或二次开发模型。
  • 无网络延迟:适合对响应速度和离线能力有严格要求的场景。
  • 一次性成本高:需采购硬件、搭建集群,并由专业团队维护。
  • 企业级场景优选:适合对合规、审计、专属运维有严格要求的项目。

选型建议

  • 个人开发者或中小团队:优先考虑 云服务,快速上线,降低维护成本。
  • 对数据安全、定制化要求高的企业级应用:可选择 自部署,获得最大化控制权 。通过Ollama本地部署,部署教程参考我之前写的博客链接:Ollama部署。

2.2、接入大模型的 3 种方式

在项目中使用 AI 大模型时,可选择以下三种接入方式,各有优劣和适用场景。

2.2.1、AI 应用平台接入

通过云服务商提供的一站式 AI 应用平台,快速构建并调用大模型能力。

  • 特点
    • 平台提供从模型调用到应用构建的全流程支持 。
    • 无需关心底层算力与运维,一键启动 。
  • 示例
    • 阿里云百炼(Alibaba Cloud TiDE):一站式大模型开发与应用构建平台,支持界面化操作和自动化训练、部署。
      在这里插入图片描述

2.2.2、AI 软件客户端接入

使用桌面或 Web 客户端软件,即可获得大模型交互和生产力工具。推荐两款使用较多的客户端:

  1. Cherry Studio

    • 多模型对话、知识库管理 。
    • AI 绘画、翻译等功能一体化。
    • 高度自定义界面与强扩展能力。
      在这里插入图片描述
  2. Cursor

    • 以 AI 为核心的编程开发工具。
    • 快速生成项目代码,智能理解并补全代码。
    • 提供代码库导航与建议,提升开发效率。
      在这里插入图片描述

2.3、程序调用 AI 大模型

在实际开发中,有多种方式可以在应用程序中调用 AI 大模型。下面介绍 4 种主流接入方式,并以阿里云百炼平台(Paodian)Java SDK 为示例。

2.3.1、SDK 接入

描述

  • 使用官方提供的软件开发工具包(SDK),最直接的集成方式。
  • 支持语言:Java、Python、Go 等。
  • 选择SDK版本时,在Maven仓库查看最新的版本号。链接如下:Maven仓库信息

步骤

  • 1、pox.xml引入阿里云灵积SDK依赖。
<!-- https://mvnrepository.com/artifact/com.alibaba/dashscope-sdk-java -->
<dependency><groupId>com.alibaba</groupId><artifactId>dashscope-sdk-java</artifactId><version>2.19.1</version>
</dependency>
  • 2、在阿里云百炼平台申请API-Key ,千万不要暴露。
    在这里插入图片描述

  • 3、选择合适的模型进行调用,点击模型、api参考、找到DashScope、选择Java代码接入。
    在这里插入图片描述

在这里插入图片描述

  • 4、测试程序。执行成功,包含Token数等信息。
    在这里插入图片描述

优点

  • 简洁易用,一步到位。
  • 自动处理鉴权、序列化、重试等细节。

2.3.2、HTTP 接入

描述

  • 通过 REST API 直接发送 HTTP 请求调用模型。
  • 适用于任意语言和平台。

步骤

  • 1、点击模型、api参考、找到DashScope、选择curl代码接入。特别说明:curl是检验http相应的工具。
    在这里插入图片描述

  • 2、通过AI工具将上述请求转换为 hutool 工具类的请求代码。

package com.funian.agent.demo.invoke;import cn.hutool.http.HttpRequest;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;/*** @Auther FuNian* @Major Computer Software*//*** HTTP 方式调用 AI*/
public class HttpAiInvoke {public static void main(String[] args) {// API密钥String apiKey = TestApiKey.API_KEY;// 构建请求URLString url = "https://dashscope.aliyuncs.com/api/v1/services/aigc/text-generation/generation";// 构建请求JSON数据JSONObject inputJson = new JSONObject();JSONObject messagesJson = new JSONObject();// 添加系统消息JSONObject systemMessage = new JSONObject();systemMessage.set("role", "system");systemMessage.set("content", "You are a helpful assistant.");// 添加用户消息JSONObject userMessage = new JSONObject();userMessage.set("role", "user");userMessage.set("content", "你好,我是爱健身的大学生,如何进行科学健身?");// 组装messages数组messagesJson.set("messages", JSONUtil.createArray().set(systemMessage).set(userMessage));// 构建参数JSONObject parametersJson = new JSONObject();parametersJson.set("result_format", "message");// 构建完整请求体JSONObject requestJson = new JSONObject();requestJson.set("model", "qwen-plus");requestJson.set("input", messagesJson);requestJson.set("parameters", parametersJson);// 发送请求String result = HttpRequest.post(url).header("Authorization", "Bearer " + apiKey).header("Content-Type", "application/json").body(requestJson.toString()).execute().body();// 输出结果System.out.println(result);}
}

优点

  • 灵活,不依赖特定 SDK。
  • 易于与微服务架构集成。

2.3.3、Spring AI

描述

  • 基于 Spring 生态的 AI 调用框架。
  • 提供 Spring Bean 封装,可通过依赖注入快速调用大模型。
  • 跨供应商可移植 API 支持
    适用于聊天、文本转图像和嵌入模型,支持同步与流式调用,并可访问各供应商特定功能。
  • 多模型供应商兼容
    支持 Anthropic、OpenAI、微软、亚马逊、谷歌、Ollama 等主流厂商,涵盖聊天、补全、嵌入、文本转图像、音频转录、文本转语音等多种模型类型。
  • 结构化输出
    将模型输出映射为 POJO(普通 Java 对象),方便业务代码直接消费。
  • 向量数据库集成
    支持 Apache Cassandra、Azure Cosmos DB、Azure Vector Search、Chroma、Elasticsearch、GemFire、MariaDB、Milvus、MongoDB Atlas、Neo4j、OpenSearch、Oracle、PostgreSQL/PGVector、Pinecone、Qdrant、Redis、SAP Hana、Typesense、Weaviate 等。
  • 跨向量存储可移植 API
    包括新颖的类 SQL 元数据过滤 API,简化检索层开发。
  • 工具/函数调用
    允许模型在运行时调用客户端工具和函数,根据上下文动态获取所需信息并执行操作。
  • 可观测性
    提供与 AI 相关操作的监控与指标采集。
  • 文档 ETL 框架
    适用于大规模文档与数据处理场景。
  • AI 模型评估工具
    帮助评估生成内容质量并防范幻觉(hallucination)。
  • Spring Boot 自动配置与启动器
    支持 AI 模型和向量存储的一键引入与管理。
  • ChatClient API
    类似 WebClient/RestClient 的流式通信 API,用于与聊天模型高效交互。
  • Advisors API
    封装常见生成式 AI 模式,将请求发送到 LLM 并解析返回结果,提供跨模型与跨用例的统一调用接口。
  • 对话记忆与检索增强生成(RAG)支持
    内置对话状态管理与检索-生成流程,简化 RAG 应用开发。

步骤

  • 1、使用Spring AI alibaba,pom.xml引入依赖,Maven中央仓库下载版本。
    在这里插入图片描述
<dependency><groupId>com.alibaba.cloud.ai</groupId><artifactId>spring-ai-alibaba-starter</artifactId><version>1.0.0-M6.1</version>
</dependency>
<repositories><repository><id>spring-milestones</id><name>Spring Milestones</name><url>https://repo.spring.io/milestone</url><snapshots><enabled>false</enabled></snapshots></repository>
</repositories>
  • 2、编写yml配置。
spring:application:name: Agentai:dashscope:api-key: ${AI_DASHSCOPE_API_KEY}chat:options:model: qwen-plus
  • 3、使用charmodel方式注入模型,模型参数为dashscopeChatModel,之后会自动注入大模型,实现CommandLineRunner接口,启动SpringBoot项目时会单次执行该类的run方法,从而达到测试效果。
@Component
public class SpringAiAiInvoke implements CommandLineRunner {@Resourceprivate ChatModel dashscopeChatModel;@Overridepublic void run(String... args) throws Exception {AssistantMessage output = dashscopeChatModel.call(new Prompt("你好,我是爱健身的大学生")).getResult().getOutput();System.out.println(output.getText());}
}
  • 4、测试成功。
    在这里插入图片描述

优点

  • 与现有 Spring Boot 项目无缝集成。
  • 支持配置化管理与自动化监控。

2.3.4、LangChain4j

描述

  • 专注于构建 LLM 应用的 Java 框架。
  • 提供丰富的 AI 调用组件、链式调用和流水线支持。

步骤

  • 1、pom.xml引入依赖。
public class LangChainAiInvoke {public static void main(String[] args) {ChatLanguageModel qwenModel = QwenChatModel.builder().apiKey(TestApiKey.API_KEY).modelName("qwen-max").build();String answer = qwenModel.chat("我是爱健身的大学生");System.out.println(answer);}
}
  • 2、参考官方代码撰写示例,地址如下:https://docs.langchain4j.dev/integrations/language-models/dashscope/。
    在这里插入图片描述
public class LangChainAiInvoke {public static void main(String[] args) {ChatLanguageModel qwenModel = QwenChatModel.builder().apiKey(TestApiKey.API_KEY).modelName("qwen-max").build();String answer = qwenModel.chat("我是爱健身的大学生");System.out.println(answer);}
}
  • 3、测试成功。
    在这里插入图片描述

优点

  • 高度模块化,适合复杂业务场景。
  • 内置常见 LLM 操作(prompt 模板、缓存、并发控制等)。

2.3.5、接入方式对比

以下是 4 种 AI 大模型接入方式的优缺点对比:

接入方式优点缺点适用场景
SDK 接入- 类型安全,编译时检查
- 完善的错误处理
- 通常有详细文档,性能优化好
- 依赖特定版本,可能增加项目体积
- 语言受限
- 需要深度集成
- 单一模型提供商
- 对性能要求高
HTTP 接入- 无语言限制,不增加额外依赖
- 灵活性高
- 需要手动处理错误、序列化/反序列化
- 代码冗长
- SDK 不支持的语言
- 简单原型验证
- 临时性集成
Spring AI- 统一抽象接口,易于切换模型提供商
- 与 Spring 生态完美融合
- 提供高级功能
- 增加额外抽象层,可能不支持某些模型特性
- 版本仍在快速迭代中
- Spring 应用
- 需要支持多种模型
- 需高级 AI 功能
LangChain4j- 提供完整 AI 应用工具链,支持复杂工作流
- 丰富的组件和工具,适合构建 AI 代理
- 学习曲线较陡,文档相对较少
- 高度抽象可能引入性能开销
- 构建复杂 AI 应用
- 需要链式操作、RAG 应用开发

推荐

  • 我个人更倾向于 Spring AI,因为它属于 Spring 生态,简单易用、资源丰富,能满足绝大多数 AI 项目的开发需求。
  • 无论选择哪种接入方式,都建议先用简单的测试用例验证接入是否成功,再进行复杂功能开发。

三、Spring AI 接入ollama部署的本地大模型

描述

  • 链接:安装Ollama本地Deepseek大模型。
  • 本地部署大模型保证更好的数据隐私控制、无需网络即可调用。

步骤

  • 1、检验大模型是否安装成功、pom.xml引入依赖。
    在这里插入图片描述
<dependency><groupId>org.springframework.ai</groupId><artifactId>spring-ai-ollama-spring-boot-starter</artifactId><version>1.0.0-M6</version>
</dependency>
<repositories><repository><id>spring-milestones</id><name>Spring Milestones</name><url>https://repo.spring.io/milestone</url><snapshots><enabled>false</enabled></snapshots></repository>
</repositories>
  • 2、编写yml配置。
spring:ai:ollama:base-url: http://localhost:11434chat:model: deepseek-r1:7b

3、编写测试代码。

@Component
public class OllamaAiInvoke implements CommandLineRunner {@Resourceprivate ChatModel ollamaChatModel;@Overridepublic void run(String... args) throws Exception {AssistantMessage output = ollamaChatModel.call(new Prompt("你好,我是爱健身的大学生")).getResult().getOutput();System.out.println(output.getText());}
}

4、启动项目测试,显示成功。
在这里插入图片描述

http://www.lryc.cn/news/581929.html

相关文章:

  • 2025最新如何解决VSCode远程连接开发机失败/解决方案大全
  • Python操作mysql数据库:数据库三层结构,Mysql建表语句操作,mysql的数据库备份,mysql的数据库恢复
  • 图像处理中的插值方法:原理与实践
  • ​​MySQL高可用架构深度解析:主从复制、MGR与读写分离实战​​
  • 使用 GDB 调试 Redis 服务进程指南
  • PC端基于SpringBoot架构控制无人机(三):系统架构设计
  • FlashDepth | 混合模型+Mamba革新,24 FPS实时2K视频深度估计,超越Depth Anything v2
  • (倍增)洛谷 P1613 跑路/P4155 国旗计划
  • ZooKeeper 实现分布式锁
  • 【Note】《Kafka: The Definitive Guide》 第5章:深入 Kafka 内部结构,理解分布式日志系统的核心奥秘
  • 【kafka-python使用学习笔记2】Python操作Kafka之环境准备(2)亲测有效有图有真相
  • 专为磁盘存储设计的数据结构——B树
  • 快速上手百宝箱搭建知识闯关游戏助手
  • 第二届虚拟现实、图像和信号处理国际学术会议(VRISP 2025)
  • Java面试宝典:异常
  • Python实现MCP Server的完整Demo
  • 北京-4年功能测试2年空窗-报培训班学测开-第四十四天
  • 《Effective Python》第十二章 数据结构与算法——当精度至关重要时使用 decimal
  • Node.js特训专栏-实战进阶:14.JWT令牌认证原理与实现
  • 《30天打牢数模基础-第一版》(已完结) 需要自取
  • macOS运行python程序遇libiomp5.dylib库冲突错误解决方案
  • 基于Rust红岩题材游戏、汽车控制系统、机器人运动学游戏实例
  • 在内网环境中,Java服务调用PHP接口时报错的排查方法
  • Mac 电脑无法读取硬盘的解决方案
  • AI智能体长期记忆系统架构设计与落地实践:从理论到生产部署
  • 文件操作(java)
  • window显示驱动开发—X 通道解释
  • [shad-PS4] GUI启动游戏 | Qt用户界面 | 三端兼容
  • 鸿蒙生态加持:国产ARM+FPGA工业开发平台——GM-3568JHF
  • SQL Server不同场景批量插入数据的方式详解