Spring AI 整合openAI的chatGpt

news2024/10/7 6:47:05

Spring AI支持ChatGPT,这是OpenAI的AI语言模型。ChatGPT在激发人们对人工智能驱动文本生成的兴趣方面发挥了重要作用。

SpringAi与Spring Boot 的整合详见上一篇文章:
Spring AI 介绍以及与 Spring Boot 项目整合

下面分四个部分来分别说明和演示,假设你已经完整地整合了Spring Ai,并且在配置文件里正确地配置了open ai key等参数。

1. 直接传入问题,生成最终结果后返回。

@RestController
@RequestMapping("/openai")
public class OpenAiChatController {

    @Resource
    private OpenAiChatModel openAiChatModel;


    // 定义一个接口,直接使用String参数类型
    @GetMapping("/chat/generate1")
    public String chat(@RequestParam(value = "message",defaultValue = "你是谁?") String message) {
        // 调用OpenAI聊天模型的call方法,传入message参数,得到返回结果
        String result = openAiChatModel.call(message);
        // 打印返回结果
        System.out.println(result);
        // 返回结果
        return  result;
    }
}

在这里插入图片描述

2.传入Prompt对象参数,生成最终结果后返回。

@RestController
@RequestMapping("/openai")
public class OpenAiChatController {

    @Resource
    private OpenAiChatModel openAiChatModel;


     // 定义一个方法,使用Prompt对象作为参数
    @GetMapping("/chat/generate2")
    public ChatResponse chat2(@RequestParam(value = "message",defaultValue = "你是谁?") String message) {
        // 调用openAiChatModel的call方法,传入Prompt对象,Prompt对象包含message和OpenAiChatOptions对象
        ChatResponse callResponse = openAiChatModel.call(new Prompt(message,
                OpenAiChatOptions.builder()
                        .withModel("gpt-3.5-turbo")  //指定模型的名称,gpt有很多模型,如gpt3.5,gpt-4o等,这里可以指定
                        .withTemperature(0.6f) //指定生成文本的匹配度,越高越创新,越低越保守。0.6是一个比较合适的值
                        .build()
         ));
        // 获取callResponse的result对象,然后获取output对象,最后获取content对象
        String result = callResponse.getResult().getOutput().getContent();
        System.out.println(result);
        // 返回callResponse
        return  callResponse;
    }
    }

在这里插入图片描述

3.直接传入问题,流式返回结果。

@RestController
@RequestMapping("/openai")
public class OpenAiChatController {

    @Resource
    private OpenAiChatModel openAiChatModel;


    // 定义一个接口,使用Prompt对象作为参数, 使用流式输出
    @GetMapping("/chat/generate3")
    public Object chat3(@RequestParam(value = "message",defaultValue = "你是谁?") String message) {
        // 调用OpenAI聊天模型的call方法,传入message参数,得到返回结果
        Flux<String> stream = openAiChatModel.stream(message);
        stream.toStream().forEach(System.out::println);
        // 返回结果
        return  stream.collectList();
    }
}

在这里插入图片描述

4.传入prompt,流式返回结果。

@RestController
@RequestMapping("/openai")
public class OpenAiChatController {

    @Resource
    private OpenAiChatModel openAiChatModel;


    // 定义一个接口,直接使用String参数类型, 使用流式输出
    @GetMapping("/chat/generate4")
    public Object chat4(@RequestParam(value = "message",defaultValue = "你是谁?") String message) {
        // 调用OpenAI聊天模型的call方法,传入message参数,得到返回结果
        Flux<ChatResponse> stream = openAiChatModel.stream(new Prompt(message));
        stream.toStream().forEach(System.out::println);
        // 返回结果
        return  stream.collectList();
    }
}

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1857017.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

hive优化之逻辑类似or逻辑重复

今天拿到一个二次开发的需求&#xff0c;只是增加一个业务类型&#xff0c;开发起来倒是也蛮轻松。 但是&#xff0c;对自己的要求不难这么低&#xff0c;否则可替代性也太高了。 除了完成自己的那部分开发&#xff0c;当然展现自己实力的&#xff0c;可以是优化。 1&#x…

【Altium】查找PCB上未连接的网络

【更多软件使用问题请点击亿道电子官方网站】 1、文档目标&#xff1a; PCB设计后期检查中找出没有连接的网络 应用场景&#xff1a;PCB设计后期&#xff0c;需要检查是否所有网络都已连接布线。虽然未连接的网络会有飞线显示&#xff0c;但是由于布线后期整板布线密度较高&…

Spring Bean自动装配:深入解析与实战应用

何为自动装配 在使用Spring框架配置bean时&#xff0c;我们通常需要为bean的属性设置值。如果不手动设置这些值&#xff0c;它们通常会被初始化为默认值&#xff08;对于对象类型通常是null&#xff0c;对于基本类型如int则是0&#xff0c;boolean是false等&#xff09;。自动…

使用js实现excel的读取展示以及导出

代码 <!DOCTYPE html> <html lang"zh"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</title><link rel"st…

Unity如何保存玩家的数据(Unity的二进制序列化)

文章目录 什么是二进制序列化读写文件构造函数 自定义二进制序列化 什么是二进制序列化 Unity中的二进制序列化是一种将游戏对象或数据结构转换为二进制格式的过程&#xff0c;以便于存储或网络传输。这使数据能够以高效的方式保存&#xff0c;同时在需要时可以被正确地恢复&a…

傅佩荣讲座视频全集百度网盘,傅佩荣讲座视频大全百度云

在当今信息爆炸的时代&#xff0c;获取知识的途径日益多元化&#xff0c;其中&#xff0c;通过网络观看各类教学视频已成为众多学习者的首选。傅佩荣教授的视频课程深受广大学者的喜爱。然而&#xff0c;对于许多初学者来说&#xff0c;如何下载傅佩荣的视频却是一个难题。本文…

Flutter 面试八股之深入理解 Dart 异步实现机制

为什么写这一篇内容&#xff1f;因为在此之前关于 《面试题里有意思的异步问题》 的文章收到一些「问题」&#xff0c;但是解释这些「问题」并不是“三言两语”就可以说清&#xff0c;所以干脆做一篇完整解析&#xff0c;相信本篇可以帮助你从头到尾理清 Flutter 里 Dart 的完整…

创新、引领、发展——SAMPE中国2024年会在京盛大开幕

绿树阴浓夏日长&#xff0c;在这个色彩缤纷的季节&#xff0c;SAMPE中国2024年会暨第十九届国际先进复合材料制品原材料、工装及工程应用展览会在中国国际展览中心&#xff08;北京朝阳馆&#xff09;隆重开幕。新老朋友共聚一堂&#xff0c;把酒话桑麻。 为期4天的国际学术会…

公共筛选组件(二次封装antd)支持代码提示

如果项目是基于antd组件库为基础搭建&#xff0c;可使用此公共筛选组件 使用到的库 npm i antd npm i lodash-es npm i types/lodash-es -D/components/CommonSearch index.tsx import React from react; import { Button, Card, Form } from antd; import styles from ./…

LED显示屏的换帧频率与刷新频率:技术细节与市场发展

在当今数字化时代&#xff0c;LED显示屏已成为信息传递和广告宣传的重要工具。然而&#xff0c;对于普通消费者来说&#xff0c;LED显示屏背后的技术细节可能仍然是一个谜。今天&#xff0c;我们将深入探讨LED显示屏中的两个关键概念&#xff1a;换帧频率和刷新频率&#xff0c…

ARM功耗管理软件之WFIWFE

安全之安全(security)博客目录导读 思考&#xff1a;功耗管理软件栈及示例&#xff1f;WFI&WFE&#xff1f;时钟&电源树&#xff1f;DVFS&AVS&#xff1f; ARM功耗管理精讲与实战汇总参见&#xff1a;Arm功耗管理精讲与实战

PS系统教程26

PS与BR的关系 如何把图片以图层的方式导入画板里面 选中三张图片/多张选择工具-PS-将文件载入PS图层意味着这三张图片以图层的方式嵌入PS中 拼接长图 裁剪图片 保存裁剪后的图片拼接图片选中要拼接的图片选择工具-PS-Photomerge(拼合图像&#xff09; 图像处理器 大白话&…

APM教程-SkyWalking安装和配置

SkyWalking简介 APM (Application Performance Management) 即应用性能管理&#xff0c;属于IT运维管理&#xff08;ITOM)范畴。主要是针对企业 关键业务的IT应用性能和用户体验的监测、优化&#xff0c;提高企业IT应用的可靠性和质量&#xff0c;保证用户得到良好的服务&#…

IDEA中 pom.xml 设置自动提示

IDEA中 pom.xml 自动提示 IDEA中 pom.xml 自动提示设置如下&#xff1a; file–>Settings–>Build,Execution…–>Build Tools–>Maven–>Repositories 会看到类似表格的画面&#xff0c;内容是你的maven地址&#xff0c;选中后&#xff0c;右边有个Update的按…

轻量级在线服装3D定制引擎Myway简介

我写的面向web元宇宙轻量级系列引擎中的另外一个&#xff0c;在线3D定制引擎Myway 3D。 用于在线商品定制&#xff0c;比如个性化服装的定制、日常用品&#xff08;如杯子&#xff09;、家装&#xff08;被套&#xff09;等物品的在线定制。 特性列表&#xff1a; 可更换衣服…

会话会话会话

目录 1.会话 1.1 为什么需要会话控制 1.2 域对象的范围 1.2.1 应用域的范围 1.2.2 请求域的范围 1.2.3 会话域的范围 1.3 Cookie技术 1.3.1 Cookie的概念 1.3.2 Cookie的作用 1.3.3 Cookie的应用场景 1.3.4 Cookie的入门案例 ① 目标 ② Cookie相关的API ③ Serv…

Python自动化(8)——pyqt5界面

Python自动化(8)——pyqt5界面 注意&#xff1a;pyqt5的界面使用时必须有app QApplication(sys.argv)这行代码&#xff0c;否则会出现错误并且无法显示窗口&#xff1a;QWidget: Must construct a QApplication before a QWidget 一些基础的控件 QMainWindow QMainWindow是…

ESP32 esp-idf esp-adf环境安装及.a库创建与编译

简介 ESP32 功能丰富的 Wi-Fi & 蓝牙 MCU, 适用于多样的物联网应用。使用freertos操作系统。 ESP-IDF 官方物联网开发框架。 ESP-ADF 官方音频开发框架。 文档参照 https://espressif-docs.readthedocs-hosted.com/projects/esp-adf/zh-cn/latest/get-started/index.…

(1995-2022年) 全国各省份-技术交易活跃度

技术交易活跃度是一个关键指标&#xff0c;用于衡量技术市场的交易频繁程度和活跃性。它不仅显示了市场参与者对技术交易的参与热情&#xff0c;而且交易的频率也体现了市场的活力。这一指标对于不同的利益相关者具有不同的意义&#xff1a; 对投资者而言&#xff0c;技术交易…

尚硅谷k8s

p1-6 阿里云服务器开通流程 阿里云服务器购买等各种操作,省略 p7 私有网络vpc实战 VPC&#xff08;Virtual Private Cloud&#xff09;网络&#xff0c;是一种基于云计算的网络服务&#xff0c;旨在为用户提供在公有云上自定义的、逻辑隔离的网络空间。 设置vpc可以使网络之…