跳到内容 跳到主导航 跳到页脚

语音大模型数据返回处理

支持机型及最低版本

机型版本
豹小秘≥7.0
豹小秘 mini≥9.2
豹小秘 Plus≥9.5
招财豹≥9.2

第一步:收到流式意图

当收到intent为 stream&eventsstream&streaming时候,接下来会收到大模型的流式数据。

建议:当收到这两个意图时候,表示是一个新query的起始,初始化相应的数据,保存此次query的sid、streamType以便在close此次query时使用,接着等待几百ms便会收到此次query的流式数据,在等待的几百ms时间内可自定义等待UI(例如:“AI正在思考中”)来填补过渡响应真空期。

意图接收详情查看“SDK接入”文档,在onSendRequest 方法里回调意图。

第二步:接收流式数据

在SkillCallback 的onSpeechStreamData 回调中接收流式数据

SkillCallback 使用详情见“语音”–“创建语音服务回调”

流式数据结构详情见文章最后

停止接收流式数据

/**
 * sid: 此次query的sid
 * streamType:此次query的连接方式(如intent为'stream&events',则streamType对应‘events’;如intent为'stream&streaming',则streamType对应‘streaming’)
 * closeType:此次query的close原因
 */
CloseStreamData closeStreamData = new CloseStreamData();
closeStreamData.sid = sid;
closeStreamData.stream_method = streamType;
closeStreamData.closeType = closeType;
skillApi.closeStreamDataReceived(new Gson().toJson(closeStreamData));


public class CloseStreamData {
    public String sid;
    public String stream_method;
    public String closeType;
}

流式数据结构

public class ChatStreamInterface {

    /** 会话ID */
    private String sid;

    /** 当前包索引,1为第一包,-1为最后一包 */
    private int idx;

    /** 领域 */
    private String domain;

    /** 意图 */
    private String intent;

    /** 业务线ID */
    private String clientId;

    /** 行业ID */
    private String groupId;

    /** 企业ID */
    private String enterpriseId;

    /** 是否需要播放TTS */
    private boolean tts;

    /** 类型 */
    private String type;

    /** 版本号 */
    private String version;

    /** 内容 */
    private String content;

    /** 发送人信息 */
    private Sender sender;

    /** 扩展字段 */
    private Extra extra;

    /**
     * 发送人信息
     */
    public static class Sender {

        /** 服务logo */
        private String logo;

        /** 数据来源,例如 chatGPT */
        private String source;
    }

    /**
     * 扩展字段
     */
    public static class Extra {

        /** 全链路ID */
        private String traceId;

        /** 相关问题列表 */
        private List<String> followUpQuestion;
    }
}

这篇文章是否有帮助?

0