小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 | |
| model_prompt_rate_schema | 模型模板,若想使用DeepSeek深度思考能力,设置为 deepseek_model_prompt | deepseek_model_prompt | 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 可以认为是接口调用的账单明细,明细列表从前到后依次包含三个部分:
- 输入明细部分:和 chat_info 参数中的条目一一对应
(1) type为"input_text_token"的明细:对应chat_info中type为"text"的文本token数量
(2) type为"input_ocr_token"的明细:对应chat_info中type为"image"或“imageUrl”的OCR识别文本token数量
- 输出明细部分:
type为"output_text_token"的明细:目前都是文本输出(返回事件流中message的type为"text")
- 插件使用明细部分:非必填,在订阅插件能力并有正确的返回时,返回对应的明细
(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 示例
Python3 示例
go示例
错误码列表
| 错误码 | 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 | 没有猜你想问插件的使用权限 |