Spring AI Alibaba-ChatClient

一、ChatClient是什么?

二、ChatModel与ChatClient的区别

  • ChatModel:对话模型(ChatModel)是底层接口,直接与具体大语言模型交互,提供call()和stream()方法,适合简单大模型交互场景。

  • ChatClient:ChatClient是高级封装,基于ChatModel构建,适合快速构建标准化复杂AI服务,支持同步和流式交互,集成多种高级功能。

三、编码

依赖

java 复制代码
<?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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>com.ai</groupId>
        <artifactId>SpringAI</artifactId>
        <version>1.0-SNAPSHOT</version>
    </parent>

    <artifactId>SSA-03ChatClientModel</artifactId>

    <properties>
        <maven.compiler.source>17</maven.compiler.source>
        <maven.compiler.target>17</maven.compiler.target>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>com.alibaba.cloud.ai</groupId>
            <artifactId>spring-ai-alibaba-starter-dashscope</artifactId>
            <version>1.1.2.1</version>
        </dependency>
    </dependencies>

</project>

配置文件

java 复制代码
server.port=9096
server.servlet.encoding.enabled=true
server.servlet.encoding.force=true
server.servlet.encoding.charset=UTF-8
spring.ai.dashscope.api-key=${qianwen}

Controller

java 复制代码
package com.ai.controller;

import jakarta.annotation.Resource;
import org.springframework.ai.chat.client.ChatClient;
import org.springframework.ai.chat.model.ChatModel;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import reactor.core.publisher.Flux;

@RestController
public class ChatClientV2Controller {
//    可共存
    @Resource
    ChatModel chatModel;
    @Resource
    ChatClient chatClient;
    @RequestMapping("/chat/normal")
    public String say(@RequestParam(value = "msg",defaultValue = "你是谁") String msg){
        return chatModel.call(msg);
    }

    @RequestMapping("/chatClient/v2")
    public String chatClient(@RequestParam(value = "msg",defaultValue = "分析今日金价") String msg){
        return chatClient.prompt().user(msg).call().content();
    }
}

总结

相关推荐
知几蜗牛4 分钟前
本地语音AI不等于零风险:VoiceStudio最值得看的三条边界
人工智能
知几蜗牛4 分钟前
Claude接入十余种金融系统后,真正稀缺的是可追溯的审批链
人工智能
小羊没烦恼!10 分钟前
Memory 记忆设计讨论:为什么 Agent Memory 不能只靠向量数据库?
java·开发语言·windows·算法·c#
天远API11 分钟前
零信任架构实战:基于天远单人婚姻查询构建自动化联合贷款审计网关
java·人工智能·架构·自动化
远航计算机12 分钟前
网站被 AI 收录要多久?从被抓取到被引用的完整时间表
大数据·人工智能·aigc
昨日之日200615 分钟前
AuK:多任务语音生成编辑,支持克隆、改词、换情绪与分离,内容编辑与增强全覆盖
人工智能·音视频
九皇叔叔16 分钟前
从本地事务到分布式事务
java·分布式·分布式事务·cap·base
知几蜗牛21 分钟前
4万星的Agent技能提醒我们:答案太全也可能不可用
人工智能
智购科技无人售货机工厂21 分钟前
2026自动售货机AI智能体架构:从47个小模型到33.7亿Token的工程实践~YH
android·人工智能·驱动开发·单片机·pandas
Geek-Chow23 分钟前
09. LLM 接缝:把“厂商协议“关进一个可替换的盒子
人工智能