流式会话接口

本文对会话接口请求与相应参数进行了解释说明,并提供了相关示例以及错误码以便于您在调用接口时查阅。

阅读提示

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

会话接口请求

请求链接

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

请求链接参数说明

名称

描述

AccessToken

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

ChannelId

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

Sign

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

Timestamp

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

请求体参数(JSON)

名称

类型

是否必填

描述

messageId

String

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

action

String

固定值:TongyiBeebotChat。

version

String

固定值:2022-04-08。

data

List

详见下列会话请求参数。

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:触发对话工厂异步服务,详见异步服务使用手册。

响应参数说明

重要

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

字段名

类型

描述

success

Boolean

是否成功。

code

String

错误码(successfalse时)。

message

String

错误提示(successfalse时)。

messageId

String

请求的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

大模型返回的消息体。

Type

String

答案类型。

Direct:直出。

Clarify:反问或者澄清。

DirectMessageBody

DirectMessageBody

TypeDirect时,此字段包含机器人返回的DirectMessageBody对象。

SentenceList

Array of Sentence

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

Content

String

大模型输出的答案段落。

ReferNumber

Integer

段落序号。

ContentType

String

答案内容的数据类型。

枚举值如下:

PLAIN_TEXT:纯本文。

RICH_TEXT: 富文本。

HitSystemAskConfig

String

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

SENSITIVE_WORD:敏感词。

NO_ANSWER:无答案。

GPTQA_MODEL:模型兜底回复。

COMMANDS:指令。

AnswerReference

AnswerReference

答案引用内容。

ItemList

Array of Item

引用内容列表,字段详情请参见ItemList字段释义

Ext

Map<String, Object>

各种答案来源个性化信息。

EXTERNAL_FLAGS(Source=TASK_DRIVEN_DIALOGUE时)

Map

流程中配置的EXTERNAL_FLAGS透出。

RelatedQuestionList

Array of RelatedQuestion

关联问题。

Content

String

关联问题的内容。

ClarifyMessageBody

ClarifyMessageBody

TypeClarify时,此字段包含机器人返回的ClarifyMessageBody对象。

ClarifyContent

String

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

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

Title

String

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

ClarifyList

Array of Clarify

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

如:清华大学、北京大学。

Commands

Map<String, Object>

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

ItemList字段释义

字段名

类型

描述

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

ContentTypePLAIN_TEXT、RICH_TEXT,该字段返回相应格式的引用的文本信息。

Title

String

DataSourceFAQ:高频问答知识标题。

DataSourceDOC、WEBSITE、QUARK:文档标题。

DataSourceTABLE、EXTERNAL_DATA_SOURCE:数据表名称。

DataSourceFLOW:流程名称。

DataSourceFUNCTION: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

引用内容所在页的页码。

Commands字段释义

Commands 系统内置指令

参数名称

参数类型

参数含义

value值示例

内置value字段释义

sysToAgent

string

系统内置转人工指令

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

skillGroup: 技能组信息

ext:扩展字段。

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

  • 机器人无回复:MultiTurnNoAnswer。

  • 机器人重复澄清:RepeatRecommend。

  • 用户重复提问:RepeatAsk。

  • 触发关键词转人工:HitKeywords。

  • 触发情绪转人工:HitEmotion。

示例说明

请求示例

会话接口链接示例:

此链接仅参考作用,请不要直接使用。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\"]}"
    }
  ]
}

返回示例

{
    "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
}

会话响应结果

返回示例中的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
}

其他的响应示例

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
}
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
}
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
}

错误码

重要

如果返回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
}