帮助与文档 > 产品文档 > 智慧学习服务 > API文档 > 小P老师
小P老师

小P老师简介

概念解释

小P老师服务可以提供全科答疑能力,包含答案解析和思路指引,讲解更加生动自然。

说明

Hi,您好,欢迎使用有道智云小P老师接口服务。

本文档主要针对需要集成HTTP API的技术开发工程师,详细描述小P老师能力相关的技术内容。

如果您有与我们商务合作的需求,可以通过以下方式联系我们:

商务邮箱: AIcloud_Business@corp.youdao.com

如果您对文档内容有任何疑问,可以通过以下几种方式联系我们:

客服QQ:1906538062

AIGC产品技术交流群 :837394306

联系邮箱: zhiyun@corp.youdao.com

温馨提示:

  • 本文档主要针对开发人员,接入测试前需要获取应用ID和应用密钥,并创建应用;如果您还没有,请按照 新手指南 获取。
  • 平台向每个账户赠送50元的体验金,供用户集成前测试所用。

接口调用参数

请求地址

baseUrl: https://openapi.youdao.com/llmserver

通用对话

baseUrl + /ai/teacher/dialogue/chat

请求方式: POST

Content-Type: multipart/form-data

Accept: text/event-stream

接口参数

字段名 含义 示例 必填
app_key 应用标识(应用 ID) true
curtime 时间戳(秒) true
salt 随机字符串,建议使用UUID true
sign 签名信息:sha256(应用ID+curtime+salt+curtime+应用密钥) true
sign_type 签名类型 v3 true
os_type 系统类型 api true
user_id 用户id,用来标识用户,最多100个字符 true
task_id 任务id,用来标识用户一次会话session(关联一组对话历史),由服务生成,首轮对话为空,非首轮对话以服务端返回的上一次对话为准 false
task_name 任务名称,最多20个字符,首轮对话创建任务使用,为空时由系统生成 false
parent_chat_id 当前输入的父对话id,首轮对话为空,非首轮对话以服务端返回的上一次对话为准 false
chat_info 输入内容,格式为chat_item的列表(目前只支持一个chat_item),chat_item格式在后文中说明 [{"type":"text","content":"你好!"}] true
template_id prompt模版id,实现业务定制prompt false
subscribe 订阅事件。sse流固定返回begin、message、end、error事件。对于其他想要的事件,需要调用方主动传递此参数订阅,多个订阅事件传值以英文逗号分隔,默认是空-无事件订阅 false

接口参数chat_info中chat_item的格式说明:

一、包含字段
type:输入类型枚举【text、image、image_url】
content:输入内容,text文本/image图片ocr识别的结果有 token 4096 长度限制

二、type详细说明
text:文本输入UTF-8
当 type = text 时,chat_info = [{"type":"text","content":"文本输入内容"}]

image:图片base64编码:支持图片格式:.bmp、.jpg、.png,图片大小Base64后≤2M
当 type = image 时,chat_info = [{"type":"image","content":"图片base64编码"}]

image_url:整张图片的URL(需要公网能访问下载)
当 type = image_url 时,chat_info = [{"type":"image_url","content":"图片的链接URL"}]

接口参数subscribe可订阅事件说明:

query_suggestion :插件能力,订阅才执行——猜你想问

响应结果

一个成功的返回示例:

"id": "fb981fde-0080-4933-b87b-4a29eaba8d17"
"event":"begin"
"data":{
"request_id": "fb981fde-0080-4933-b87b-4a29eaba8d17",
"task_id": "046dba1a-7f47-4f96-91f2-be4676aa1347",
"chat_id": 1705045207475
}

"id": "fb981fde-0080-4933-b87b-4a29eaba8d17"
"event":"message"
"data":{
"content": "你好,",
"type": "text"
}

"id": "fb981fde-0080-4933-b87b-4a29eaba8d17"
"event":"message"
"data":{
"content": "有什么可以",
"type": "text"
}

"id": "fb981fde-0080-4933-b87b-4a29eaba8d17"
"event":"message"
"data":{
"content": "帮助你的吗?",
"type": "text"
}

"id": "fb981fde-0080-4933-b87b-4a29eaba8d17"
"event":"end"
"data":{
"request_id": "fb981fde-0080-4933-b87b-4a29eaba8d17",
"usage":[
     {"type":"input_ocr_token","value":110},
     {"type":"output_text_token","value":253},
     {"type":"query","value":1}
]}

响应结果详解

正常结果包含的事件 1个begin、1-N个 message、1个end

发生异常时包含的事件

  • 对话过程中的异常:1个begin、0-N个 message、1个error
  • 参数异常:1个error

事件说明

  • begin事件:[基础事件类型——开始]
"id": "fb981fde-0080-4933-b87b-4a29eaba8d17" // 请求id
"event":"begin" // 事件类型
"data":{
"request_id": "fb981fde-0080-4933-b87b-4a29eaba8d17", // 请求id
"task_id": "046dba1a-7f47-4f96-91f2-be4676aa1347", // 任务id
"chat_id": 1705045207475 // 系统回复对话的id,下一轮对话的parent_chat_id
}
  • message事件:[基础事件类型——消息]
"id": "fb981fde-0080-4933-b87b-4a29eaba8d17" // 请求id
"event":"message" // 事件类型
"data":{
"content": "你好,", // 模型回答
"type": "text"       // 回答类型
}
  • end事件:[基础事件类型——结束 ]

end 事件中的 usage 可以认为是接口调用的账单明细,明细列表从前到后依次包含三个部分:

  1. 输入明细部分:和 chat_info 参数中的条目一一对应

(1) type为"input_text_token"的明细:对应chat_info中type为"text"的文本token数量

(2) type为"input_ocr_token"的明细:对应chat_info中type为"image"或“imageUrl”的OCR识别文本token数量

  1. 输出明细部分:

type为"output_text_token"的明细:目前都是文本输出(返回事件流中message的type为"text")

  1. 插件使用明细部分:非必填,在订阅插件能力并有正确的返回时,返回对应的明细

(1) type为"query_suggestion"的明细:订阅猜你想问插件并有正确返回

"id":"e9141d83-e76a-4581-bfeb-0bd6569d8339"
"event":"end" // 事件类型
"data":{
"usage": // 账单明细
[{
  "type": "input_text_token",   // chat_info中type为"text"的文本token数量
  "value": 80     // token数
  },{
  "type": "input_ocr_token",   // chat_info中type为"image"或“imageUrl”的OCR识别文本token数量
  "value": 110     // token数
  },{
  "type": "output_text_token", // 模型输出token数量
  "value": 64      // token数
  },{
  "type": "query",     // 系统服务,按次计费
  "value": 1   // 次数
  },{
  "type": "query_suggestion",     // 订阅猜你想问插件且成功,按次计费
  "value": 1   // 次数
}],
"request_id": "e9141d83-e76a-4581-bfeb-0bd6569d8339"
}
  • error事件:[基础事件类型——结束]

error 事件中的 usage 格式同 end 事件,对于不收费异常返回空列表

"id":"e9141d83-e76a-4581-bfeb-0bd6569d8339" // 请求id
"event":"error" // 事件类型
"data":{
"code": 99,
"msg": "系统错误",
"request_id": "e9141d83-e76a-4581-bfeb-0bd6569d8339" // 请求id
"usage": []
}
  • 猜你想问事件:[插件能力事件类型——猜你想问]
"id":"e9141d83-e76a-4581-bfeb-0bd6569d8339"
"event":"query_suggestion" // 事件类型
"data":{
"suggestion":["微积分主要包括哪两大部分?","微分学的主要研究对象是什么?","积分学的核心研究内容是什么?"],
"code":0,
"msg":"SUCCESS"
}

异常结果

业务异常(通过sse的error事件返回)

  • 缺少公共参数user_id:[100101-USER_LACK_USER_ID]
  • 缺少业务参数task_id:[100101-USER_LACK_TASK_ID]
  • 缺少业务参数parent_chat_id:[100101-USER_LACK_PARENT_CHAT_ID]
  • 对话内容为空或缺少对话内容:[100101-USER_LACK_CHAT_CONTENT]
  • 任务名称为空串:[100102-USER_WRONG_TASK_NAME]
  • 对话内容参数格式错误:[100102-USER_WRONG_CHAT_INFO]
  • 图片base64无法解析:[100102-USER_WRONG_IMAGE_PARAM]
  • chat_info的type类型不在枚举范围:[100102-USER_WRONG_CHAT_TYPE]
  • 没有查到历史对话:[100102-USER_WRONG_CHAT_HISTORY]
  • 用户id超过100字符:[100103-USER_USER_ID_LENGTH_OVER]
  • 任务名超过20字符:[100103-USER_TASK_NAME_LENGTH_OVER]
  • 图片base64编码超过2M:[100103-USER_IMAGE_BASE64_LENGTH_OVER]
  • 输入token超过4096:[100103-USER_INPUT_TOKEN_OVER]
  • 模板id参数错误取值:[100102-USER_WRONG_TEMPLATE_ID]
  • 模板id参数没有权限:[100102-USER_TEMPLATE_ID_FORBID]
  • 订阅事件参数错误取值:[100102-USER_WRONG_SUBSCRIBE]
  • 订阅事件参数没有权限:[100102-USER_SUBSCRIBE_FORBID]
  • 用户输入高度敏感:[100111-USER_INPUT_SENSITIVE_HIGH]
  • 用户输入中度敏感:[100112-USER_INPUT_SENSITIVE_NORMAL]
  • 用户使用太频繁:[100117-USER_RATE_LIMIT ]

其他异常(通过sse的error事件返回)

  • 模型回答内容高度敏感:[100201-CUR_ANSWER_SENSITIVE_HIGH]
  • 模型回答内容中度敏感:[100202-CUR_ANSWER_SENSITIVE_NORMAL]
  • 请求需要使用token超限:[100243-CUR_OVER_TOTAL_TOKEN]
  • 其他错误码:[100299-CUR_SERVER_ERROR],用于排查系统问题,可认为是系统错误码

猜你想问

通过对话历史,或者提供的问题和回答,推荐3个问题。

baseUrl + /plugin/suggest

请求方式: POST

Content-Type: multipart/form-data

接口参数

字段名 含义 示例 必填
app_key 应用标识(应用 ID) true
curtime 时间戳(秒) TimeStamp true
salt 随机字符串,建议使用UUID true
sign 签名信息:sha256(应用ID+curtime+salt+curtime+应用密钥) true
sign_type 签名类型 v3 true
os_type 系统类型 api true
user_id 用户id,用来标识用户,当query/answer为空时必填 false
task_id 任务id,用来标识用户一次会话session(关联一组对话历史),当query/answer为空时必填 false
chat_id chat接口返回的begin事件中的chat_id,最近一次模型回答的id,当query/answer为空时必填 false
query 需要推荐问题的原始问题 false
answer 原始问题的回答 false

响应结果

{
    "code": "0", //错误码
    "msg": "ok", //详细信息
    "requestId": "", //请求唯一id
    "data": { //结果对象
        "suggestion": [ //返回结果
            "推荐问题1","推荐问题2","推荐问题3"
        ],
        "requestId": "" //请求id,onetime接口时用于定位请求
    }
}

异常结果

业务异常

  • 缺少公共参数user_id:[100101-USER_LACK_USER_ID]
  • 缺少业务参数task_id:[100101-USER_LACK_TASK_ID]
  • 缺少业务参数chat_id:[100101-USER_LACK_CHAT_ID]
  • 错误业务参数task_id:[100102-USER_WRONG_TASK_ID]
  • 错误业务参数chat_id:[100102-USER_WRONG_CHAT_ID]
  • 查询不到历史对话:[100102-USER_WRONG_CHAT_HISTORY]
  • 没有猜你想问的使用权限:[102601-SUGGESTION_FORBID]

其他异常

  • 系统内部异常:[100299-CUR_SERVER_ERROR]

常用语言 Demo

Java 示例

Xiaop Java demo

Python3 示例

Xiaop python3 demo

go示例

Xiaop go demo

错误码列表

错误码 msg
101 缺少必填的参数,首先确保必填参数齐全,然后,确认参数书写是否正确。
104 不支持的API类型
105 不支持的签名类型
106 不支持的响应类型
110 无相关服务的有效应用,应用没有绑定服务,可以新建服务。注:某些服务的结果发音需要tts服务,需要在控制台创建语音合成实例绑定应用后方能使用。
111 开发者账号无效
202 签名检验失败,如果确认应用ID和应用密钥的正确性,仍返回202,一般是编码问题。请确保翻译文本 q 为UTF-8编码.
203 访问IP地址不在可访问IP列表
205 请求的接口与应用的平台类型不一致,确保接入方式(Android SDK、IOS SDK、API)与创建的应用平台类型一致。如有疑问请参考入门指南
206 因为时间戳无效导致签名校验失败
207 重放请求
303 服务端的其它异常
401 账户已经欠费停
405 鉴权失败
100101 缺少必要参数
100102 参数错误
100103 参数长度超过限制
100111 输入内容高度敏感
100112 输入内容中度敏感
100117 用户使用太频繁
100201 模型回答内容高度敏感
100202 模型回答内容中度敏感
100243 请求需要使用的token超出限制
100299 系统内部异常
102601 没有猜你想问插件的使用权限