通义千问大模型调用
通义千问大模型调用方法(Java)
依赖准备
确保项目中已引入阿里云SDK依赖(Maven示例):
<dependency><groupId>com.aliyun</groupId><artifactId>aliyun-java-sdk-core</artifactId><version>4.6.3</version>
</dependency>
<dependency><groupId>com.aliyun</groupId><artifactId>dashscope-sdk-java</artifactId><version>2.8.0</version>
</dependency>
初始化客户端
通过API密钥初始化DashScope客户端:
import com.aliyun.dashscope.client.ApiClient;
import com.aliyun.dashscope.client.Configuration;ApiClient client = Configuration.getDefaultApiClient();
client.setApiKey("your-api-key"); // 替换为实际API密钥
同步调用示例
发送文本请求并获取生成结果:
import com.aliyun.dashscope.client.models.Message;
import com.aliyun.dashscope.client.models.CompletionRequest;
import com.aliyun.dashscope.client.models.CompletionResponse;CompletionRequest req = new CompletionRequest().setModel("qwen-turbo") // 指定模型.setPrompt("Java如何实现多线程?").setMaxTokens(1000);CompletionResponse resp = client.createCompletion(req);
System.out.println(resp.getChoices().get(0).getMessage().getContent());
流式调用示例
处理实时生成的文本流:
import com.aliyun.dashscope.client.models.CompletionChunk;client.createCompletionStream(req, new ApiCallback<CompletionChunk>() {@Overridepublic void onChunk(CompletionChunk chunk) {System.out.print(chunk.getChoices().get(0).getDelta().getContent());}@Overridepublic void onError(Throwable e) {e.printStackTrace();}
});
参数说明
常用请求参数:
model
: 模型名称(如qwen-turbo/qwen-plus)temperature
: 生成多样性(0-1)top_p
: 核采样阈值(0-1)stream
: 是否启用流式输出
错误处理
捕获API异常并处理:
try {CompletionResponse response = client.createCompletion(request);
} catch (ApiException e) {System.err.println("Status code: " + e.getCode());System.err.println("Reason: " + e.getResponseBody());
}
高级功能
支持传入历史对话上下文:
List<Message> messages = new ArrayList<>();
messages.add(new Message("user", "如何用Java写一个HTTP服务器?"));
messages.add(new Message("assistant", "可以使用Java内置的HttpServer..."));CompletionRequest req = new CompletionRequest().setMessages(messages).setModel("qwen-plus");
注意事项
- API密钥需通过阿里云控制台获取
- 生产环境建议配置重试机制和超时设置
- 流式响应需自行处理拼接逻辑