java对接阿里云通义千问API多轮对话承接上下文

在api中调用接口发现每次都是单次对话,例如作总结和根据刚才的提问做汇总会无法识别。
但是接口是有多轮对话功能的。
java对接阿里云通义千问API操作流程
但是确定已经完成以上步骤
然后是以下代码

package com.ruoyi;

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.ApiException;
import com.alibaba.dashscope.exception.InputRequiredException;
import com.alibaba.dashscope.exception.NoApiKeyException;
import com.alibaba.dashscope.utils.Constants;

public class Test {
    public static void callWithMessage() throws NoApiKeyException, ApiException, InputRequiredException {
        Generation gen = new Generation();
        Constants.apiKey="XXXXXXXXXX";//这里填写自己申请的APIKEY
        //多轮对话内容可存入数据库,加载时循环放入放入MessageManager 对象实现对话内容加载
        MessageManager msgManager = new MessageManager(5);
        Message systemMsg0 = Message.builder().role(Role.SYSTEM.getValue()).content("You are a helpful assistant.").build();
        Message userMsg1 = Message.builder().role(Role.USER.getValue()).content("你叫什么名字?").build();
        Message assistantMsg2 = Message.builder().role(Role.ASSISTANT.getValue()).content("我是来自阿里云的超大规模语言模型,我叫通义千问。").build();
        Message userMsg3 = Message.builder().role(Role.USER.getValue()).content("我刚才的提问是什么?").build();
        Message assistantMsg4 = Message.builder().role(Role.ASSISTANT.getValue()).content("您刚才的提问是“你叫什么名字?”。").build();
        Message userMsg4 = Message.builder().role(Role.USER.getValue()).content("你是基于gpt3么?").build();
        msgManager.add(systemMsg0);
        msgManager.add(userMsg1);
        msgManager.add(assistantMsg2);
        msgManager.add(userMsg3);
        msgManager.add(assistantMsg4);
        msgManager.add(userMsg4);
        
        QwenParam params = QwenParam.builder().model("qwen-turbo")//此处可根据自己需要更换AI模型
                .messages(msgManager.get())
                .seed(1234)
                .topP(0.8)
                .resultFormat("message")
                .enableSearch(false)
                .maxTokens(1500)
                .temperature((float)1.0)
                .repetitionPenalty((float)1.0)
                .build();
        
        
        GenerationResult result = gen.call(params);
        System.out.println(result); 
    }

    public static void main(String[] args){
        try {
            callWithMessage();
        } catch (ApiException | NoApiKeyException | InputRequiredException e) {
            System.out.println(e.getMessage());
        }
        System.exit(0);
    }
}

返回结果

GenerationResult(
requestId=dac00891-d84b-9734-9138-49f6446e5715, 
usage=GenerationUsage(inputTokens=47, 
outputTokens=21), 
output=GenerationOutput(text=null, 
finishReason=null, 
choices=[GenerationOutput.Choice(finishReason=stop,
message=Message(role=assistant, 
content=不是的,我是阿里云自主研发的超大规模语言模型,与GPT-3没有关系。))]))

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
实时录音可以通过Java Sound API来实现,同时可以将录音数据传输到阿里云上,实现语音识别等功能。以下是一个简单的示例代码: ```java import javax.sound.sampled.*; import com.aliyun.asr.client.AsrClient; import com.aliyun.asr.client.AsrClientFactory; import com.aliyun.asr.model.StartAsrRequest; import com.aliyun.asr.model.StartAsrResponse; public class RealtimeRecording { public static void main(String[] args) throws Exception { // 创建音频输入流 AudioFormat format = new AudioFormat(16000, 16, 1, true, false); DataLine.Info info = new DataLine.Info(TargetDataLine.class, format); TargetDataLine line = (TargetDataLine) AudioSystem.getLine(info); line.open(format); line.start(); // 创建阿里云语音识别客户端 AsrClient asrClient = AsrClientFactory.getAsrClient(); StartAsrRequest request = new StartAsrRequest(); request.setEnablePunctuation(true); request.setEnableInverseTextNormalization(true); // 开始录音和识别 while (true) { byte[] buffer = new byte[640]; int count = line.read(buffer, 0, buffer.length); if (count > 0) { request.setAudio(buffer); StartAsrResponse response = asrClient.startAsr(request); System.out.println(response.getResult()); } } } } ``` 在这个示例代码中,创建了一个音频输入流,并通过Java Sound API实时录音。然后,创建了一个阿里云语音识别客户端,并在录音过程中不断地将录音数据传输到阿里云进行语音识别。最后,输出识别结果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值