当前位置: 欣欣网 > 码农

手把手教你 Java 调用通义千问的 API,快速入门 AI 开发

2024-05-15码农

就在上周,阿里云发布了一则重磅消息:发布通义千问大模型2.5版本,能力全面升级,中文性能赶超GPT-4!为了让更多人享受到AI带来的便利与创新,他们已向全网用户无偿开放1000万字的长文档处理功能。

本篇文章我将手把手教你如何通过Java调用通义千问API,完成一个小案例的开发,入门AIGC。

注册开通

进入网站 https://dashscope.console.aliyun.com/overview

然后使用支付宝、钉钉或手机号 注册一个阿里云账号 ,注册完成后登录

点击 未开通 按钮

然后点击 立即开通

开通完成后 前往控制台

获取API-KEY

进入 https://dashscope.console.aliyun.com/apiKey

根据截图操作 获取API-KEY

关闭弹窗后无法再次查看API-KEY,如果忘了可以重新生成一个

实战

打开IDEA新建一个SpringBoot项目

添加要用的依赖,我这里先添加了Web依赖和Lombok

添加hutool工具包依赖

<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>5.8.27</version>
</dependency>

创建ChatController类,用于前端处理请求

package cn.unclecode.dashscope.controller;
import cn.hutool.http.HttpRequest;
import cn.hutool.json.JSONUtil;
import cn.unclecode.dashscope.request.ChatRequest;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public classChatController{
@PostMapping("/chat")
public String chat(String q){
String url = "https://dashscope.aliyuncs.com/compatible-mode/v1/chat/completions";
String ApiKey = "sk-6e93625f6c3a4e45811c2177d79dca50";//ApiKey
ChatRequest chatRequest = new ChatRequest(q);
String json = JSONUtil.toJsonStr(chatRequest);
String result = HttpRequest.post(url)
.header("Authorization","Bearer " + ApiKey)
.header("Content-Type","application/json")
.body(json)
.execute().body();
System.out.println(result);
return result;
}
}


创建ChatRequest类,用户构造请求参数

更多参数查阅官方文档

https://help.aliyun.com/zh/dashscope

package cn.unclecode.dashscope.request;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.apache.logging.log4j.message.Message;
import java.util.ArrayList;
import java.util.List;
@Data
@AllArgsConstructor
@NoArgsConstructor
public classChatRequest{
String model;
List<ChatRequest.Chat> messages;
Parameters parameters;
publicChatRequest(String q){
model = "qwen-turbo";
List<ChatRequest.Chat> chats = new ArrayList<>();
chats.add(new Chat("system","你是生活助手机器人。"));
chats.add(new Chat("user",q));
messages = chats;
parameters = new Parameters();
}
classChat{
public String role;
public String content;
Chat(String role,String content){
this.role = role;
this.content = content;
}
}
classParameters{
public String result_format = "text";
}
}



启动项目,使用接口测试工具向接口发起请求

响应数据为

{
"choices": [
{
"message": {
"role""assistant",
"content""是的,2000年是闰年。闰年的规则是每4年一闰,但是能被100整除的年份不是闰年,除非它同时也能被400整除。所以,2000年能够被400整除,因此它是闰年。"
},
"finish_reason""stop",
"index"0,
"logprobs"null
}
 ],
"object""chat.completion",
"usage": {
"prompt_tokens"32,
"completion_tokens"68,
"total_tokens"100
 },
"created"1715704993,
"system_fingerprint"null,
"model""qwen-turbo",
"id""chatcmpl-39f7dbe568e09c85b06d3a7d3fa4ec74"
}

总结

以上就是所有内容,本教程只是简单的问答处理,有更多需求,可以参考官方文档,在此基础上做修改。

官方文档:https://help.aliyun.com/zh/dashscope