SpringAI初体验之HelloWorld

2024-04-13 11:44

本文主要是介绍SpringAI初体验之HelloWorld,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

  • 前言
  • 1.准备工作
  • 2.初始化项目
  • 3.解决问题
    • 3.1 Connection Time out 连接超时问题
    • 3.2 You exceeded your current quota 额度超限问题
  • 4.访问调用
  • 5.总结

前言

  在逛SpringBoot页面时突然看到页面上新增了一个SpringAI项目,于是试了一下,感觉还行。其实就是封装了各家的api调用过程,不过这也是一个好的开始。最近我一直在思考,什么是AI时代的程序员?最后得到的答案是可能一个人就是一个开发团队吧。目前AI的能力在单个需求方面对程序员都是碾压性的,程序员现在能做的就是理解整个的业务需求,进而合作实现。试想如果未来AI能一个人干一个团队的活,那程序员就只需要做业务分析就好了。那时可能谁理解的好,谁就是好的程序员。

1.准备工作

  首先我们需要的是全面的新环境。因为国内很多项目都还是基于JDK1.8做的,很多人还用的是IDEA2019,这已经完全跟不上时代的潮流了。因此现在我们需要的是:

  1. JDK ≥ 17
  2. IDEA ≥ 2022
  3. OpenAI的key
  4. Fan Qiang

  如果你无法使用OpenAI的环境,那么你还可以看看其他的环境,目前SpringAI支持的环境有很多了,具体可以查看https://spring.io/projects/spring-ai
在这里插入图片描述

2.初始化项目

  • 新建项目
    在这里插入图片描述
  • 勾选WebAI
    在这里插入图片描述
    在这里插入图片描述
  • 等待Maven完成安装

如果阿里云的仓库下载失败,就不要死磕了,换成默认的

 <repository><id>spring-milestones</id><name>Spring Milestones</name><url>https://repo.spring.io/milestone</url><snapshots><enabled>false</enabled></snapshots></repository>
  • 注意观察pom中的引用
 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency><groupId>org.springframework.ai</groupId><artifactId>spring-ai-openai-spring-boot-starter</artifactId>
</dependency>
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope>
</dependency>
  • 新建一个ChatController,代码及其简单
@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) {System.setProperty("http.proxyHost", "127.0.0.1");System.setProperty("http.proxyPort", "10809");System.setProperty("https.proxyHost", "127.0.0.1");System.setProperty("https.proxyPort", "10809");System.setProperty("proxySet", "true");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);}
}
  • application.properties中配置OpenAi的key
    在这里插入图片描述
spring.ai.openai.api-key=YOUR_API_KEY
spring.ai.openai.chat.options.model=gpt-3.5-turbo
spring.ai.openai.chat.options.temperature=0.7

目前可以选择的模型有:
在这里插入图片描述

3.解决问题

3.1 Connection Time out 连接超时问题

  这是因为java代码里并没有设置开启代理导致的。有些梯子默认就是全局,所以在代码里并不用设置,但是有的梯子不是,需要设置,其实上面的代码里写过了,还有一些人通过socks5设置代理,自己选择合适的方式吧。

System.setProperty("http.proxyHost", "127.0.0.1");
System.setProperty("http.proxyPort", "10809");
System.setProperty("https.proxyHost", "127.0.0.1");
System.setProperty("https.proxyPort", "10809");
System.setProperty("proxySet", "true");

如果你不知道你的梯子使用的ip和端口是多少,那么你可以按照这个顺序查看一下:
win10和win11的ip和端口查找方法:右键开始菜单-设置-网络和Internet-代理-手动设置代理

  关于这个问题,我也让ChatGPT回答了一下:
在这里插入图片描述

3.2 You exceeded your current quota 额度超限问题

在这里插入图片描述
429问题在OpenAI的官网有解释:
在这里插入图片描述
简单来说就是你需要升级为付费账户,或者你的账户额度不够用了,再加钱就是了。

4.访问调用

在这里插入图片描述
还记得我们问的什么问题吗?对,tell me a joke
在这里插入图片描述
再访问一次,看会不会变化?
在这里插入图片描述
nice,变了,说明有效。

5.总结

  新技术的出现总会让人有种焦虑感,有些人是抵制,有些人拥抱,有些人是无感,有些人是冷漠。但是我想,这可能就是当初电和汽车的出现一样,会毁掉很多人的饭碗,但是同时也会产生很多新的饭碗。因此不要怕,AI就是一个工具,程序员应该比很多人更加有机会首先了解并使用AI。只要你能坚持不断学习,相信未来的你,一定不会被机器取代,因为机器没得感情。

这篇关于SpringAI初体验之HelloWorld的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/900044

相关文章

Python简单入门教程helloworld

Python 学习资源 推荐书籍: Python核心编程(第二版) (强烈推荐,建议有一定基础的看,或者看完简明Python教程再看) Python 基础教程 第二版 (入门,没有核心编程好,但也不错) 编写高质量代码:改善Python程序的91个建议 (进阶,有一定基础再看) 书籍下载: Python 教程(部分内容来源于网络, 历时一年多总结整理的,给刚刚入门的

Node.js初体验 Kali安装Node.js

背景:偶然看到node.js开发微信公众号的视频,有些好奇,想要接触下。然后花了两个小时在实验楼网站上在线学习了JavaScript的基础知识,以及Node.js的基础 接着本着从实践出发的原则 先去本地kali下安装个Node.js玩玩 下载地址:https://nodejs.org/en/download/ 网页最下面有提示:Note: Python 2.6 or 2.7 is requ

HelloWorld 模块

helloworld.c 代码 #include <linux/init.h>#include <linux/module.h>MODULE_LICENSE("Dual BSD/GPL");static int hello_init(void){printk(KERN_ALERT "Hello world\n");return 0;}static void hello_exit(v

html初体验标准标签

<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><title>Document</title></head><body><input type="text"></body></html> 内容展示

ROS程序设计系列 - 5.实例helloworld

ROS程序设计系列 - 5.实例helloworld 1. 源由2. 步骤Step 1:安装ROS系统Step 2:创建框架工程Step 3:检查工程结构Step 4:创建CPP文件Step 5:修改配置文件Step 6:编译工程 3. 测试Step 1: 启动ROS CoreStep 2: 启动Hello程序 4. 总结5. 参考资料6. 补充 1. 源由 在做《Ardupil

使用命令行窗口新建一个Java文件,输出HelloWorld

进入桌面 cd desktop 在桌面新建文件夹 mkdir zwt 进入文件夹,新建.Java文件 cd zwtecho. > helloWorld.java 使用记事本打开文件编写代码 notepad HelloWorld.java 此时电脑就会自动打开文件,直接编写代码 public class HelloWorld(){public static void mi

Qwen-7B-Chat大模型安装训练推理-helloworld

初始大模型之helloworld编写 开发环境:modelscope GPU版本上测试的,GPU免费36小时 ps:可以不用conda直接用环境自带的python环境使用 魔搭社区 安装conda wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh 1.2 bash Minicond

【 OpenHarmony 4.1 Launcher 源码解析 】-- 初体验

前言 最近因为业务需要,需要做一款 UI 定制的鸿蒙 Launcher,于是就开始了「找到代码」、「研究代码」、「魔改代码」的套路流程,仅以此文章作为知识备份和技术探讨所用,也希望能给其他小伙伴提供一些源码的解析思路,方法大家各自魔改! 一、官方简介 Gitee codes:应用子系统/Launcher Launcher 作为系统人机交互的首要入口,提供应用图标的显示、点击启动、卸载应

通义千问AI PPT初体验:一句话、万字文档、长文本一键生成PPT!

大家好,我是木易,一个持续关注AI领域的互联网技术产品经理,国内Top2本科,美国Top10 CS研究生,MBA。我坚信AI是普通人变强的“外挂”,专注于分享AI全维度知识,包括但不限于AI科普,AI工具测评,AI效率提升,AI行业洞察。关注我,AI之路不迷路,2024我们一起变强。 你有多久没有听到国内AI大模型的最新消息了? 不是国内AI领域不卷了,而是“卷”的方向变了。2023年卷

华为云 Flexus X 实例使用测评:上手初体验,比想象的更丝滑

华为云 Flexus 云服务是华为云推出的一款主打柔性算力,高效性能,高安全,高性价比的旗舰级云服务产品。主要面向金融、游戏、零售、直播等高负载业务场景,比较适合当前绝大数企业的一些云上需求。你可以根据你应用需要的性能,配置不同的规格。 上手初体验 现在,我们以一款实例配置为例,介绍华为云 Flexus X 的上手体验。 进入到华为云 Flexus 云服务的首页,点击购买按钮,进入配置页