SpringAI--使用免费API-Key和API进行配置

目录

📚 前言

📑Spring AI简介

   💬 项目配置

📚 系统功能的具体实现

 💬 编写Controller控件


📚 前言

📑博客主页:@丘比特惩罚陆

💖欢迎关注:点赞收藏⭐留言✒
💬系列专栏:Java 后端
🎮 加入社区: 丘比特惩罚陆
🥇人生格言:选对方向,每走一步都是进步!
✒️欢迎大佬指正,一起学习!一起加油!

👏 希望大家能小手一动,帮忙点个赞!


📑Spring AI简介

  什么是Spring AI呢,Spring AI并不是一个标准术语或现有的技术框架。"Spring"通常指的是Spring Framework,这是一个广泛使用的Java开发框架,专为构建企业级应用程序提供轻量级的依赖注入和管理工具。然而,说到Spring和AI的结合,可能是指Spring Boot与人工智能技术的集成,比如使用Spring for Machine Learning (S4ML)或Spring Cloud Stream与AI微服务相结合。

在实际中,开发者可能会用Spring Boot作为基础,构建包含机器学习模型、自然语言处理(NLP)或者其他AI组件的应用。但这并不是Spring官方项目的一部分,而是开发者利用Spring生态进行扩展和集成AI功能的例子。

  简单而言,Spring AI 是AI工程师所使用的一种应用性框架,通过提供出来的API和API key来进行开发应用,所用在于使用AI应用来简化开发工序流程。

  本文使用的是免费的API key进行文章的叙述(免费的API有生成限制,每天生成内容为100条为限制,使用的是ChatGPT 3.5免费非商用的API key进行讲解讲述,付费的自行获取,该文章只用于讲解Springboot项目如何使用SpringAI。)

📑 准备工作

    家政服务管理平台的主要功能的结构:

  1. 一个OpenAI的key秘钥;
  2. 一个可以使用的OpenAi的API地址;
  3. 一个java Springboot的jdk (本项目使用的为17版本);
  4. 一个开发软件 IDEA(本项目使用的是2023年的IDEA);

一般OpenAI 的key 秘钥和API地址都是要准备好的,很多人都是卡在这一步,所以我给大家提供了一个可以使用免费共享的API key,地址如下:

GitCode - 全球开发者的开源社区,开源代码托管平台

首先先是按部就班的先是设置好自己的登录信息:

进来之后就可以看到这个界面:

提供了GPT4在内的免费的可以申请的Key,还有其他的付费的五个模型,包括GPT4o,这里就不一一赘述;


📑项目搭建

第一步,我们先试用IDEA 大家一个Springboot项目,一定要使用JDK17的,其他版本的经过测试会出现版本报错的错误;建议大家还是使用17版本以上的JDK;

第二步:选择初始的依赖项

第三部:配置pom.xml的依赖;

  <repositories><repository><id>spring-snapshots</id><name>Spring Snapshots</name><url>https://repo.spring.io/snapshot</url><releases><enabled>false</enabled></releases></repository></repositories>
    <dependency><groupId>org.springframework.experimental.ai</groupId><artifactId>spring-ai-openai-spring-boot-starter</artifactId><version>0.7.0-SNAPSHOT</version></dependency>

完整的配置地方如下:

         

然后刷新Maven按照,将依赖包下载下来;

   💬 项目配置

打开我们的application配置,一般是新建的项目生成的是properties,我这边生成的也是properties,所以配置如下:

spring.application.name=lss-springAiserver.address=0.0.0.0
server.port=8889
server.error.whitelabel.enabled=falsespring.ai.openai.api-key= sk-KjOdJswQ2PrvrcsUGbNpcliB7FWVznupYap2X1tfGfSW0lqH
spring.ai.openai.base-url=https://api.chatanywhere.com.cn

其中的 spring.ai.openai.api-key:获取就是我们之前说的地址:点击:“申请内测免费Key”,进来就是一个这样的界面:

spring.ai.openai.base-url:就是在这个网址的下面,我们选择一个免费的国内中转就行;

📚 系统功能的具体实现

 💬 编写Controller控件

先是第一步先是新建一个controller层,然后新建一个自己可以命名的SpringAIController,如下:

源码内容如下:

package com.lushengshi.lssspringai.controller;import org.springframework.ai.client.AiClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;@RestController
@RequestMapping("/api/lss")
public class SpringAiController {private final AiClient aiClient;public SpringAiController(AiClient aiClient) {this.aiClient = aiClient;}@GetMapping("/chat")public String chat(@RequestParam(value = "input",defaultValue = "Hello") String message){return aiClient.generate(message);}}

接着我们在启动类当中进行一下配置,因为我们使用的是免费的key和API地址,所以我们启动的时候需要配置一下端口和代理:

代码如下:

package com.lushengshi.lssspringai;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplication
public class LssSpringAiApplication {public static void main(String[] args) {System.setProperty("https://api.chatanywhere.tech","127.0.0.1");System.setProperty("http.proxyPort","8889");System.setProperty("https://api.chatanywhere.tech","127.0.0.1");System.setProperty("https.proxyPort","8889");SpringApplication.run(LssSpringAiApplication.class, args);}}

这就配置完成了,然后我们就启动项目,然后到浏览器;输入地址:localhost:8889/api/lss/chat?input=xxxx,我测试成功了,然后因为在配置的时候我配置了跨域,所以在另一台计算机上,我使用服务器的地址来测试接口:

也是可以的。好了,今天的文章就到此为止,大家有什么疑问可评论区进行讨论!再此感谢PG Thinker 这位博主的提供的思路!

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

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

相关文章

【Vue】getters

除了state之外&#xff0c;有时我们还需要从state中筛选出符合条件的一些数据&#xff0c;这些数据是依赖state的&#xff0c;此时会用到getters getters就类似于属性中的计算属性 这个getter只有获取&#xff0c;如果需要设置修改&#xff0c;还是需要经过mutations getters里…

C++网络编程基础

文章目录 协议局域网通信IP 地址网络通信的本质tcp 和 udp 协议网络字节序网络主机数据转化接口 协议 协议&#xff1a;收到数据后&#xff0c;多出来的那一部分&#xff0c;也叫一种 “约定”&#xff0c;一整套的自硬件到软件&#xff0c;都有协议&#xff0c;需要有人定制&a…

如何使用Python在word文档中创建表格

如何使用Python在word文档中创建表格 介绍效果代码 介绍 本文将介绍如何使用Python库python-docx在Word文档中创建表格。 效果 插入表格前的word文档&#xff1a; 插入表格后的word文档&#xff1a; 代码 from docx import Document# 加载现有的Word文档 doc Document(…

重新学习STM32(1)GPIO

概念简介 GPIO 是通用输入输出端口的简称&#xff0c;简单来说就是 STM32 可控制的引脚。STM32 芯片通过 GPIO 引脚与外部设备连接起来&#xff0c;从而实现与外部通讯、控制以及数据采集的功能。 GPIO被分成很多组&#xff0c;比如 GPIOA和GPIOB等。所有的 GPIO引脚都有基本的…

C语言期末概念题100道

花括号“{”和“}”只能作为函数体的定界符 F。花括号不仅可以作为函数体的定界符&#xff0c;还可以用于其他块结构&#xff0c;如控制语句&#xff08;if、while、for等&#xff09;和复合语句。 C程序中的每行只能写一条语句 F。C语言中每行可以包含多条语句&#xff0c;只需…

【护网简历模版】改了10个在校大学生的简历的感想

护网简历模版 吉祥学安全知识星球&#x1f517;除了包含技术干货&#xff1a;Java代码审计、web安全、应急响应等&#xff0c;还包含了安全中常见的售前护网案例、售前方案、ppt等&#xff0c;同时也有面向学生的网络安全面试、护网面试等。 在上篇文章中&#xff1a;如何面试…

前端JS必用工具【js-tool-big-box】学习,获取当前浏览器向上滚动还是向下滚动,获取当前距离顶部和底部的距离

这一小节&#xff0c;我们说一下 js-tool-big-box 添加的最新工具方法&#xff0c;在日常前端开发工作中&#xff0c;如果网页很长&#xff0c;我们就需要获取当前浏览器是在向上滚动&#xff0c;还是向下滚动。如果向上滚动&#xff0c;滚动到0的时候呢&#xff0c;需要做一些…

Linux网络命令——netstat

netstat是Linux系统中非常有用的网络工具&#xff0c;被称为是网络监控中的军工刀&#xff0c;足见其地位。 传统上&#xff0c;它用于问题确定而不是性能测量&#xff0c;但是也可用于查看网络上的流量&#xff0c;以确定性能问题是否由于网络阻塞引起。 netstat用于显示与I…

建筑二建考试试题及答案,分享几个实用搜题和学习工具 #微信#经验分享

大学生必备的搜题工具&#xff0c;专业课本习题、电子版教材、考研资料、英语四六级等考试题目也能一并搜索&#xff0c;每道题目都有详细的讲解&#xff0c;每个都堪称大学神器。 1.掌上识别王 一个可以快速纸质书籍上内容扫描成电子档的工具&#xff0c;为了方便大家快速搜…

好用的Web数据库管理工具SQLynx

SQLynx 是一款功能强大且用户友好的 Web 数据库管理工具&#xff0c;原生支持个人和企业用户&#xff0c;专为简化数据库管理和操作而设计。 目录 1 主要特点 2 优势 3 典型使用场景 4 示例 5 结论 SQLynx原名SQL Studio&#xff0c;产品100%自主研发&#xff0c;无任何开…

OSI七层网络参考模型

一、物理层 我们要发送出去的数据在计算机里只不过是无数的0和1&#xff0c;0或1就叫做比特&#xff0c;物理层就是把这些比特用不同的媒介传输出去&#xff0c;可以用电、光或者其他形式的电磁波来表示和传输信号&#xff0c;数据从网络接口出去以后&#xff0c;会经过不同的网…

dat.gui图形用户页面

一、导入 1.npm安装 npm install --save dat.gui 引入&#xff1a; // CommonJS: const dat require(dat.gui); // ES6: import * as dat from dat.gui; const gui new dat.GUI(); 二、控制器 <!DOCTYPE html> <html lang"en"> <head><…

【重磅开源】MapleBoot权限控制使用介绍(菜单权限、按钮权限、数据权限)

基于SpringBootVue3开发的轻量级快速开发脚手架 ## &#x1f341;项目简介 一个通用的前、后端项目模板 一个快速开发管理系统的项目 一个可以生成SpringBootVue代码的项目 一个持续迭代的开源项目 一个程序员的心血合集 度过严寒&#xff0c;终有春日&#…

Spring (50)Ribbon

Netflix Ribbon是一个客户端负载均衡器&#xff0c;它提供了一系列完善的配置项&#xff1a;如连接超时、重试、负载均衡策略等。在微服务架构中&#xff0c;Ribbon通常被用于调用其它服务&#xff0c;通过负载均衡选择一个最佳的服务实例进行交互。Spring Cloud将Ribbon整合在…

【深度学习】Loss为Nan的可能原因

文章目录 1. 问题情境2. 原因分析3. 导致Loss为Nan的其他可能原因 1. 问题情境 在某个网络架构下&#xff0c;我为某个数据项引入了一个损失函数。 这个数据项是nn.Embedding类型的&#xff0c;我加入的损失函数是对nn.Embedding空间做约束。 因为我在没加入优化loss前&#x…

C# WPF入门学习主线篇(八)—— ListBox常见属性和事件

C# WPF入门学习主线篇&#xff08;八&#xff09;—— ListBox常见属性和事件 欢迎来到C# WPF入门学习系列的第八篇。在前面的文章中&#xff0c;我们已经探讨了WPF中的Button、TextBox和Label控件的使用。今天&#xff0c;我们将深入了解WPF中的另一个常用控件——ListBox。本…

GPS原理与接收机设计

将伪码中的一位二进制数称为一个码片&#xff0c;或者称为一个码元&#xff0c;一个码片的持续时间称为码宽&#xff0c;单位时间内所包含的码片数目称为码率。 GPS信号中的C/A码属于金码&#xff0c;能产生金码的一对m序列称为优选m序列对。通过调节其中一个m序列的延时&…

Pulsar 社区周报 | No.2024-06-07 | Apache Pulsar 新分支 3.3 版本发布

“ 各位热爱 Pulsar 的小伙伴们&#xff0c;Pulsar 社区周报更新啦&#xff01;这里将记录 Pulsar 社区每周的重要更新&#xff0c;每周发布。 ” 本期主题&#xff1a;Apache Pulsar 新分支 3.3 版本发布 Apache Pulsar 新分支 3.3 版本发布&#xff1a;Apache Pulsar 3.3.0[1…

必备:产品经理工作文档大全

产品经理&#xff08;英文&#xff1a;Product manager&#xff0c;缩写&#xff1a;PM&#xff09;也称产品企划&#xff0c;是指在公司中针对某项或某类的产品进行规划和管理的人员&#xff0c;主要负责产品的研发、制造、营销、渠道等工作。 产品经理是很难定义的一个角色&a…

DeepSORT(目标跟踪算法)中的数值表格与调参的关系

DeepSORT&#xff08;目标跟踪算法&#xff09;中的数值表格与调参的关系 flyfish DeepSORT&#xff08;目标跟踪算法&#xff09;中的马氏距离详解&#xff08;很详细&#xff09; DeepSORT&#xff08;目标跟踪算法&#xff09;中 可以设置阈值进行异常检测或目标跟踪的原…