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

spring ai入门实例

目录

    • 大模型注册获取api
    • spring-ai的基础了解
    • spring-ai-alibaba
    • 开启sprin-ai工程(Java17及以上)
      • 实现结构化输出:列出“演员”的5部电影
      • 测试输出:结构化输出的很好

本文为 spring-ai 入门篇,主要是基础概念知识和简单的ai对话实例

大模型注册获取api

deepseek: https://api-docs.deepseek.com/zh-cn/

阿里云百炼:https://bailian.console.aliyun.com/?tab=api#/api

我这里选择阿里云百炼的,可以有免费,直接参考文档创建好API Key
在这里插入图片描述

spring-ai的基础了解

spring-ai文档参考:https://www.spring-doc.cn/projects/spring-ai

ai基础概念:https://www.spring-doc.cn/spring-ai/1.0.0/concepts.html#_prompt_templates,建议看英文文档:https://www.spring-doc.cn/spring-ai/1.0.0/concepts.en.html

可以简单的了解一些概念:

  • Model(模型)
  • Prompt(提示词,模型的输入)
  • Token (Token是人工智能模型(尤其是大语言模型)处理文本的最小单位‌,可以是单词、子词、字符或符号,用于将文本转化为模型可计算的数字序列)
  • Structured Output (结构化输出)
  • Tool Calling (function calling) (函数调用)
  • MCP(模型上下文协议(Model Context Protocol),由Anthropic推出的开放标准协议,旨在实现大语言模型与外部数据源及工具的高效集成。该协议被视为AI应用的标准化接口,推动大模型应用的互联互通和场景拓展)
  • Agent
    AI Agent(Artificial Intelligence Agent,人工智能代理)是一种能够自主感知环境、进行决策并执行任务的智能实体。其核心特征在于将大语言模型(LLM)作为“大脑”,结合规划、记忆、工具调用等能力,实现复杂任务的自动化处理。例如,用户只需输入“取消订阅服务”,AI Agent即可自主分解步骤、调用支付接口完成操作。

spring-ai-alibaba

也可以使用Spring AI Alibaba ,其是一款以 Spring AI 为基础,深度集成百炼平台,支持 ChatBot、工作流、多智能体应用开发模式的 AI 框架。

参考文档:https://github.com/alibaba/spring-ai-alibaba/blob/main/README-zh.md

开启sprin-ai工程(Java17及以上)

可以参考生成spring-boot工程:https://docs.spring.io/spring-ai/reference/getting-started.html

  • application.properties
spring.application.name=demo-spring-testspring.ai.dashscope.api-key=<api-key>
spring.ai.dashscope.chat.options.model=qwen-plus

maven工程的pom.xml, 使用了spring-ai-alibaba

<?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.4.6</version><relativePath/> <!-- lookup parent from repository --></parent><groupId>com.example</groupId><artifactId>demo-spring-test</artifactId><version>0.0.1-SNAPSHOT</version><name>demo-spring-test</name><description>Demo project for Spring Boot</description><url/><licenses><license/></licenses><developers><developer/></developers><scm><connection/><developerConnection/><tag/><url/></scm><properties><java.version>17</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 Alibaba(通义大模型支持) --><dependency><groupId>com.alibaba.cloud.ai</groupId><artifactId>spring-ai-alibaba-starter</artifactId><version>1.0.0-M6.1</version></dependency><dependency><groupId>org.springframework.ai</groupId><artifactId>spring-ai-core</artifactId><version>1.0.0-M6</version></dependency><dependency><groupId>com.alibaba.cloud.ai</groupId><artifactId>spring-ai-alibaba-autoconfigure</artifactId><version>1.0.0-M6.1</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build></project>

实现结构化输出:列出“演员”的5部电影

package com.example.demo.controller;import com.example.demo.entity.ActorsFilms;
import org.springframework.ai.chat.client.ChatClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;/*** 参考:https://www.spring-doc.cn/spring-ai/1.0.0-M6/api_structured-output-converter.html*/
@RestController
public class StructuredOutputCallController {private final ChatClient chatClient;public StructuredOutputCallController(ChatClient.Builder chatClientBuilder) {this.chatClient = chatClientBuilder.build();}/*** curl http://localhost:8080/func*/@GetMapping("/func")public ActorsFilms chat() {ActorsFilms actorsFilms = chatClient.prompt().user(u -> u.text("Generate the filmography of 5 movies for {actor}.").param("actor", "Tom Hanks")).call().entity(ActorsFilms.class);return actorsFilms;}/*** curl http://localhost:8080/films?actor=成龙*/@GetMapping("/films")public ActorsFilms chat2(@RequestParam String actor) {ActorsFilms actorsFilms = chatClient.prompt().user(u -> u.text("列出演员{actor}的5部电影").param("actor", actor)).call().entity(ActorsFilms.class);return actorsFilms;}
}
  • ActorsFilms
package com.example.demo.entity;import com.fasterxml.jackson.annotation.JsonPropertyOrder;import java.util.List;@JsonPropertyOrder({"actor", "movies"})
public class ActorsFilms {public String actor;public List<String> movies;public ActorsFilms() {}public ActorsFilms(String actor, List<String> movies) {}
}

测试输出:结构化输出的很好

在这里插入图片描述

在这里插入图片描述

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

相关文章:

  • LangChain4j(20)——调用百度地图MCP服务
  • Python Async 编程快速入门 | 超简明异步协程指南
  • java代码规范
  • 自动化保护 AWS ECS Fargate 服务:使用 Prisma Cloud 实现容器安全
  • 阶段二开始-第一章—8天Python从入门到精通【itheima】-116节(封装)
  • 鸿蒙HarmonyOS 5小游戏实践:记忆翻牌(附:源代码)
  • DHT11 STM32 HAL驱动库 整数
  • .NetCore+Vue快速生产框架开发详细方案
  • Chrome浏览器访问https提示“您的连接不是私密连接”问题解决方案
  • 已对接Shopee、Lazada、亚马逊等知名海外电商平台!商派DigiOS-OMS业务中台助力品牌扩展全球业务
  • 《Opto-Electronic Advances》热点论文速览(2025)
  • linux中python虚拟环境和版本的选择
  • 【Linux手册】进程终止:进程退出和信号的响应机制
  • VB.NET,C#字典对象来保存用户数据,支持大小写
  • Selenium 多窗口截图(窗口切换)二次封装方法详解 —— Python 实践
  • 【Python】实现对LGBT+ rights worldwide (2025)数据集的可视化展示
  • MySQL在C中常用的API接口
  • TiDB AUTO_RANDOM 超大主键前端精度丢失排查:JavaScript Number 限制与解决方案
  • 玩转Linux CAN/CAN FD—SocketCAN的使用
  • opensuse安装rabbitmq
  • 【编译原理】期末复习知识总结
  • 【大数据】大数据产品基础篇
  • 【开源项目】「安卓原生3D开源渲染引擎」:Sceneform‑EQR
  • ArcGIS Pro利用擦除工具,矢量要素消除另一矢量部分区域
  • 【网络安全】密码学知识普及
  • 高可用与低成本兼得:全面解析 TDengine 时序数据库双活与双副本
  • OkHttp 简单配置
  • pandas---使用教程
  • 解构SAP RISE与Cloud ERP授权新政:从许可模式到迁移策略的深度指南
  • (一)miniconda安装配置