帮助与文档 > 产品文档 > AIGC > API文档 > AI口语流式自由对话
AI口语流式自由对话

AI口语老师简介

协议须知

调用方在集成AI口语老师API时,请遵循以下规则。

规则 描述
传输方式 HTTPS
请求方式 POST
字符编码 统一使用UTF-8 编码
请求格式 application/json
响应格式 text/event-stream

接口调用参数

AI口语老师线上调用地址:

https://openapi.youdao.com/ai_dialog

注意: 签名生成方法如下: signType=v4; sign=sha256(应用ID+salt+curtime+应用密钥);

AI口语老师-V2接口定义

流式对话接口

  • 接口uri:/chatStream

  • 接口说明:

接口参数:

{
    "appKey":"",                         // 必填 appkey  权限认证
    "salt":"",                           // 必填 随机串   权限认证
    "curtime":"",                        // 必填 时间戳   权限认证
    "signType":"v4",                     // 必填 仅支持v4 权限认证
    "sign":"",                           // 必填 sha256(appKey + salt + curtime +appSecret) 权限认证
    "userLevel": "0",                    // 非必填 用户水平等级(字符串):0表示1-3年级小学生;1表示4-6年级小学生;2表示初中生;3表示高中生/大学生(四六级),默认2
    "history": [                         // 必填,对话历史,注: 1.当isTopic=true,第一次调用根据首句生成topic,此时应该只有[{"speaker": "User", "content": "xxx"}] 2.当isTopic=false,第一次调用传[{"speaker:User", "content": "xxx"}]
       {
          "speaker":"System",            // 讲话人:系统
          "content":"Hi there! My name is Sarah, and I'm from New York. What's your name and where are you from?"  // 讲话内容, 语种限制英文
       },
       {
           "speaker":"User",             // 讲话人:用户
           "content":"Hello, I'm Echo, I come from China. Nice to meet you. Do you have any hobbies?" // 讲话内容, 语种限制英文,单词数限制80
       }
    ]
  }

响应结果

流式正常结果的格式

部分 event类型 data结构 说明
第1部分 message 一个data示例:data":
{
"type": "1或者2",
"content":"内容",
"requestId":"xxx"
}
data中有三部分,type=1是系统回复,type=2是推荐回复, content是具体内容,一次http请求requestId是一样的
第2部分 end 一个data示例:一个data示例:data":
{
"requestId":"xxx"
}
当event=end时,无需关注data

注:1. data中type=1是系统回复,以若干个包流式输出,需要组织type=1的所有数据拼接成一个完整回复。 type=2时,是推荐回复,每次输出一个完整的推荐回复,总共会出现3个推荐回复。

流式异常结果的格式

部分 event类型 data结构 说明
第1部分 message 一个data示例:data":
{
"type": "1或者2",
"content":"内容",
"requestId":"xxx"
}
data中有三部分,type=1是系统回复,type=2是推荐回复, content是具体内容,一次http请求requestId是一样的
第2部分 error 一个data示例:data":
{
"errorCode": "错误码",
"errorMsg":"错误信息",
"requestId":"xxx"
}
关注errorCode和errorMsg

注: 如果是鉴权类错误,可能没有第一部分(正常的message),直接返回error包。

流式结果的示例

示例一:“正常返回”结果

每一个ServerSentEvent如下所示

ServerSentEvent [id = '1', event='message', retry=null, comment='null', data={"requestId":"a91af3e7-53b4-446e-8681-e881dac31c58","type":1,"content":"Hi"}]
ServerSentEvent [id = '2', event='message', retry=null, comment='null', data={"requestId":"a91af3e7-53b4-446e-8681-e881dac31c58","type":1,"content":","}]
ServerSentEvent [id = '3', event='message', retry=null, comment='null', data={"requestId":"a91af3e7-53b4-446e-8681-e881dac31c58","type":1,"content":" I"}]
ServerSentEvent [id = '4', event='message', retry=null, comment='null', data={"requestId":"a91af3e7-53b4-446e-8681-e881dac31c58","type":1,"content":"’m"}]
ServerSentEvent [id = '5', event='message', retry=null, comment='null', data={"requestId":"a91af3e7-53b4-446e-8681-e881dac31c58","type":1,"content":" fine"}]
ServerSentEvent [id = '6', event='message', retry=null, comment='null', data={"requestId":"a91af3e7-53b4-446e-8681-e881dac31c58","type":1,"content":","}]
ServerSentEvent [id = '7', event='message', retry=null, comment='null', data={"requestId":"a91af3e7-53b4-446e-8681-e881dac31c58","type":1,"content":" thank"}]
ServerSentEvent [id = '8', event='message', retry=null, comment='null', data={"requestId":"a91af3e7-53b4-446e-8681-e881dac31c58","type":1,"content":" you"}]
ServerSentEvent [id = '9', event='message', retry=null, comment='null', data={"requestId":"a91af3e7-53b4-446e-8681-e881dac31c58","type":1,"content":"."}]
ServerSentEvent [id = '10', event='message', retry=null, comment='null', data={"requestId":"a91af3e7-53b4-446e-8681-e881dac31c58","type":1,"content":" And"}]
ServerSentEvent [id = '11', event='message', retry=null, comment='null', data={"requestId":"a91af3e7-53b4-446e-8681-e881dac31c58","type":1,"content":" you"}]
ServerSentEvent [id = '12', event='message', retry=null, comment='null', data={"requestId":"a91af3e7-53b4-446e-8681-e881dac31c58","type":1,"content":"?"}]
ServerSentEvent [id = '13', event='message', retry=null, comment='null', data={"requestId":"a91af3e7-53b4-446e-8681-e881dac31c58","type":2,"content":" I’m good, how about you? "}]
ServerSentEvent [id = '14', event='message', retry=null, comment='null', data={"requestId":"a91af3e7-53b4-446e-8681-e881dac31c58","type":2,"content":" Pretty good, what about you? "}]
ServerSentEvent [id = '15', event='message', retry=null, comment='null', data={"requestId":"a91af3e7-53b4-446e-8681-e881dac31c58","type":2,"content":" Not bad, yourself? "}]
ServerSentEvent [id = '16', event='end', retry=null, comment='null', data={"requestId":"a91af3e7-53b4-446e-8681-e881dac31c58"}]

示例二:“异常返回”结果

ServerSentEvent [id = '1', event='error', retry=null, comment='null', data={"requestId":"945ecfa5-b385-4216-8dd8-c30ff05ed787","errorCode":"108","errorMsg":"auth failed"}]

错误代码列表

状态码 状态码含义
101 缺少必填的参数,首先确保必填参数齐全,然后,确认参数书写是否正确。
102 不支持的语言类型
103 翻译文本过长
104 不支持的API类型
105 不支持的签名类型
106 不支持的响应类型
107 不支持的传输加密类型
108 应用ID无效,注册账号,登录后台创建应用并完成绑定,可获得应用ID和应用密钥等信息
109 batchLog格式不正确
110 无相关服务的有效应用,应用没有绑定服务。注:某些服务的结果发音需要tts服务,需要在控制台创建语音合成实例绑定应用后方能使用。
111 开发者账号无效
112 请求服务无效
113 q不能为空
114 不支持的图片传输方式
201 解密失败,可能为DES,BASE64,URLDecode的错误
202 签名检验失败,如果确认应用ID和应用密钥的正确性,仍返回202,一般是编码问题。请确保翻译文本 q 为UTF-8编码.
203 访问IP地址不在可访问IP列表
205 请求的接口与应用的平台类型不一致,确保接入方式(Android SDK、IOS SDK、API)与创建的应用平台类型一致。如有疑问请参考入门指南
206 因为时间戳无效导致签名校验失败
207 重放请求
303 服务异常
405 鉴权失败
AIDIALOG003 不支持的userLevel字段
AIDIALOG006 不支持的speaker字段
AIDIALOG007 讲话人顺序异常
AIDIALOG008 不支持的语种
AIDIALOG009 content字段长度或单词数超出限制
AIDIALOG010 生成场景失败
AIDIALOG011 生成推荐表达失败
AIDIALOG012 生成对话失败
AIDIALOG013 history字段异常: 结构异常等
AIDIALOG019 请求中包含敏感词
AIDIALOG020 系统回话中包含敏感词
AIDIALOG022 系统无结果
AIDIALOG025 extJson字段异常
AIDIALOG026 请求大模型异常
AIDIALOG027 history参数异常