目录
一、模型介绍
1.1主要模型
1.2 计费单价
二、前置条件
2.1 开通DashScope并创建API-KEY
2.2 设置API-KEY
三、基于DashScope SDK开发
3.1 Maven引入SDK
3.2 代码实现
3.3 运行代码
一、模型介绍
通义千问是由阿里云自主研发的大语言模型,用于理解和分析用户输入的自然语言,在不同领域、任务内为用户提供服务和帮助。您可以通过提供尽可能清晰详细的指令,来获取符合您预期的结果。
1.1主要模型
模型名称 | 模型简介 | 模型输入/输出限制 |
---|---|---|
qwen-turbo | 通义千问超大规模语言模型,支持中文、英文等不同语言输入。 | 模型支持8k tokens上下文,为了保证正常的使用和输出,API限定用户输入为6k tokens。 |
qwen-plus | 通义千问超大规模语言模型增强版,支持中文、英文等不同语言输入。 | 模型支持32k tokens上下文,为了保证正常的使用和输出,API限定用户输入为30k tokens。 |
qwen-max | 通义千问千亿级别超大规模语言模型,支持中文、英文等不同语言输入。随着模型的升级,qwen-max将滚动更新升级,如果希望使用稳定版本,请使用下面的历史快照版本。 | 模型支持8k tokens上下文,为了保证正常的使用和输出,API限定用户输入为6k tokens。 |
1.2 计费单价
Token是模型用来表示自然语言文本的基本单位,可以直观地理解为“字”或“词”。对于中文文本来说,1个token通常对应一个汉字;对于英文文本来说,1个token通常对应3至4个字母。
通义千问模型服务根据模型输入和输出的总token数量进行计量计费,其中多轮对话中的history作为输入也会进行计量计费。每一次模型调用产生的实际token数量可以从 response 中获取。
模型服务 | 模型名称 | 计费单价 |
---|---|---|
通义千问 | qwen-turbo | 0.008元/1,000 tokens |
qwen-plus | 0.02元/1,000 tokens | |
qwen-max | 0.12元/1,000 tokens |
实际收费情况请关注官方信息。
二、前置条件
2.1 开通DashScope并创建API-KEY
需要通过阿里云主账号或者得到主账号AliyunDashScopeFullAccess授权的子账号进行DashScope模型服务的开通及API-KEY的创建,具体参考官方文档。
2.2 设置API-KEY
推荐将API-KEY配置到环境变量中以降低API-KEY的泄漏风险,详情可参考通过环境变量配置API-KEY。也可以在代码中配置API-KEY,但是泄漏风险会提高。
- 通过环境变量设置API-KEY:DashScope通过环境变量设置API-KEY
- 通过代码设置API-KEY:DashScopeSDK通过代码设置API-KEY
三、基于DashScope SDK开发
3.1 Maven引入SDK
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.yichenkeji</groupId>
<artifactId>yichen-demo-qwen</artifactId>
<version>1.0-SNAPSHOT</version>
<properties>
<maven.compiler.source>11</maven.compiler.source>
<maven.compiler.target>11</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<!-- https://mvnrepository.com/artifact/com.alibaba/dashscope-sdk-java -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>dashscope-sdk-java</artifactId>
<version>2.13.0</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.73</version>
</dependency>
</dependencies>
</project>
3.2 代码实现
package com.yichenkeji.demo.qwen;
import com.alibaba.dashscope.aigc.generation.Generation;
import com.alibaba.dashscope.aigc.generation.GenerationResult;
import com.alibaba.dashscope.aigc.generation.models.QwenParam;
import com.alibaba.dashscope.common.Message;
import com.alibaba.dashscope.common.MessageManager;
import com.alibaba.dashscope.common.Role;
import com.alibaba.dashscope.exception.InputRequiredException;
import com.alibaba.dashscope.exception.NoApiKeyException;
import com.alibaba.fastjson.JSON;
public class QwenMain {
public static String chat(String message) {
Generation gen = new Generation();
MessageManager msgManager = new MessageManager(10);
//构建信息对象
Message userMsg = Message.builder().role(Role.USER.getValue()).content(message).build();
msgManager.add(userMsg);
QwenParam param =
QwenParam.builder()
.model(Generation.Models.QWEN_TURBO) //设置模型名称
.messages(msgManager.get())
.resultFormat(QwenParam.ResultFormat.MESSAGE)
.build();
try {
GenerationResult result = gen.call(param);
return JSON.toJSONString(result);
} catch (Exception e) {
throw new RuntimeException(e);
}
}
public static void main(String[] args) {
String result = chat("请做一下自我介绍");
System.out.println(result);
}
}
3.3 运行代码