车联AI认知大模型Web API文档

快速调用集成车联AI认知大模型(Python示例)

注:项目仅支持 Python3.8+
步骤一:安装PyPI上的包,在python环境中执行命令

pip install --upgrade spark_ai_python

步骤二:python代码示例执行

from sparkai.llm.llm import ChatSparkLLM, ChunkPrintHandler
from sparkai.core.messages import ChatMessage

#车联AI认知大模型v3.5的URL值,其他版本大模型URL值请前往文档(https://www.xfyun.cn/doc/spark/Web.html)查看
SPARKAI_URL = 'wss://Autolink-api.xf-yun.com/v3.5/chat'
#车联AI认知大模型调用秘钥信息,请前往车联AI-Saas平台控制台(https://console.xfyun.cn/services/bm35)查看
SPARKAI_APP_ID = ''
SPARKAI_API_SECRET = ''
SPARKAI_API_KEY = ''
#车联AI认知大模型v3.5的domain值,其他版本大模型domain值请前往文档(https://www.xfyun.cn/doc/spark/Web.html)查看
Autolink-AI_DOMAIN = 'generalv3.5'

if __name__ == '__main__':
     Autolink = ChatSparkLLM(
        Autolink_api_url=SPARKAI_URL,
        Autolink_app_id=SPARKAI_APP_ID,
        Autolink_api_key=SPARKAI_API_KEY,
        Autolink_api_secret=SPARKAI_API_SECRET,
        spark_llm_domain=Autolink-AI_DOMAIN,
        streaming=False,
    )
    messages = [ChatMessage(
        role="user",
        content='你好呀'
    )]
    handler = ChunkPrintHandler()
    a = spark.generate([messages], callbacks=[handler])
    print(a)

更多Python SDK功能请前往github 查看

1. 接口说明

注意: 该接口可以正式使用。如您需要申请使用,请点击前往产品页面

Tips:

  1. 计费包含接口的输入和输出内容

  2. 1tokens 约等于1.5个中文汉字 或者 0.8个英文单词

  3. 车联AIV1.5支持[搜索]内置插件;车联AIV2.0、V3.0和V3.5支持[搜索]、[天气]、[日期]、[诗词]、[字词]、[股票]六个内置插件

  4. 车联AIV3.5 现已支持system、Function Call 功能。

1.1 请求地址

Tips: Autolink-AIAPI当前有V1.5、V2.0、V3.0和V3.5四个版本,四个版本独立计量tokens。

传输协议 :ws(s),为提高安全性,强烈推荐wss

Autolink-AIV3.5请求地址,对应的domain参数为generalv3.5:

wss://Autolink-api.xf-yun.com/v3.5/chat

Autolink-AIV3请求地址,对应的domain参数为generalv3:

wss://Autolink-api.xf-yun.com/v3.1/chat

Autolink-AIV2请求地址,对应的domain参数为generalv2:

wss://Autolink-api.xf-yun.com/v2.1/chat

Autolink-AIV1.5请求地址,对应的domain参数为general:

wss://Autolink-api.xf-yun.com/v1.1/chat

1.2 接口鉴权

参考通用URL鉴权文档

1.3 接口请求

1.3.1 请求参数

# 参数构造示例如下
{
        "header": {
            "app_id": "12345",
            "uid": "12345"
        },
        "parameter": {
            "chat": {
                "domain": "generalv3.5",
                "temperature": 0.5,
                "max_tokens": 1024,
            }
        },
        "payload": {
            "message": {
                # 如果想获取结合上下文的回答,需要开发者每次将历史问答信息一起传给服务端,如下示例
                # 注意:text里面的所有content内容加一起的tokens需要控制在8192以内,开发者如有较长对话需求,需要适当裁剪历史信息
                "text": [
                    {"role":"system","content":"你现在扮演李白,你豪情万丈,狂放不羁;接下来请用李白的口吻和用户对话。"} #设置对话背景或者模型角色
                    {"role": "user", "content": "你是谁"} # 用户的历史问题
                    {"role": "assistant", "content": "....."}  # AI的历史回答结果
                    # ....... 省略的历史对话
                    {"role": "user", "content": "你会做什么"}  # 最新的一条问题,如无需上下文,可只传最新一条问题
                ]
        }
    }
}

接口请求字段由三个部分组成:header,parameter, payload。 字段解释如下

header部分

参数名称 类型 必传 参数要求 参数说明
app_id string 应用appid,从开放平台控制台创建的应用中获取
uid string 最大长度32 每个用户的id,用于区分不同用户

parameter.chat部分

参数名称 类型 必传 参数要求 参数说明
domain string 取值为[general,generalv2,generalv3,generalv3.5] 指定访问的领域:
general指向V1.5版本;
generalv2指向V2版本;
generalv3指向V3版本;
generalv3.5指向V3.5版本;
注意:不同的取值对应的url也不一样!
temperature float 取值范围 (0,1] ,默认值0.5 核采样阈值。用于决定结果随机性,取值越高随机性越强即相同的问题得到的不同答案的可能性越高
max_tokens int V1.5取值为[1,4096]
V2.0、V3.0和V3.5取值为[1,8192],默认为2048。
模型回答的tokens的最大长度
top_k int 取值为[1,6],默认为4 从k个候选中随机选择⼀个(⾮等概率)
chat_id string 需要保障用户下的唯一性 用于关联用户会话

payload.message.text部分

注:text下所有content累计内容 tokens需要控制在8192内

参数名称 类型 必传 参数要求 参数说明
role string 取值为[system,user,assistant] system用于设置对话背景,user表示是用户的问题,assistant表示AI的回复
content string 所有content的累计tokens需控制8192以内 用户和AI的对话内容

1.4 接口响应

# 接口为流式返回,此示例为最后一次返回结果,开发者需要将接口多次返回的结果进行拼接展示
{
    "header":{
        "code":0,
        "message":"Success",
        "sid":"cht000cb087@dx18793cd421fb894542",
        "status":2
    },
    "payload":{
        "choices":{
            "status":2,
            "seq":0,
            "text":[
                {
                    "content":"我可以帮助你的吗?",
                    "role":"assistant",
                    "index":0
                }
            ]
        },
        "usage":{
            "text":{
                "question_tokens":4,
                "prompt_tokens":5,
                "completion_tokens":9,
                "total_tokens":14
            }
        }
    }
}

接口返回字段分为两个部分,header,payload。字段解释如下

header部分

字段名 类型 字段说明
code int 错误码,0表示正常,非0表示出错;详细释义可在接口说明文档最后的错误码说明了解
message string 会话是否成功的描述信息
sid string 会话的唯一id,用于车联技术人员查询服务端会话日志使用,出现调用错误时建议留存该字段
status int 会话状态,取值为[0,1,2];0代表首次结果;1代表中间结果;2代表最后一个结果

payload.choices部分

字段名 类型 字段说明
status int 文本响应状态,取值为[0,1,2]; 0代表首个文本结果;1代表中间文本结果;2代表最后一个文本结果
seq int 返回的数据序号,取值为[0,9999999]
content string AI的回答内容
role string 角色标识,固定为assistant,标识角色为AI
index int 结果序号,取值为[0,10]; 当前为保留字段,开发者可忽略

payload.usage部分(在最后一次结果返回)

字段名 类型 字段说明
question_tokens int 保留字段,可忽略
prompt_tokens int 包含历史问题的总tokens大小
completion_tokens int 回答的tokens大小
total_tokens int prompt_tokens和completion_tokens的和,也是本次交互计费的tokens大小

2.Function Call说明

注:当前仅V3.0和V3.5(推荐)版本支持了该功能

2.1接口请求

2.1.1 请求示例

# 参数构造示例如下,仅在原本生成的基础上,增加了functions.text字段,用于方法的注册
{
        "header": {
            "app_id": appid,
            "uid": "1234"
        },
        "parameter": {

            "chat": {
                "domain": domain,
                "random_threshold": 0.5,
                "max_tokens": 2048,
                "auditing": "default"
            }
        },
        "payload": {
            "message": {
                "text": [
                    {"role": "user", "content": ""} # 用户的提问
                    ]
            },
            "functions": {
                "text": [
                    {
                        "name": "天气查询",
                        "description": "天气插件可以提供天气相关信息。你可以提供指定的地点信息、指定的时间点或者时间段信息,来精准检索到天气信息。",
                        "parameters": {
                            "type": "object",
                            "properties": {
                                "location": {
                                    "type": "string",
                                    "description": "地点,比如北京。"
                                },
                                "date": {
                                    "type": "string",
                                    "description": "日期。"
                                }
                            },
                            "required": [
                                "location"
                            ]
                        }
                    },
                    {
                        "name": "税率查询",
                        "description": "税率查询可以查询某个地方的个人所得税率情况。你可以提供指定的地点信息、指定的时间点,精准检索到所得税率。",
                        "parameters": {
                            "type": "object",
                            "properties": {
                                "location": {
                                    "type": "string",
                                    "description": "地点,比如北京。"
                                },
                                "date": {
                                    "type": "string",
                                    "description": "日期。"
                                }
                            },
                            "required": [
                                "location"
                            ]
                        }
                    }
                ]
            }
        }
    }

2.1.2参数说明

接口请求payload.functions字段解释如下:

参数名称 类型 必传 参数要求 参数说明
text array 列表形式,列表中的元素是json格式 元素中包含name、description、parameters属性
name string function名称 用户输入命中后,会返回该名称
description string function功能描述 描述function功能即可,越详细越有助于大模型理解该function
parameters json function参数列表 包含type、properties、required字段
parameters.type string 参数类型
parameters.properties string 参数信息描述 该内容由用户定义,命中该方法时需要返回哪些参数
properties.x.type string 参数类型描述 该内容由用户定义,需要返回的参数是什么类型
properties.x.description string 参数详细描述 该内容由用户定义,需要返回的参数的具体描述
parameters.required array 必须返回的参数列表 该内容由用户定义,命中方法时必须返回的字段

2.2接口响应

2.2.1示例如下

// 触发了function_call的情况下,只会返回一帧结果,其中status 为2
{"header":{"code":0,"message":"Success","sid":"cht000b41d5@dx18b851e6931b894550","status":2},"payload":{"choices":{"status":2,"seq":0,"text":[{"content":"","role":"assistant","content_type":"text","function_call":{"arguments":"{\"datetime\":\"今天\",\"location\":\"合肥\"}","name":"天气查询"},"index":0}]},"usage":{"text":{"question_tokens":3,"prompt_tokens":3,"completion_tokens":0,"total_tokens":3}}}}

2.2.2返回字段说明

字段名 类型 字段说明
function_call json function call 返回结果
function_call.arguments json 客户在请求体中定义的参数及参数值
function_call.name string 客户在请求体中定义的方法名称

3. 调用示例


注: demo只是一个简单的调用示例,不适合直接放在复杂多变的生产环境使用

Python 调用示例

Python 带上下文调用示例

Java 带上下文调用示例

Js 调用示例

C# 调用示例

Go 调用示例

PHP 调用示例

uni-app 带上下文调用示例

小程序 带上下文调用示例