SpringAI初体验之HelloWorld
时间:2024-04-15 07:55:34 来源:网络cs 作者:利杜鹃 栏目:平台政策 阅读:
目录
前言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
,这已经完全跟不上时代的潮流了。因此现在我们需要的是:
JDK ≥ 17
IDEA ≥ 2022
OpenAI的key
Fan Qiang
如果你无法使用OpenAI
的环境,那么你还可以看看其他的环境,目前SpringAI
支持的环境有很多了,具体可以查看https://spring.io/projects/spring-ai
2.初始化项目
新建项目勾选
Web
和AI
等待
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
,代码及其简单 @RestControllerpublic class ChatController { private final OpenAiChatClient chatClient; @Autowired public 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_KEYspring.ai.openai.chat.options.model=gpt-3.5-turbospring.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
。只要你能坚持不断学习,相信未来的你,一定不会被机器取代,因为机器没得感情。
本文链接:https://www.kjpai.cn/zhengce/2024-04-15/158799.html,文章来源:网络cs,作者:利杜鹃,版权归作者所有,如需转载请注明来源和作者,否则将追究法律责任!
下一篇:返回列表