流式会话接口

阅读提示

请先阅读:大模型会话接口集成概述

1 会话接口请求

1.1 请求链接

https://alime-ws.aliyuncs.com/sse/paas4Json/{AccessToken}/{ChannelId}/{Sign}/{Timestamp}

1.2 请求链接参数解释

名称

描述

AccessToken

认证Token。调用ApplyForStreamAccessToken - 获取流式调用的连接信息接口获取。

ChannelId

流式通道。调用ApplyForStreamAccessToken - 获取流式调用的连接信息接口获取。

Sign

签名,通过加签协议生成。参考会话接口签名

Timestamp

时间戳,是获取sign的加签元素之一,可直接取系统时间毫秒值作为时间戳

1.3 请求体参数(JSON)

名称

类型

是否必填

描述

messageId

String

请求调用的唯一标志,系统内部用于幂等判断,建议使用UUID

action

String

固定值:TongyiBeebotChat

version

String

固定值:2022-04-08

data

List

详见会话请求参数

1.3.1 会话请求参数

名称

类型

是否必填

描述

InstanceId

String

机器人ID,例如:chatbot-cn-dDmF3jcdVf

Utterance

String

机器人访问者的输入。长度限制128个字符

SessionId

String

会话ID,用于标识一个访问者的会话和保持上下文信息

SenderId

String

访问者ID。用于识别当前会话中的用户

SenderNick

String

当前会话中访问的昵称

VendorParam

JSON String

是一个JSON格式的用户自定义参数集,可以传入用户自定义的参数到各对话引擎,例如:

  • 参数为单个值:{"phone":123456789}

  • 参数为数组:{"name":["a","b","c"]}

  • 文档标签:{"docLabels":"标签1,标签2"}

Perspective

Array of String

视角编码,用于调用同一知识标题下不同视角的答案。在拼装请求参数时,需要以Perspective={视角编码}的格式传递参数。如:&Perspective=["FZJBY3raWr"]。

SandBox

Boolean

测试、正式环境标识,默认为正式环境。

  • true:测试环境,仅限测试使用,生产使用有不稳定、QPS 限制等风险。

  • false:正式环境

Command

String

请求的指令信息。

当前支持传入TIMEOUT:触发对话工厂超时话术

GUIDEPOST:触发对话工厂异步服务,详见异步服务使用手册

2 响应参数说明

重要

如果返回HTML代码,则说明URL上的参数不正确。

字段名

类型

描述

success

Boolean

是否成功

code

String

错误码(success为false时)

message

String

错误提示(success为false时)

messageId

String

2.3中请求的messageId

requestId

String

每段响应推送的requestId

data

Array

接口返回结果

data格式:

[
  {
    "type": "JSON_TEXT",
    "value": ""
  }
]

value为会话接口的响应结果,详见:会话响应结果

会话响应结果

字段名

类型

描述

SessionId

String

本次会话的ID

MessageId

String

本条会话应答消息的ID

SequenceId

String

本条会话应答消息的某一段内容的ID

Source

String

答案来源,可能为空。

任务型对话:TASK_DRIVEN_DIALOGUE

结构化数据表知识:STRUCTURAL_KNOWLEDGE

半结构化/非结构化知识:NON_STRUCTURAL_KNOWLEDGE

SYSTEM_ASK_CONFIG:问答策略配置

StreamEnd

Boolean

流式返回是否结束

MessageBody

MessageBody

大模型返回的消息体

3.1.1 MessageBody

字段名

类型

描述

Type

String

答案类型。

Direct:直出

Clarify:反问或者澄清

DirectMessageBody

DirectMessageBody

当Type为Direct时,此字段包含机器人返回的DirectMessageBody对象

ClarifyMessageBody

ClarifyMessageBody

当Type为Clarify时,此字段包含机器人返回的ClarifyMessageBody对象

Commands

Map<String, Object>

此字段返回指令携带的参数。字段详情见Commonds字段释义

DirectMessageBody

字段名

类型

描述

SentenceList

Array of Sentence

大模型输出的答案,内容可能分成多段,可以分段展示。

字段详情见Sentence字段释义

ContentType

String

答案内容的数据类型

枚举值如下:

PLAIN_TEXT:纯本文

RICH_TEXT: 富文本

HitSystemAskConfig

String

命中的问答策略配置,可能为空

SENSITIVE_WORD:敏感词

NO_ANSWER:无答案

GPTQA_MODEL:模型兜底回复

COMMANDS:指令

AnswerReference

AnswerReference

答案引用内容

字段详情见AnswerReference字段释义

Ext

Map<String, Object>

各种答案来源个性化信息。字段详情见Ext字段释义

RelatedQuestionList

Array of RelatedQuestion

关联问题。字段详见RelatedQuestion字段释义

Sentence字段释义

字段名

类型

描述

Content

String

大模型输出的答案段落

ReferNumber

Integer

段落序号

AnswerReference字段释义

字段名

类型

描述

ItemList

Array of Item

引用内容列表

Item字段释义

字段名

类型

描述

Number

Integer

引用的序号,需要从1开始

DataSource

String

数据来源,枚举值:

FAQ_DIRECT:高频问答高置信直出

FAQ:高频问答

DOC:文档

WEBSITE:网站

QUARK:夸克

TABLE:表格

EXTERNAL_DATA_SOURCE:元数据

FLOW:流程

FUNCTION:API插件

ContentType

String

引用的数据类型

枚举值如下:

PLAIN_TEXT:纯本文

RICH_TEXT: 富文本

Content

String

当ContentType为PLAIN_TEXT、RICH_TEXT,该字段返回相应格式的引用的文本信息

Title

String

DataSource为FAQ:高频问答知识标题

DataSource为DOC、WEBSITE、QUARK:文档标题

DataSource为TABLE、EXTERNAL_DATA_SOURCE:数据表名称

DataSource为FLOW:流程名称

DataSource为FUNCTION:API插件名称

ReferenceExt

Map<String, Object>

来源于不同DataSource的个性化引用的信息。字段详情见ReferenceExt字段释义

ReferenceExt字段释义

DataSource=DOC/WEBSITE/QUARK时:

字段名

类型

描述

DocName

String

文档名称

PageUrls

Array of String

引用内容所在页URL

PagePos

Array of PageBlockPos

引用内容所在页坐标

Meta

JSONString

引用的文档Meta信息

依赖DataSource

当WEBSITE/QUARK时:系统内置 {"url":""}

当DOC时:客户自定义

PageBlockPos

字段名

类型

描述

X

Integer

x坐标

Y

Integer

y坐标

Width

Integer

引用内容所在页面的宽度

Height

Integer

引用内容所在页面的高度

PageId

String

引用内容所在页的页码

Ext字段释义

Source=TASK_DRIVEN_DIALOGUE时:

字段名

类型

描述

EXTERNAL_FLAGS

Map

流程中配置的EXTERNAL_FLAGS透出

RelatedQuestion字段释义

字段名

类型

描述

Content

String

关联问题的内容

ClarifyMessageBody

字段名

类型

描述

ClarifyContent

String

大模型澄清的完整回复。如:

你想咨询的是哪个学校:清华大学还是北京大学?

Title

String

澄清的标题,如:你想咨询的是哪个学校

ClarifyList

Array of Clarify

澄清内容列表,接入方可以依据此数据实现点击后继续提问的效果。

如:清华大学、北京大学

Clarify

字段名

类型

描述

Title

String

反问内容,可能是

数据文档的列值

Commands

Commands 系统内置指令

参数名称

参数类型

参数含义

value值示例

内置value字段释义

sysToAgent

string

系统内置转人工指令

{
    "skillGroup": "12",
    "ext": "abc",
    "toAgentReason": "MultiTurnNoAnswer"
}

skillGroup: 技能组信息

ext:扩展字段

toAgentReason:转人工原因,枚举值:

  • 机器人无回复:MultiTurnNoAnswer

  • 机器人重复澄清:RepeatRecommend

  • 用户重复提问:RepeatAsk

  • 触发关键词转人工:HitKeywords

  • 触发情绪转人工:HitEmotion

3 示例

3.1 请求示例

会话接口链接示例:

此链接仅参考作用,请不要直接使用。https://alime-ws.aliyuncs.com/sse/paas4Json/121ccf51-94bf-4035-b7b4-4596ec1c03b4/e8c472e8-ddd8-42c8-b042-a89c7caa346d/d18120b6d9f83953b56340443f75188f/1718179407815

请求体:

{
  "messageId": "9b73cec6-c6d0-4424-8427-1307eaa0b9fb",
  "action":"TongyiBeebotChat",
  "version":"2022-04-08",
  "data": [
    {
      "type": "JSON_TEXT",
      "value": "{\"InstanceId\":\"chatbot-cn-dDmF3jcdVf\",\"Utterance\":\"你有什么技能?\",\"VendorParam\":\"{\\\"docLabels\\\":\\\"30022351214\\\"}\",\"Perspective\":[\"cnfKrDEfFa\",\"deasdSKoipa\"]}"
    }
  ]
}

3.2 返回示例

{
    "data": [
        {
            "type": "JSON_TEXT",
            "value":"{\"MessageBody\":{\"DirectMessageBody\":{\"ContentType\":\"RICH_TEXT\",\"Ext\":{},\"HitSystemAskConfig\":\"GPTQA_MODEL\",\"SentenceList\":[{\"Content\":\"我作为一名人工智能助手,\"}]},\"Type\":\"Direct\"},\"MessageId\":\"d8720210-9588-4b49-b412-09648621a073\",\"SequenceId\":\"f186e72492214631a6a150b2288d269f\",\"SessionId\":\"cidu1dmqF8iUdz2gNonzzZAhsWsocstnJqThr+wp430evc=\",\"Source\":\"SYSTEM_ASK_CONFIG\",\"StreamEnd\":false}"
        }
    ],
    "messageId": "9b73cec6-c6d0-4424-8427-1307eaa0b9fb",
    "requestId": "8362abad-cde4-4350-b89a-583429d00204",
    "success": true
}

3.2.1 会话响应结果

返回示例中的value字段去除转义字符后得到的JSON对象

{
    "MessageBody": {
        "DirectMessageBody": {
            "ContentType": "RICH_TEXT",
            "Ext": {},
            "HitSystemAskConfig": "GPTQA_MODEL",
            // 大模型输出的答案:把SentenceList列表每一个content为一个段落。
            "SentenceList": [
                {
                    "Content": "我作为一名人工智能助手,"
                }
            ]
        },
        "Type": "Direct"
    },
    "MessageId": "d8720210-9588-4b49-b412-09648621a073",
    "SequenceId": "f186e72492214631a6a150b2288d269f",
    "SessionId": "cidu1dmqF8iUdz2gNonzzZAhsWsocstnJqThr+wp430evc=",
    "Source": "SYSTEM_ASK_CONFIG",
    "StreamEnd": false
}

3.2.2 其他的响应示例

3.2.2.1 Source=TASK_DRIVEN_DIALOGUE
{
    "MessageBody":{
        "Commands":{},
        "DirectMessageBody":{
            "ContentType":"PLAIN_TEXT",
            "Ext":{
                "EXTERNAL_FLAGS":{}
            },
            "SentenceList":[
                {
                    "Content":"北京市晴,气温 8 摄氏度,东风 ≤3 级"
                }
            ]
        },
        "Type":"Direct"
    },
    "MessageId":"7a2cdb51-af56-4ac9-9c6d-108905695ac9",
    "SequenceId":"4861074fe523498ba3f397e876b60105",
    "SessionId":"f3d7e960933411ee96144bea43fe4df3",
    "Source":"TASK_DRIVEN_DIALOGUE",
    "StreamEnd":true
}

3.2.2.3 Source=NON_STRUCTURAL_KNOWLEDGE
{
    "MessageBody":{
        "DirectMessageBody":{
            "AnswerReference":{
                "ItemList":[
                    {
                        "Content":"你好",
                        "ContentType":"RICH_TEXT",
                        "DataSource":"FAQ_DIRECT",
                        "Number":1,
                        "ReferenceExt":{
                            "DocName":"FAQ知识库"
                        },
                        "Title":"你好"
                    }
                ]
            },
            "ContentType":"RICH_TEXT",
            "SentenceList":[
                {
                    "Content":"你好",
                    "ReferNumber":1
                }
            ]
        },
        "Type":"Direct"
    },
    "MessageId":"808a9cfb-2cec-4230-aad1-66c28df6040e",
    "SequenceId":"32a052f098c14769b8b81ac202f38d01",
    "SessionId":"595fa8a0940611eeb59a155f6621f5d6",
    "Source":"NON_STRUCTURAL_KNOWLEDGE",
    "StreamEnd":true
}

3.2.2.4 Source=SYSTEM_ASK_CONFIG
{
    "MessageBody":{
        "DirectMessageBody":{
            "ContentType":"PLAIN_TEXT",
            "HitSystemAskConfig":"NO_ANSWER",
            "SentenceList":[
                {
                    "Content":"我还没有学会这个问题,已经记录会尽快学习为您解答,请尝试询问我其他问题"
                }
            ]
        },
        "Type":"Direct"
    },
    "MessageId":"f13833e7-9ca4-4a5b-8878-f5cc8a0a327c",
    "SequenceId":"245c39ce1f11406bb3cf60b4d017dff0",
    "SessionId":"6e7c44a0940111ee91e69d173591e2de",
    "Source":"SYSTEM_ASK_CONFIG",
    "StreamEnd":true
}

4 错误码

重要

如果返回HTML代码,则说明URL上的参数不正确。

错误代码

HTTP状态码

描述

InvalidInstanceId.NotFound

404

指定的机器人ID不存在

InvalidParameter

400

参数不合法

InternalError

500

内部错误

限流错误

如果并发超过版本并发,将会触发限流,相应示例:

{
    "code": "csQueueBusy",
    "data": [],
    "message": "排队中:服务繁忙,请等待",
    "messageId": "203bee17-c404-4b9c-ba96-cf3873237fa0",
    "requestId": "18f80b3c-ff87-468c-b90f-0d31e4ce34b8",
    "success": false
}