火山方舟对模型调用 API 进行了新版本升级。SDK V3 版本在 AK/SK 鉴权模式的基础上新增了 API Key 鉴权模式,只需根据调用说明获取 ARK_API_KEY 即可轻松调用。同时,我们还开放了更多参数,让您能够更好地对模型问答内容进行调整。
新版本功能正在逐步上线中,目前已开放对豆包大模型系列,以及 Llama/Mistral 等开源模型的 python 调用。如果您需要调用其他模型(如Moonshot、GLM3等)或其他语言(如Java、Golang),您仍然可以使用 SDK V2。我们将在近期持续更新,并为您提供更多功能和服务。
构造签名时使用的服务元信息如下:
region: cn-beijing
service: ml_maas
schema: https
endpoint: maas-api.ml-platform-cn-beijing.volces.com
path: /api/v2/endpoint/${endpoint_id}/chat
content-type: application/json
AccessKey ID, Secret Access Key 用你火山帐号的 AK 和 SK
action 和 version 留空
Host:maas-api.ml-platform-cn-beijing.volces.com
Region: cn-beijing
提供统一 SDK 的接入形式(需要用 AK/SK 进行旁路鉴权,火山鉴权逻辑可以参考)
Parameters 记录可选控制参数,具体哪些参数可用依赖具体模型的配置。
注意
用户前往火山方舟的模型推理页面建立Endpoint,Endpoint为请求接入的入口,绑定接入方身份,限流,计费以及模型编排等信息,不再支持通过模型名+版本访问。
字段 | 类型 | 描述 | 是否必填 |
---|---|---|---|
messages | list |
| required |
stream | boolean | 是否流式返回。默认false,如果为 true,则按 SSE (Server-Sent Events) 协议返回数据 | |
tools | list | 一个模型可能调用的工具列表。目前,只支持函数作为工具。使用此功能提供模型可能为其生成JSON输入的函数列表。 | |
tools.type | string | 工具的类型,目前只支持 | |
tools.function.name | string | 描述函数的名称,以便模型知道要调用哪个函数。如: | |
tools.function.description | string | 模型可以根据函数的描述来判断是否需要调用该函数,并确定调用函数的方式和时机。如: | |
tools.function.parameters | object | 以 json schema 形式描述函数的参数,包括参数的名称和类型。这样模型就知道如何为函数提供正确的参数。
| |
tools.function.examples | list | 函数的调用参数示例。如: | |
parameters.max_new_tokens | integer | 最多新生成 token 数(不包含 prompt 的 token 数目) | 依赖模型默认配置 |
parameters.max_prompt_tokens | integer | 最大输入模型的 token 数,如果输入文本的 token 数超过该长度,将取最后 | 依赖模型默认配置 |
parameters.temperature | number | 采样温度,(0, 1.0] | 依赖模型默认配置 |
parameters.top_p | number | 核采样,[0, 1.0] | 依赖模型默认配置 |
parameters.top_k | integer | top-k-filtering 算法保留多少个 最高概率的词 作为候选,正整数。 | 依赖模型默认配置 |
parameters.do_sample | bool | 是否采样 | 依赖模型默认配置 |
parameters.presence_penalty | number | 存在惩罚,如果为正,值越大,模型谈论到新话题的概率越大,取值范围为 [-2.0, 2.0] | 依赖模型默认配置 |
parameters.frequency_penalty | number | 频率惩罚,如果为正,值越大,模型逐字重复同一行的概率越小,取值范围为 [-2.0, 2.0] | 依赖模型默认配置 |
parameters.repetition_penalty | number | 重复惩罚,取值范围为 [1.0, 2.0] | 依赖模型默认配置 |
parameters.logprobs | integer | 返回概率最高的候选集,取值范围[0, 10] | 依赖模型默认配置 |
parameters.logit_bias | map<string,number> | 接受一个map,该对象将token(token id使用tokenization接口获取)映射到从-100到100的关联偏差值。每个模型的效果有所不同,但-1和1之间的值会减少或增加选择的可能性;-100或100应该导致禁止或排他选择相关的token。 | 依赖模型默认配置 |
字段 | 类型 | 描述 |
---|---|---|
choices | list(choice) | |
choice | object |
|
usage | object |
|
error(optioanl) | object |
|
POST /api/v2/endpoint/${endpoint_id}/chat
说明
调用前请修改:
VOLC_ACCESSKEY
和VOLC_SECRETKEY
;{YOUR_ENDPOINT_ID}
python >= 3.5
):// Request curl --request POST \ --url https://maas-api.ml-platform-cn-beijing.volces.com/api/v2/endpoint/${YOUR_ENDPOINT_ID}/chat \ --header 'Accept: application/json' \ --header 'Content-Type: application/json' \ --data '{ "stream": false, "parameters": { "max_new_tokens": 1024, "temperature": 0.9 }, "messages": [ { "role": "user", "content": "你好" }, { "role": "assistant", "content": "你好,有什么可以帮助您?" }, { "role": "user", "content": "你可以做些什么?" } ] }' // Response { "choices": [ { "message": { "role": "assistant", "content": "我可以回答各种问题,例如历史、科学、技术、文化、娱乐等方面的问题。我还可以生成文本,例如摘要、文章、故事等。您需要我做什么呢?" }, "finish_reason": "stop" } ], "usage": { "prompt_tokens": 20, "completion_tokens": 43, "total_tokens": 63 } }
在 stream 模式下,基于 SSE (Server-Sent Events) 协议返回生成内容:
data:{JSON_OF_OUTPUT_STRUCT}
data:{"choices":[{"message":{"content":"Hello!"}}]}
usage
信息,用来进行 token 统计。data:[DONE]
作为成功响应后的结束标识。如果有error的话,不返回此标识。
// Request curl --request POST \ --url https://maas-api.ml-platform-cn-beijing.volces.com/api/v2/endpoint/${YOUR_ENDPOINT_ID}/chat \ --header 'Accept: application/json' \ --header 'Content-Type: application/json' \ --data '{ "stream": true, "parameters": { "max_new_tokens": 1024, "temperature": 0.9 }, "messages": [ { "role": "user", "content": "你好" }, { "role": "assistant", "content": "你好,有什么可以帮助您?" }, { "role": "user", "content": "你可以做些什么?" } ] }' // Response data:{"choices":[{"message":{"content":"我"}}]} data:{"choices":[{"message":{"content":"可以"}}]} data:{"choices":[{"message":{"content":"帮"}}]} data:{"choices":[{"message":{"content":"您"}}]} data:{"choices":[{"message":{"content":"回答"}}]} data:{"choices":[{"message":{"content":"问题"}}]} data:{"choices":[{"message":{"role":"assistant"},"finish_reason":"stop"}],"usage":{"prompt_tokens":20,"completion_tokens":13,"total_tokens":33}} data:[DONE]
字段 | 类型 | 描述 | 是否必填 |
---|---|---|---|
text | string | 需要编码的文本。
| required |
字段 | 类型 | 描述 |
---|---|---|
req_id | string | 请求 id |
total_tokens | integer | 编码后token的数量
|
tokens | list | token列表,如果一个字由多个token_id组成,那么以token:{token_id}的字符串形式返回
|
token_ids | list | token id列表,与offset_mapping一一对应 |
offset_mapping | list<tuple<number,number>> | 映射每个token在切片中的位置 |
POST /api/v2/endpoint/${endpoint_id}/tokenization
说明
调用前请修改:
VOLC_ACCESSKEY
和VOLC_SECRETKEY
;{YOUR_ENDPOINT_ID}
python >= 3.5
):// Request curl --request POST \ --url https://maas-api.ml-platform-cn-beijing.volces.com/api/v2/endpoint/${YOUR_ENDPOINT_ID}/tokenization \ --header 'Accept: application/json' \ --header 'Content-Type: application/json' \ --data '{ "text": "天空为什么这么蓝?" }' // Response { "total_tokens": 5, "tokens": [ "天空", "为什么", "这么", "蓝", "?" ], "token_ids": [ 14539, 4752, 5189, 5399, 1077 ], "offset_mapping": [ [ 0, 2 ], [ 2, 5 ], [ 5, 7 ], [ 7, 8 ], [ 8, 9 ] ] }
字段 | 类型 | 描述 |
---|---|---|
query | string | 输入给模型的查询请求内容。
|
labels | list | 类别列表,最多100个。强烈建议使用单token_id的标签,否则会大幅度降低性能
|
字段 | 类型 | 描述 |
---|---|---|
req_id | string | 请求id |
label | string | 选中的label |
label_logprobos | object | 每个label的token概率,由key-value对构成。强烈建议使用单token_id的标签,否则会大幅度降低性能
|
注意
强烈建议使用单token_id的label,以大幅度提高性能。可以通过Tokenization接口判断是否为单token_id。
POST /api/v2/endpoint/${endpoint_id}/classification
说明
调用前请修改:
VOLC_ACCESSKEY
和VOLC_SECRETKEY
;{YOUR_ENDPOINT_ID}
python >= 3.5
):// Request curl --request POST \ --url https://maas-api.ml-platform-cn-beijing.volces.com/api/v2/endpoint/${YOUR_ENDPOINT_ID}/classification \ --header 'Accept: application/json' \ --header 'Content-Type: application/json' \ --data '{ "query": "中国的第一个经济特区是?", "labels": [ "北京", "珠海", "深圳", "厦门", "上海" ] }' // Response { "label": "深圳", "label_logprobos": { "北京": { "tokens": [ "北京" ], "token_logprobs": [ -12.4375 ] }, "珠海": { "tokens": [ "珠海" ], "token_logprobs": [ -10.375 ] }, "上海": { "tokens": [ "上海" ], "token_logprobs": [ -10.25 ] }, "厦门": { "tokens": [ "厦门" ], "token_logprobs": [ -8.125 ] }, "深圳": { "tokens": [ "深圳" ], "token_logprobs": [ -3.75 ] } }, "usage": { "prompt_tokens": 15, "completion_tokens": 5, "total_tokens": 20 } }
字段 | 类型 | 描述 | 是否必填 |
---|---|---|---|
input | list | 输入给模型的、需要向量化的内容。
| required |
字段 | 子字段 | 类型 | 描述 |
---|---|---|---|
req_id | string | 请求 id | |
data | lis | 每个query的向量化结果
| |
usage | object | 该请求的用量统计信息。在 stream 模式下,只有最后一个输出片段才会记录 usage 内容。 | |
prompt_tokens | integer | 输入 prompt 的 token 数量。 | |
completion_tokens | integer | 模型输出的 token 数量。 | |
total_tokens | integer | 输入和输出的总的 token 数量。 |
POST /api/v2/endpoint/${endpoint_id}/embeddings
说明
调用前请修改:
VOLC_ACCESSKEY
和VOLC_SECRETKEY
;{YOUR_ENDPOINT_ID}
python >= 3.5
):// Request curl --request POST \ --url https://maas-api.ml-platform-cn-beijing.volces.com/api/v2/endpoint/${YOUR_ENDPOINT_ID}/embeddings \ --header 'Accept: application/json' \ --header 'Content-Type: application/json' \ --data '{ "input": [ "天很蓝", "海很深" ] }' // Response { "usage": { "prompt_tokens": 6, "total_tokens": 6 }, "object": "list", "data": [ { "index": 0, "embedding": [ 0.011312266811728477, 0.009318970143795013, ... -0.022353211417794228 ], "object": "embedding" }, { "index": 1, "embedding": [ -0.001947728800587356, 0.015627330169081688, 0.018870584666728973, ... -0.03777957335114479 ], "object": "embedding" } ] }