本文提供简单的示例代码,帮助您快速上手并调用通义千问模型服务。
前提条件
DashScope SDK提供了Python和Java两个版本,请确保您已安装最新版SDK:安装DashScope SDK。您也可以通过HTTP接口调用,详情请见:HTTP调用接口
已开通服务并获得API-KEY:开通DashScope并创建API-KEY。
我们推荐您将API-KEY配置到环境变量中以降低API-KEY的泄漏风险,详情可参考通过环境变量配置API-KEY。您也可以在代码中配置API-KEY,但是泄漏风险会提高。
同时DashScope提供了与OpenAI兼容的接口访问服务,详情参考OpenAI接口兼容。
示例代码
您可以通过两种方式来调用模型:通过messages调用或通过prompt调用。如果您有多轮对话的需求,我们更推荐您通过messages调用,多轮对话的调用方式请见:多轮对话。
方式一:通过messages调用(推荐)
您可以运行以下代码,通过messages方式向通义千问大模型提问。
from http import HTTPStatus
import dashscope
def call_with_messages():
messages = [{'role': 'system', 'content': 'You are a helpful assistant.'},
{'role': 'user', 'content': '请介绍一下通义千问'}]
response = dashscope.Generation.call(
dashscope.Generation.Models.qwen_turbo,
messages=messages,
result_format='message', # 将返回结果格式设置为 message
)
if response.status_code == HTTPStatus.OK:
print(response)
else:
print('Request id: %s, Status code: %s, error code: %s, error message: %s' % (
response.request_id, response.status_code,
response.code, response.message
))
if __name__ == '__main__':
call_with_messages()
// Copyright (c) Alibaba, Inc. and its affiliates.
import java.util.ArrayList;
import java.util.List;
import com.alibaba.dashscope.aigc.generation.Generation;
import com.alibaba.dashscope.aigc.generation.GenerationParam;
import com.alibaba.dashscope.aigc.generation.GenerationResult;
import com.alibaba.dashscope.common.Message;
import com.alibaba.dashscope.common.Role;
import com.alibaba.dashscope.exception.ApiException;
import com.alibaba.dashscope.exception.InputRequiredException;
import com.alibaba.dashscope.exception.NoApiKeyException;
import com.alibaba.dashscope.utils.JsonUtils;
public class Main {
public static void callWithMessage()
throws NoApiKeyException, ApiException, InputRequiredException {
Generation gen = new Generation();
List<Message> messages = new ArrayList<>();
Message systemMsg =
Message.builder().role(Role.SYSTEM.getValue()).content("You are a helpful assistant.").build();
Message userMsg = Message.builder().role(Role.USER.getValue()).content("请介绍一下通义千问").build();
messages.add(systemMsg);
messages.add(userMsg);
GenerationParam param =
GenerationParam.builder().model(Generation.Models.QWEN_TURBO).messages(messages)
.resultFormat(GenerationParam.ResultFormat.MESSAGE)
.build();
GenerationResult result = gen.call(param);
System.out.println(JsonUtils.toJson(result));
}
public static void main(String[] args){
try {
callWithMessage();
} catch (ApiException | NoApiKeyException | InputRequiredException e) {
System.out.println(e.getMessage());
}
System.exit(0);
}
}
调用成功后将输出以下结果。
Python
{
"status_code": 200,
"request_id": "a75a1b22-e512-957d-891b-37db858ae738",
"code": "",
"message": "",
"output": {
"text": null,
"finish_reason": null,
"choices": [
{
"finish_reason": "stop",
"message": {
"role": "assistant",
"content": "通义千问是阿里云自主研发的超大规模语言模型,能够回答问题、创作文字,还能表达观点、撰写代码。作为一个大型预训练语言模型,我能够根据您提出的指令产出相关的回复,并尽可能提供准确和有用的信息。我会不断学习和进步,不断提升自己的能力,为用户提供更好的服务。如果您有任何问题或需要帮助,请随时告诉我。"
}
}
]
},
"usage": {
"input_tokens": 25,
"output_tokens": 77,
"total_tokens": 102
}
}
Java
{
"requestId": "288e382e-ad82-9b24-954e-c73da12e0b75",
"usage": {
"input_tokens": 25,
"output_tokens": 67,
"total_tokens": 92
},
"output": {
"choices": [
{
"finish_reason": "stop",
"message": {
"role": "assistant",
"content": "通义千问是阿里云自主研发的超大规模语言模型,能够回答问题、创作文字,还能表达观点、撰写代码。作为一个大型预训练语言模型,我能够根据您提出的指令产出相关的回复,并尽可能提供准确和有用的信息。如果您有任何问题或需要帮助,请随时告诉我,我会尽力提供支持。"
}
}
]
}
}
说明
Python和Java在处理错误码code以及错误消息有差异,python直接在结果中展示错误码(code)和消息(message),Java在出错时会抛出异常,在异常中有code和message信息。
方式二:通过prompt调用
您可以通过prompt方式来调用通义千问大模型。通过prompt方式调用时,输入与输出的数据格式比messages方式简单,更适合单轮问答等简单场景;在更复杂的场景中推荐您通过messages方式调用。
from http import HTTPStatus
import dashscope
def call_with_prompt():
response = dashscope.Generation.call(
model=dashscope.Generation.Models.qwen_turbo,
prompt='请介绍一下通义千问'
)
# 如果调用成功,则打印模型的输出
if response.status_code == HTTPStatus.OK:
print(response)
# 如果调用失败,则打印出错误码与失败信息
else:
print(response.code)
print(response.message)
if __name__ == '__main__':
call_with_prompt()
// Copyright (c) Alibaba, Inc. and its affiliates.
import java.util.concurrent.Semaphore;
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.ResultCallback;
import com.alibaba.dashscope.exception.ApiException;
import com.alibaba.dashscope.exception.InputRequiredException;
import com.alibaba.dashscope.exception.NoApiKeyException;
import com.alibaba.dashscope.utils.JsonUtils;
public class Main {
private final static String PROMPT = "请介绍一下通义千问";
public static void qwenQuickStart()
throws NoApiKeyException, ApiException, InputRequiredException {
Generation gen = new Generation();
QwenParam param = QwenParam.builder().model(Generation.Models.QWEN_TURBO).prompt(PROMPT)
.topP(0.8).build();
GenerationResult result = gen.call(param);
System.out.println(JsonUtils.toJson(result));
}
public static void qwenQuickStartCallback()
throws NoApiKeyException, ApiException, InputRequiredException, InterruptedException {
Generation gen = new Generation();
QwenParam param = QwenParam.builder().model(Generation.Models.QWEN_TURBO).prompt(PROMPT)
.topP(0.8).build();
Semaphore semaphore = new Semaphore(0);
gen.call(param, new ResultCallback<GenerationResult>() {
@Override
public void onEvent(GenerationResult message) {
System.out.println(message);
}
@Override
public void onError(Exception ex) {
System.out.println(ex.getMessage());
semaphore.release();
}
@Override
public void onComplete() {
System.out.println("onComplete");
semaphore.release();
}
});
semaphore.acquire();
}
public static void main(String[] args) {
try {
qwenQuickStart();
qwenQuickStartCallback();
} catch (ApiException | NoApiKeyException | InputRequiredException
| InterruptedException e) {
System.out.println(String.format("Exception %s", e.getMessage()));
}
System.exit(0);
}
}
调用成功后将输出以下结果。
Python
{
"status_code": 200,
"request_id": "b9b5767a-7b94-9df1-93bd-f3cf97e2acaa",
"code": "",
"message": "",
"output": {
"text": "你好,我是阿里云自主研发的超大规模语言模型“通义千问”。作为一个AI助手,我的目标是帮助用户获得准确、有用的信息,解决他们的问题和困惑。我能够回答各种主题的问题,提供知识性解释,进行创造性的思考,并与用户进行对话。我会不断学习和进步,不断提升自己的能力,为用户提供更好的服务。如果您有任何问题,请随时向我提问。",
"finish_reason": "stop",
"choices": null
},
"usage": {
"input_tokens": 25,
"output_tokens": 84,
"total_tokens": 109
}
}
Java
{
"requestId": "df0709ff-cab9-9200-8792-18e9eb616bf2",
"usage": {
"input_tokens": 25,
"output_tokens": 62,
"total_tokens": 87
},
"output": {
"text": "通义千问是阿里云自主研发的超大规模语言模型,能够回答问题、创作文字,还能表达观点、撰写代码。我就是通义千问,是一个能够帮助用户获得准确、有用信息的语言模型。如果您有任何问题或需要帮助,请随时告诉我,我会尽力提供支持。",
"finish_reason": "stop"
}
}
相关文档
更多通义千问模型API的详细调用,请参见API详情。
反馈
- 本页导读 (0)