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

Spring-ai 1.0.0 学习(二)——最小化样例

在上一篇概述中(Spring-ai 1.0.0 学习(一)——概述-CSDN博客)大概介绍了spring-ai,接下来我们直接上代码,看一个最小化的spring-ai样例

首先是pom.xml文件,仅需引入spring-boot-starter-web和spring-ai-starter-model-zhipuai(根据所选大语言模型不同)即可

<?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.0</version><relativePath/> <!-- lookup parent from repository --></parent><groupId>com.example</groupId><artifactId>spring-ai</artifactId><version>0.0.1-SNAPSHOT</version><name>spring-ai</name><description>Demo project for Spring AI</description><properties><java.version>24</java.version></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.ai</groupId><artifactId>spring-ai-starter-model-zhipuai</artifactId><version>1.0.0</version></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build></project>

然后是application.properties,仅需配置大语言模型对应的api-key和model即可,your key为在对应大模型网站申请的key

spring.ai.zhipuai.api-key=<your key>
spring.ai.zhipuai.chat.options.model=glm-4-air

然后是启动类SpringAiApplication

package com.example.spring_ai;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplication
public class SpringAiApplication {public static void main(String[] args) {SpringApplication.run(SpringAiApplication.class, args);}}

最后是大语言模型调用类SpringAiExample01

package com.example.spring_ai.controller;import org.springframework.ai.zhipuai.ZhiPuAiChatModel;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;import java.util.Map;@RestController
public class SpringAiExample01
{private final ZhiPuAiChatModel chatModel;@Autowiredpublic SpringAiExample01(ZhiPuAiChatModel chatModel){this.chatModel = chatModel;}/*** 简单调用* @param message* @return*/@GetMapping("/ai/generate")public Map generate(@RequestParam(value = "message", defaultValue = "给我讲个笑话") String message){return Map.of("generation", this.chatModel.call(message));}}

spring会根据我们配置在application.properties中的属性帮我们自动生成ZhiPuAiChatModel

然后我们将程序启动,在浏览器中访问http://localhost:8080/ai/generate​​​​​​?message=介绍下成都​​​​​​,即可观察到大模型返回的结果

这里我使用的智谱的ZhipuAiChatModel,生产中更推荐封装了大语言模型的ChatClient

package com.example.spring_ai.controller;import org.springframework.ai.chat.client.ChatClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;@RestController
public class SpringAiExample02ChatClient
{private final ChatClient chatClient;public SpringAiExample02ChatClient(ChatClient.Builder chatClientBuilder){//ChatClient封装了ChatModel,屏蔽了不同底层模型的差异this.chatClient = chatClientBuilder.build();}@GetMapping("/ai")String generation(String userInput){return this.chatClient.prompt().user(userInput).call().content();}}

ChatClient会自动匹配可用的ChatModel,它封装了ChatModel,屏蔽了不同底层模型的差异,方便一键切换底层大模型

http://www.dtcms.com/a/251918.html

相关文章:

  • 网络安全相关概念与技术详解
  • C++ 网络编程(12)利用单例逻辑实现逻辑类
  • Arthas 全面学习指南
  • 如何用AI绘画工具创作出属于你的拉布布(泡泡玛特)形象?
  • K-Means算法详细解析:从原理到实践
  • 618背后的电商逻辑重构:从价格血战到价值共生
  • Level1.8for循环
  • 3.TCP回响服务器实现及源码分析上
  • 基于Webserver的数据采集
  • Java中hashCode方法与equal方法何时重写
  • 1、Java基础语法通关:从变量盒子到运算符魔法
  • Qt如何生成和使用DLL动态链接库
  • CountDownLatch、CyclicBarrier与Semaphore 核心技术解析
  • 2. Anaconda 的安装及 Pytorch 环境安装
  • 算子 | 类型 / 性质
  • Java类加载器与双亲委派模型深度解析
  • Python Pillow 库详解文档
  • 第11章 结构 笔记
  • Python实战项目 贪吃蛇 源码分享 毕业设计
  • Cangejie Magic智谱AI文生图API实战详解
  • 订单状态定时处理-01.需求分析
  • C++ 记录
  • 图片压缩工具 | 按指定高度垂直切割图片
  • 最新版MATLAB R2025a ,支持Windows10/11
  • 归一化:深度学习的隐藏加速器,解密数据标准化的魔力
  • 1.项目体系的概念
  • CFD仿真硬件选型建议
  • 【RAG文档解析】深度剖析 PDF 解析的痛点与方案
  • vulnerable_docker_containement(hard难度)MSF内网穿透、docker逃逸、wpscan爆破。
  • 02《F8Framework》核心入口 FF8.cs