使用spring-ai快速对接ChatGpt

ops/2024/9/25 23:21:03/

什么是spring-ai

该Spring AI项目旨在简化包含人工智能功能的应用程序的开发,避免不必要的复杂性。

该项目从著名的 Python 项目(例如 LangChain 和 LlamaIndex)中汲取灵感,但 Spring AI 并不是这些项目的直接移植。该项目的成立相信下一波生成式人工智能应用程序不仅适用于 Python 开发人员,而且将在许多编程语言中普遍存在。

Spring AI 的核心提供了抽象,作为开发 AI 应用程序的基础。这些抽象有多种实现,可以通过最少的代码更改轻松进行组件交换。

Spring AI 提供以下功能:

  • 支持所有主要模型提供商,例如 OpenAI、Microsoft、Amazon、Google 和 Huggingface。
  • 支持的模型类型包括“聊天”和“文本到图像”,还有更多模型类型正在开发中。
  • 跨 AI 提供商的可移植 API,用于聊天和嵌入模型。支持同步和流 API 选项。还支持下拉访问模型特定功能。
  • AI 模型输出到 POJO 的映射。
  • 支持所有主要矢量数据库提供商,例如 Azure 矢量搜索、Chroma、Milvus、Neo4j、PostgreSQL/PGVector、PineCone、Qdrant、Redis 和 Weaviate
  • 跨 Vector Store 提供商的可移植 API,包括同样可移植的新颖的类似 SQL 的元数据过滤器 API。
  • 函数调用
  • AI 模型和向量存储的 Spring Boot 自动配置和启动器。
  • 数据工程的 ETL 框架

OpenAI 聊天

Spring AI 支持 OpenAI 的 AI 语言模型 ChatGPT。由于创建了行业领先的文本生成模型和嵌入,ChatGPT 在激发人们对人工智能驱动的文本生成的兴趣方面发挥了重要作用。

先决条件

需要使用 OpenAI 创建 API (访问此网址需要魔法)来访问 ChatGPT 模型。在OpenAI 注册页面创建帐户并在API 密钥页面生成令牌(生成令牌需要国外手机号验证码:国外免费接码平台推荐_国外手机号短信验证码平台-CSDN博客)。 Spring AI 项目定义了一个名为的配置属性,应该将其设置为从 openai.com 获取spring.ai.openai.api-key的值。

第一步:打开专业版idea并新建项目

第二步:添加这二个依赖项后点击创建

第三步:在application.properties配置相关东西

spring.application.name=demo_aispring.ai.openai.api-key=这里写自己申请的gpt的api
spring.ai.openai.chat.options.model=gpt-3.5-turbo
spring.ai.openai.chat.options.temperature=0.7

第四步:新建个 ChatController的Java类

package org.example.demo_ai;import org.springframework.ai.chat.ChatResponse;
import org.springframework.ai.chat.messages.UserMessage;
import org.springframework.ai.chat.prompt.Prompt;
import org.springframework.ai.openai.OpenAiChatClient;
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 reactor.core.publisher.Flux;import java.util.Map;@RestController
public class ChatController {private final OpenAiChatClient chatClient;@Autowiredpublic ChatController(OpenAiChatClient chatClient) {this.chatClient = chatClient;}@GetMapping("/ai/generate")public Map generate(@RequestParam(value = "message", defaultValue = "Tell me a joke") String message) {return Map.of("generation", chatClient.call(message));}@GetMapping("/ai/generateStream")public Flux<ChatResponse> generateStream(@RequestParam(value = "message", defaultValue = "Tell me a joke") String message) {Prompt prompt = new Prompt(new UserMessage(message));return chatClient.stream(prompt);}
}

第五步:运行springboot项目,并在Postman测试接口

注意

还有更多的属性可以自行前往官网查看


http://www.ppmy.cn/ops/13764.html

相关文章

环保文档~

据估计&#xff0c;网络行业对气候的影响占全球碳排放量的 2% 至 4%&#xff0c;大致相当于航空业的排放量。 计算网站的生态影响有许多复杂的因素&#xff0c;但本指南包含一些减少文档网站环境足迹的提示。 根据网站碳计算器显示&#xff0c;Starlight 比 99% 的测试网页更清…

QT 按钮的工具提示tooltips设置字体大小颜色与背景

QT 按钮的工具提示tooltips设置字体颜色与背景 main.cpp添加 mainwindow.cpp添加全局配置&#xff1a; 构造函数中&#xff1a; QToolTip::setFont(font3); //按钮提示信息通用设置 如下&#xff1a; MainWindow_oq::MainWindow_oq(QWidget *parent) : QMainWindow(parent)…

js html生成图片

js html生成图片 下载依赖 npm install html2canvas引入依赖 import html2canvas from "html2canvas"代码 export const handleHtml2Img async (el, options {}) > {let canvas await new html2canvas(el, options);let imgUrl canvas.toDataURL();return…

idea中打印日志不会乱码,但是部署到外部tomcat中乱码了。

问题&#xff1a;如图Tomcat乱码&#xff0c;而且启动时的系统日志不会乱码&#xff0c;webapp中的打印日志才乱码。 idea中的情况如下&#xff1a;正常中文展示。 问题分析&#xff1a;网上分析的原因是Tomcat配置的字符集和web应用的字符集不匹配&#xff0c;网上集中的解决…

华为机考入门python3--(18)牛客18- 识别有效的IP地址和掩码并进行分类统计

分类&#xff1a;字符串 知识点&#xff1a; 字符串是否由数字组成 my_str.isdigit() 字符串填充 不足8位左侧填充0 my_str.zfill(8) 题目来自【牛客】 import sys def classify_ip(ip_mask): ip_class, is_private_ip, mask_class ignore_ip, 0, valid_mask# 解…

C++多重继承解决方法

eg1&#xff1a;解决方法&#xff1a;添加作用域标识符&#xff0c;消除成员限定的二义性 #include <iostream> #include<iostream> #include<vector> using namespace std; class A { public: void f() { cout << "A::f()&quo…

mysql的常用配置

1. 设置MySQL字段名不区分大小写 [mysqld] lower_case_table_names1 2. GROUP BY 字段不需要在 SELECT 查询中出现 在 SQL 中&#xff0c;通常要求在 SELECT 语句中的 GROUP BY 字段也必须出现在 SELECT 字段列表中&#xff0c;这是为了确保查询的一致性&#xff0c;并且遵循…

UE5 GAS开发P35,36,37,38,39 将药水修改为AbilitySystem效果

这几节课都是将药水修改成更方便使用的AbilitySystem效果的Actor,分别为增加血量,增加蓝量,暂时获得最大生命值上限 AuraEffectActor.h // Fill out your copyright notice in the Description page of Project Settings. #pragma once #include "CoreMinimal.h" #…