检索增强应用

重要

历史文档仅适用于百炼1.0版本的APISDK调用,鉴于旧版功能已停止迭代更新,强烈建议您升级至最新版APISDK,具体详情请参考新版本升级说明

功能描述

本文主要介绍如何使用API调用阿里云百炼的检索增强模型应用,包括从应用广场中创建的检索增强生成应用(如RAG检索增强应用模板、企业知识检索增强、企业知识检索增强-Max)。

说明

首先,请参考文档AccessKey、AppIDAgentKey获取方式获取AK/SK、Agent KeyAppId。如果是RAM账号,请参考文档RAM子账号使用方式和授权操作进行授权操作。

其次, 调用API需要获取到临时Token,请参照创建Token

API详情

请求地址: https://bailian.aliyuncs.com/v2/app/completions

请求方式:POST

请求数据格式:JSON

请求参数

参数名

参数类型

是否必填

说明

示例值

请求头

Content-Type

string

请求类型

application/json; charset=utf-8

Accept

string

流式响应时,需要携带此请求头,非流式响应不需要携带。

text/event-stream

Authorization

string

API临时Token。

Bearer cc*******m3

请求Body

RequestId

string

请求唯一标识,请确保RequestId不重复。

30**********869

SessionId

string

对话历史会话唯一标识, 传入sessionId后,将在云端进行对话历史进行记录,调用大模型将自动携带存储的对话历史。请确保SessionId不重复,并且SessionIdHistory二选一即可。

40**********213

AppId

string

阿里云百炼应用唯一标识。

ea*****541

Stream

boolean

是否流式输出, 默认为否。

false

Prompt

string

提示词

中国封建王朝经历多少年?

History

对话历史。SessionIdHistory二选一即可,如果同时传入SessionIdHistory,则只有History会生效。

[{"User": "太阳是恒星吗?", "Bot": "是的"}]

History[x].User

string

对话历史的用户消息。

太阳是恒星吗?

History[x].Bot

string

对话历史大的模型消息。

是的

TopP

float

生成时,核采样方法的概率阈值。例如,取值为0.8时,仅保留累计概率之和大于等于0.8的概率分布中的token,作为随机采样的候选集。取值范围为(0,1.0),取值越大,生成的随机性越高;取值越低,生成的随机性越低。默认值为0.8。注意,取值不要大于等于1

0.8

Parameters

Parameter

模型参数设置。

Parameters.TopK

int

生成时,采样候选集的大小。例如,取值为50时,仅将单次生成中得分最高的50token组成随机采样的候选集。取值越大,生成的随机性越高;取值越小,生成的确定性越高。注意:如果top_k参数为空或者top_k的值大于100,表示不启用top_k策略,此时仅有top_p策略生效,默认是空。

50

Parameters.Seed

int

生成时使用的随机数种子,用户控制模型生成内容的随机性。seed支持无符号64位整数,默认值为1234。在使用seed时,模型将尽可能生成相同或相似的结果,但目前不保证每次生成的结果完全相同。

65535

Parameters.Temperature

float

用于控制随机性和多样性的程度。具体来说,temperature值控制了生成文本时对每个候选词的概率分布进行平滑的程度。较高的temperature值会降低概率分布的峰值,使得更多的低概率词被选择,生成结果更加多样化;而较低的temperature值则会增强概率分布的峰值,使得高概率词更容易被选择,生成结果更加确定。

取值范围: [0, 2),系统默认值1.0。不建议取值为0,无意义。

1.0

HasThoughts

boolean

是否输出文档召回推理过程相关信息。

truefalse

DocReferenceType

string

启用文档检索后,文档引用类型, 取值包括: simple | indexed。

simple: 返回文档引用信息,但文本中不包含文档角标的索引位置。

indexed: 返回文档引用信息,文本中包含文档角标的索引位置。

simpleindexed

DocTagCodes

string[]

文档标签code列表

["471d*******3427", "881f*****0c232"]

响应参数

字段名

字段类型

说明

公共响应参数

Success

boolean

是否成功(true: 成功,false: 失败)。

Code

string

错误代码。

Message

string

错误消息。

RequestId

string

请求唯一标识。

Data

object

文本生成结果。

响应数据

ResponseId

string

大模型的responseId。

SessionId

string

对话历史的会话唯一标识。

Text

string

本次模型调用的输出内容。

Usage

list

应用级别的token消耗

Usage[x].InputTokens

int

本次请求输入内容的token数。

Usage[x].OutputTokens

int

本次请求输出内容的token数。

Thoughts

list

召回推理过程信息。

Thoughts[x].Thought

string

大模型思考结果。

Thoughts[x].ActionType

string

大模型返回的执行步骤类型

api:执行API插件,response:返回最终结果。

Thoughts[x].ActionName

string

执行的action名称, 如文档检索、API插件。

Thoughts[x].Action

string

执行的步骤。

Thoughts[x].ActionInputStream

string

入参的流式结果。

Thoughts[x].ActionInput

string

插件的输入参数。

Thoughts[x].Response

string

大模型返回的结果。

Thoughts[x].Observation

string

检索或插件的返回结果。

DocReferences

list

文档引用信息。

DocReferences[x].IndexId

string

引用的角标索引

DocReferences[x].Title

string

引用的文档标题

DocReferences[x].DocId

string

引用的文档Id

DocReferences[x].DocName

string

引用的文档名

DocReferences[x].DocUrl

string

文档下载地址

DocReferences[x].Text

string

引用的文档内容

DocReferences[x].BizId

string

业务关联标识

示例

请求示例

curl -X "POST" "https://bailian.aliyuncs.com/v2/app/completions" \
-H 'Content-Type: application/json; charset=utf-8' \
-H 'Authorization: Bearer <Token>' \
-H 'Accept-charset: utf-8' \
-d '{
  "RequestId": "<RequestId>",
  "AppId": "<AppId>",
  "Prompt": "API接口说明中, TopP参数改如何传递?",
  "History": [
    {
      "User": "API接口如何使用",
      "Bot": "API接口需要传入prompt、app id并通过post方法调用"
    }
  ],
  "DocReferenceType": "simple",
  "DocTagCodes": ["9dfa***********96e292"]
}' --verbose

响应示例

{
  "Success": true,
  "Data": {
    "ResponseId": "3c59d91**********37e98135f",
    "Text": "API接口说明中, TopP参数是一个float类型的参数,取值范围为0到1.0,默认值为1.0。较大的取值将导致生成的token更加随机,而较小的取值将导致生成的token更加确定。",
    "Thoughts": [],
    "DocReferences": [
      {
        "IndexId": "3",
        "Title": "API接口说明",
        "DocId": "1444DBF*************FF1A53",
        "DocName": "API接口说明",
        "Text": "填(0,1.0),取值越大,生成的随机性越高。"
      }
    ],
    "Usage": [
      {
        "InputTokens": 1871,
        "OutputTokens": 57,
        "ModelId": "bailian_docbot"
      }
    ]
  },
  "RequestId": "f0a953cc-*************-f32e606985d7"
}

请求示例(流式SSE)

curl -X "POST" "https://bailian.aliyuncs.com/v2/app/completions" \
-H 'Content-Type: application/json; charset=utf-8' \
-H 'Authorization: Bearer <Token>' \
-H 'Accept: text/event-stream' \
-H 'Accept-charset: utf-8' \
-d '{
  "RequestId": "<RequestId>",
  "AppId": "<AppId>",
  "Prompt": "API接口说明中, TopP参数改如何传递?",
  "History": [
    {
      "User": "API接口如何使用",
      "Bot": "API接口需要传入prompt、app id并通过post方法调用"
    }
  ],
  "DocReferenceType": "simple",
  "DocTagCodes": ["9dfa***********96e292"]
}' --verbose

响应示例(流式SSE)

data: {
  "Success": true,
  "Data": {
    "ResponseId": "3c59d91**********37e98135f",
    "Text": "API接口说明中, TopP参数是一个float类型的参数,取值范围为0到1.0,默认值为1.0。较大的取值将导致生成的token更加随机,而较小的取值将导致生成的token更加确定。",
    "Thoughts": [],
    "DocReferences": [
      {
        "IndexId": "3",
        "Title": "API接口说明",
        "DocId": "1444DBF*************FF1A53",
        "DocName": "API接口说明",
        "Text": "填(0,1.0),取值越大,生成的随机性越高。"
      }
    ],
    "Usage": [
      {
        "InputTokens": 1871,
        "OutputTokens": 57,
        "ModelId": "bailian_docbot"
      }
    ]
  },
  "RequestId": "f0a953cc-*************-f32e606985d7"
}