创建模型评估任务
更新时间:2024-09-30
功能介绍
本接口用于创建并启动模型评估任务。
SDK调用
使用说明
本文API支持通过Python SDK、Go SDK、Java SDK 和 Node.js SDK调用,调用流程请参考SDK安装及使用流程。
调用示例
import os
from qianfan import resources
# 使用安全认证AK/SK鉴权,通过环境变量方式初始化;替换下列示例中参数,安全认证Access Key替换your_iam_ak,Secret Key替换your_iam_sk
os.environ["QIANFAN_ACCESS_KEY"] = "your_iam_ak"
os.environ["QIANFAN_SECRET_KEY"] = "your_iam_sk"
resp = resources.Model.create_evaluation_task(
"test_name_only_rule",
[
{
"modelId": "am-gh0azfeb9adu",
"modelVersionId": "amv-g73j3faikzpz",
},
{
"modelId": "am-gh0axxxb9adu",
"modelVersionId": "amv-g73jxxxikzpz",
},
],
333,
{
"evalMode": "rule",
"scoreModes": [
"similarity",
"accuracy"
]
}
)
print(resp)
package main
import (
"context"
"fmt"
"os"
"github.com/baidubce/bce-qianfan-sdk/go/qianfan"
)
func main() {
// 使用安全认证AK/SK鉴权,通过环境变量初始化;替换下列示例中参数,安全认证Access Key替换your_iam_ak,Secret Key替换your_iam_sk
os.Setenv("QIANFAN_ACCESS_KEY", "your_iam_ak")
os.Setenv("QIANFAN_SECRET_KEY", "your_iam_sk")
ca := qianfan.NewConsoleAction()
res, err := ca.Call(context.TODO(),
// 调用本文API,该参数值为固定值,无需修改;对应本文HTTP调用-请求说明-请求地址的后缀
"/wenxinworkshop/modelrepo/eval/create", "",
// 对应本文HTTP调用-请求说明-请求参数-Body参数,具体使用请查看Body参数说明,根据实际使用选择参数
map[string]interface{}{
"name": "test_save1",
"datasetId": 259,
"versionEvalInfo": []map[string]any{
{
"modelVersionId": 857,
"params": map[string]any{
"temperature": 0.95,
"top_p": 0.7,
"penalty_score": 1,
},
"prompt": map[string]any{
"enable": true,
"content": "请回答以下问题:{input}",
},
"inferDatasetStorageType": "usrBos",
"inferDatasetStorageId": "testmc",
"inferDatasetRawPath": "data/",
}
},
"evalStandardConf": map[string]any{
"evalMode": "manual",
"evaluationDimension": []map[string]any{
{
"dimension": "满意度",
"key": 0,
"formChecked": "22",
}
}
},
})
if err != nil {
panic(err)
}
fmt.Println(string(res.Body))
}
import com.baidubce.qianfan.Qianfan;
import com.baidubce.qianfan.model.console.ConsoleResponse;
import com.baidubce.qianfan.util.CollUtils;
import com.baidubce.qianfan.util.Json;
import java.util.Map;
public class Dome {
public static void main(String args[]){
// 使用安全认证AK/SK鉴权,替换下列示例中参数,安全认证Access Key替换your_iam_ak,Secret Key替换your_iam_sk
Qianfan qianfan = new Qianfan("your_iam_ak", "your_iam_sk");
ConsoleResponse<Map<String, Object>> response = qianfan.console()
// 调用本文API,该参数值为固定值,无需修改;对应本文HTTP调用-请求说明-请求地址的后缀
.route("/wenxinworkshop/modelrepo/eval/create")
// 需要传入参数的场景,可以自行封装请求类,或者使用Map.of()来构建请求Body
// Java 8可以使用SDK提供的CollUtils.mapOf()来替代Map.of()
// 对应本文HTTP调用-请求说明-请求参数-Body参数,具体使用请查看Body参数说明,根据实际使用选择参数
.body(CollUtils.mapOf(
"name", "test_save1",
"datasetId", 259,
"versionEvalInfo", new Map[]{
CollUtils.mapOf(
"modelVersionId", 857,
"params", CollUtils.mapOf(
"temperature", 0.95,
"top_p", 0.7,
"penalty_score",1
),
"prompt", CollUtils.mapOf(
"enable", true,
"content", "请回答以下问题:{input}"
),
"inferDatasetStorageType", "usrBos",
"inferDatasetStorageId", "testmc",
"inferDatasetRawPath", "data/"
)
},
"evalStandardConf", CollUtils.mapOf(
"evalMode", "manual",
"evaluationDimension", new Map[]{
CollUtils.mapOf(
"dimension", "满意度",
"key", 0,
"formChecked", "22"
)
}
)
))
.execute();
System.out.println(Json.serialize(response));
}
}
import {consoleAction, setEnvVariable} from "@baiducloud/qianfan";
// 使用安全认证AK/SK鉴权,通过环境变量初始化;替换下列示例中参数,安全认证Access Key替换your_iam_ak,Secret Key替换your_iam_sk
setEnvVariable('QIANFAN_ACCESS_KEY','your_iam_ak');
setEnvVariable('QIANFAN_SECRET_KEY','your_iam_sk');
async function main() {
//base_api_route:调用本文API,该参数值为固定值,无需修改;对应本文HTTP调用-请求说明-请求地址的后缀
//data:对应本文HTTP调用-请求说明-请求参数-Body参数,具体使用请查看Body参数说明,根据实际使用选择参数
const res = await consoleAction({base_api_route: '/wenxinworkshop/modelrepo/eval/create', data: {
"name": "test_save1",
"datasetId": 259,
"versionEvalInfo": [
{
"modelVersionId": 857,
"params": {
"temperature": 0.95,
"top_p": 0.7,
"penalty_score": 1
},
"prompt": {
"enable": true,
"content": "请回答以下问题:{input}"
},
"inferDatasetStorageType": "usrBos",
"inferDatasetStorageId": "testmc",
"inferDatasetRawPath": "data/"
}
],
"evalStandardConf": {
"evalMode": "manual",
"evaluationDimension": [
{
"dimension": "满意度",
"key": 0,
"formChecked": "22"
}
]
}
}
});
console.log(res);
}
main();
返回示例
QfResponse(code=200,
headers={...},
body={
'log_id': '1111',
'result': {
'evalId': 100,
'evalIdStr': 'ame-wjmxxxt71gfg'
}
})
{
"log_id": "3789040540",
"result": {
"evalId": 330,
"evalIdStr": "ame-wjmszjt71gfg"
}
}
{
"log_id": "3789040540",
"result": {
"evalId": 330,
"evalIdStr": "ame-wjmszjt71gfg"
}
}
{
log_id: '3789040540',
result: {
evalId: 330,
evalIdStr: 'ame-wjmszjt71gfg'
}
}
请求参数
注意:以下为Python SDK参数说明,Go SDK、Java SDK、Node.js SDK参数说明请参考本文HTTP调用-请求说明。
名称 | 类型 | 必填 | 描述 |
---|---|---|---|
pending_eval_id | string | 否 | 评估任务id,示例:ame-vwgs2ybhyhfv,说明: (1)此参数仅支持已存在的编辑中的评估任务id;如果是直接新建任务,不需要填写此参数 (2)在控制台-模型评估页面,点击某评估任务名称打开详情页,在任务详情的基本信息中查看,如下图所示 (3) 该字段新增支持string类型,如果之前使用的是int类型,建议变更为string类型,后续可能将逐步废弃int类型 |
name | string | 是 | 任务名称 |
description | string | 否 | 任务描述 |
version_info | List[Dict[str, Any]] | 是 | 待评估模型版本信息列表 |
dataset_id | string | 是 | 评估数据集版本的ID,示例:17786,说明: (1)可以通过以下任一方式获取该字段值: · 方式一,通过调用创建数据集接口,返回的datasetId字段获取 · 方式二,在控制台-数据集管理列表页面查看,如下图所示: (2)推理结果集评估场景可不填 |
eval_config | Dict[str, Any] | 是 | 评估模式配置 |
version_info说明
名称 | 类型 | 必填 | 描述 |
---|---|---|---|
modelVersionId | string | 是 | 模型版本ID,示例值:amv-g73j3faikzpz,说明: (1)如果是发起模型的评估任务,该字段必填 (2)在控制台-我的模型,点击某模型详情,在版本列表中查看,如下图所示 (3)该字段新增支持string类型,如果之前使用的是integer类型,建议变更为string类型,后续可能将逐步废弃integer类型 |
inferDatasetId | string | 否 | 推理结果集id,说明: (1)发起推理结果集的评估任务,该字段必填 (2)通过以下方法获取该字段值,在控制台-数据管理-数据集-推理结果集页面,点击某个推理结果集详情,点击推理结果集信息页面查看,如下图所示: |
inferDatasetStorageType | string | 否 | 推理结果集存储类型,说明: (1)选择模型评估时,才需要填该字段,用于存储评估过程中产生的推理结果集 (2)可选值如下: · usrBos:用户存储 · sysBos:系统存储 |
inferDatasetStorageId | string | 否 | bucket,说明:当inferDatasetStorageType值为usrBos,该字段值必填 |
inferDatasetRawPath | string | 否 | 存储路径,说明:当inferDatasetStorageType值为usrBos,该字段值必填,不包含bucket的子路径 |
prompt | Prompt | 否 | prompt模板信息 |
params | Params | 否 | 模型推理超参 |
prompt说明
名称 | 类型 | 必填 | 描述 |
---|---|---|---|
enable | bool | 否 | 是否启用Prompt模板 |
content | string | 否 | Prompt模板内容,说明: (1)需要包含{input}标签,作为输入数据集中prompt的占位符 (2)示例,例如此字段为:"请你回答以下问题:{input}"在实际推理时,假设输入数据集中一条数据prompt为:"请给出一个人工智能的标题"最终模型推理时,会传入以下prompt:"请你回答以下问题:请给出一个人工智能的标题" |
params说明
名称 | 类型 | 必填 | 描述 |
---|---|---|---|
temperature | float | 否 | 温度,说明: (1)较高的数值会使输出更加随机,而较低的数值会使其更加集中和确定 (2)两位小数,范围 (0, 1.0],不能为0 |
top_p | float | 否 | 多样性,说明: (1)影响输出文本的多样性,取值越大,生成文本的多样性越强 (2)取值范围 [0, 1.0] |
penalty_score | float | 否 | 通过对已生成的token增加惩罚,减少重复生成的现象。说明: (1)值越大表示惩罚越大 (2)取值范围:[1.0, 2.0] |
disable_search | bool | 否 | 是否强制关闭实时搜索功能,默认false,表示不关闭 |
enable_citation | bool | 否 | 搜索溯源,开启后有概率触发搜索溯源信息 |
top_k | int | 否 | Top-K 采样参数,在每轮token生成时,保留k个概率最高的token作为候选。说明: (1)影响输出文本的多样性,取值越大,生成文本的多样性越强 (2)取值范围:正整数 |
eval_config说明
名称 | 类型 | 必填 | 描述 |
---|---|---|---|
evalMode | string | 是 | 评估模式,说明: (1)可选值如下 : · rule:基于规则 · model:裁判员模型 · manual:人工评估 (2)多个模式使用,拼接,示例“model,manual,rule” |
stopWordsPath | string | 否 | 基于规则的停用词表路径,说明:当evalMode参数中包含rule,即存在规则评估模式时,此字段有效,非必填 |
scoreModes | string[] | 是 | 基于规则下的评分规则选择列表。说明: (1)可选值如下: · similarity :表示相似度打分 · accuracy:表述准确率打分 (2)当evalMode参数中包含rule,即存在规则评估模式时,此字段必填 |
appId | number | 是 | 裁判员模型的应用APPID,说明: · 当evalMode参数中包含model,即存在裁判员评估模式时,此字段必填 · 在控制台-应用接入列表查看该字段值,如下图所示: |
prompt | dict | 是 | 裁判员评估打分模板配置,说明: · 当evalMode参数中包含model,即存在裁判员评估模式时,此字段必填 |
evaluationDimension | dict[] | 是 | 人工评估评价维度,说明: · 默认维度为满意度,不可删除 · 用户可自行添加其他维度,最多添加4个维度 · 当evalMode参数中包含manual,即存在人工评估模式时,此字段必填 |
resultDatasetStorageType | string | 否 | bos类型,说明: (1)可选值如下: · sysBos:系统bos · usrBos:用户bos (2)不填默认是系统bos |
resultDatasetStorageId | string | 否 | 用户bos的bucket |
resultDatasetRawPath | string | 否 | 用户bos用于存放数据集的路径,不包含bucket的子路径 |
prompt说明
名称 | 类型 | 必填 | 描述 |
---|---|---|---|
templateContent | string | 是 | 模板内容 |
metric | string | 是 | 指标内容,替换{metric}占位符 |
steps | string | 是 | 评分步骤,用于替换{steps}占位符 |
maxScore | number | 是 | 最高分,用于替换{max_score}占位符 |
evaluationDimension说明
名称 | 类型 | 必填 | 描述 |
---|---|---|---|
dimension | string | 是 | 评价维度 |
description | string | 否 | 维度的描述 |
返回参数
请参考本文HTTP调用-响应说明。
HTTP调用
鉴权说明
调用本文API,使用“基于安全认证AK/SK”进行签名计算鉴权,即使用安全认证中的Access Key ID 和 Secret Access Key进行鉴权,具体鉴权认证机制参考HTTP调用鉴权说明。
请求说明
- 基本信息
请求地址: https://qianfan.baidubce.com/wenxinworkshop/modelrepo/eval/create
请求方式: POST
- Header参数
名称 | 类型 | 必填 | 描述 |
---|---|---|---|
Content-Type | string | 是 | 固定值:application/json |
x-bce-date | string | 否 | 当前时间,遵循ISO8601规范,格式如2016-04-06T08:23:49Z |
Authorization | string | 是 | 用于验证请求合法性的认证信息,更多内容请参考鉴权认证机制,签名工具可参考IAM签名工具 |
- Body参数
名称 | 类型 | 必填 | 描述 |
---|---|---|---|
id | string | 否 | 评估任务id,示例:ame-vwgs2ybhyhfv,说明: (1)此参数仅支持已存在的编辑中的评估任务id;如果是直接新建任务,不需要填写此参数 (2)在控制台-模型评估页面,点击某评估任务名称打开详情页,在任务详情的基本信息中查看,如下图所示 (3) 该字段新增支持string类型,如果之前使用的是int类型,建议变更为string类型,后续可能将逐步废弃int类型 |
name | string | 是 | 任务名称 |
description | string | 否 | 任务描述 |
versionEvalInfo | object [] | 是 | 待评估模型版本信息列表 |
datasetId | string | 是 | 评估数据集版本的ID,示例:17786,说明: (1)可以通过以下任一方式获取该字段值: · 方式一,通过调用创建数据集接口,返回的datasetId字段获取 · 方式二,在控制台-数据集管理列表页面查看,如下图所示: (2)推理结果集评估场景可不填 |
evalStandardConf | object | 是 | 评估模式配置 |
computeResourceConf | object | 是 | 运行环境配置,固定值为{"vmType":1,"vmNumber":8} |
versionEvalInfo说明
名称 | 类型 | 必填 | 描述 |
---|---|---|---|
modelVersionId | string | 否 | 模型版本ID,示例值:amv-g73j3faikzpz,说明: (1)如果是发起模型的评估任务,该字段必填 (2)在控制台-我的模型,点击某模型详情,在版本列表中查看,如下图所示 (3)该字段新增支持string类型,如果之前使用的是integer类型,建议变更为string类型,后续可能将逐步废弃integer类型 |
inferDatasetId | string | 否 | 推理结果集id,说明: (1)发起推理结果集的评估任务,该字段必填 (2)通过以下方法获取该字段值,在控制台-数据管理-数据集-推理结果集页面,点击某个推理结果集详情,点击推理结果集信息页面查看,如下图所示: |
inferDatasetStorageType | string | 否 | 推理结果集存储类型,说明: (1)选择模型评估时,才需要填该字段,用于存储评估过程中产生的推理结果集 (2)可选值如下: · usrBos:用户存储 · sysBos:系统存储 |
inferDatasetStorageId | string | 否 | bucket,说明:当inferDatasetStorageType值为usrBos,该字段值必填 |
inferDatasetRawPath | string | 否 | 存储路径,说明:当inferDatasetStorageType值为usrBos,该字段值必填,不包含bucket的子路径 |
prompt | Prompt | 否 | prompt模板信息 |
params | Params | 否 | 模型推理超参 |
prompt说明
名称 | 类型 | 必填 | 描述 |
---|---|---|---|
enable | bool | 否 | 是否启用Prompt模板 |
content | string | 否 | Prompt模板内容,说明: (1)需要包含{input}标签,作为输入数据集中prompt的占位符 (2)示例,例如此字段为:"请你回答以下问题:{input}"在实际推理时,假设输入数据集中一条数据prompt为:"请给出一个人工智能的标题"最终模型推理时,会传入以下prompt:"请你回答以下问题:请给出一个人工智能的标题" |
params说明
名称 | 类型 | 必填 | 描述 |
---|---|---|---|
temperature | float | 否 | 温度,说明: (1)较高的数值会使输出更加随机,而较低的数值会使其更加集中和确定 (2)两位小数,范围 (0, 1.0],不能为0 |
top_p | float | 否 | 多样性,说明: (1)影响输出文本的多样性,取值越大,生成文本的多样性越强 (2)取值范围 [0, 1.0] |
penalty_score | float | 否 | 通过对已生成的token增加惩罚,减少重复生成的现象。说明: (1)值越大表示惩罚越大 (2)取值范围:[1.0, 2.0] |
disable_search | bool | 否 | 是否强制关闭实时搜索功能,默认false,表示不关闭 |
enable_citation | bool | 否 | 搜索溯源,开启后有概率触发搜索溯源信息 |
top_k | int | 否 | Top-K 采样参数,在每轮token生成时,保留k个概率最高的token作为候选。说明: (1)影响输出文本的多样性,取值越大,生成文本的多样性越强 (2)取值范围:正整数 |
evalStandardConf说明
名称 | 类型 | 必填 | 描述 |
---|---|---|---|
evalMode | string | 是 | 评估模式,说明: (1)可选值如下 : · rule:基于规则 · model:裁判员模型 · manual:人工评估 (2)多个模式使用,拼接,示例“model,manual,rule” |
stopWordsPath | string | 否 | 基于规则的停用词表路径,说明:当evalMode参数中包含rule,即存在规则评估模式时,此字段有效,非必填 |
appId | number | 是 | 裁判员模型的应用APPID,说明: · 当evalMode参数中包含model,即存在裁判员评估模式时,此字段必填 · 在控制台-应用接入列表查看该字段值,如下图所示: |
prompt | object | 是 | 裁判员评估打分模板配置,说明: · 当evalMode参数中包含model,即存在裁判员评估模式时,此字段必填 |
evaluationDimension | object[] | 是 | 人工评估评价维度,说明: · 默认维度为满意度,不可删除 · 用户可自行添加其他维度,最多添加4个维度 · 当evalMode参数中包含manual,即存在人工评估模式时,此字段必填 |
resultDatasetStorageType | string | 否 | bos类型,说明: (1)可选值如下: · sysBos:系统bos · usrBos:用户bos (2)不填默认是系统bos |
resultDatasetStorageId | string | 否 | 用户bos的bucket |
resultDatasetRawPath | string | 否 | 用户bos用于存放数据集的路径,不包含bucket的子路径 |
prompt说明
名称 | 类型 | 必填 | 描述 |
---|---|---|---|
templateContent | string | 是 | 模板内容 |
metric | string | 是 | 指标内容,替换{metric}占位符 |
steps | string | 是 | 评分步骤,用于替换{steps}占位符 |
maxScore | number | 是 | 最高分,用于替换{max_score}占位符 |
evaluationDimension说明
名称 | 类型 | 必填 | 描述 |
---|---|---|---|
dimension | string | 是 | 评价维度 |
description | string | 否 | 维度的描述 |
computeResourceConf说明
名称 | 类型 | 必填 | 描述 |
---|---|---|---|
vmType | integer | 是 | 计算资源规格ID,固定值为1 |
vmNumber | number | 是 | 计算资源数量,固定值为8 |
响应说明
名称 | 类型 | 描述 |
---|---|---|
log_id | string | 请求ID |
result | object | 请求结果 |
result说明
名称 | 类型 | 描述 |
---|---|---|
evalId | int | 评估任务id,注意:该字段后续将废弃,如需使用评估任务id,请使用evalIdStr |
evalIdStr | string | 评估任务id |
请求示例
# 替换下列示例中的Authorization值、x-bce-date值
curl 'https://qianfan.baidubce.com/wenxinworkshop/modelrepo/eval/create' \
--header 'Authorization: bce-auth-v1/f0ee7axxxx/2023-12-06T04:43:07Z/1800/host;x-bce-date/73edaa7e032dxxxxx428337d' \
--header 'x-bce-date: 2023-12-06T04:42:38Z' \
--header 'Content-Type: application/json' \
--data '{
"name": "test_save1",
"datasetId": 259,
"versionEvalInfo": [
{
"modelVersionId": 857,
"params": {
"temperature": 0.95,
"top_p": 0.7,
"penalty_score": 1
},
"prompt": {
"enable": true,
"content": "请回答以下问题:{input}"
},
"inferDatasetStorageType": "usrBos",
"inferDatasetStorageId": "testmc",
"inferDatasetRawPath": "data/"
}
],
"evalStandardConf": {
"evalMode": "manual",
"evaluationDimension": [
{
"dimension": "满意度",
"key": 0,
"formChecked": "22"
}
]
}
}'
响应示例
{
"log_id": "3789040540",
"result": {
"evalId": 330,
"evalIdStr": "ame-wjmszjt71gfg"
}
}
错误码
若请求错误,服务器将返回的JSON文本包含以下参数:
名称 | 描述 |
---|---|
error_code | 错误码 |
error_msg | 错误描述信息,帮助理解和解决发生的错误 |
例如参数错误返回:
{
"error_code": 500001,
"error_msg": "param invalid"
}
更多其他错误码,也可以查看错误码说明。
错误码 | 错误信息 | 描述 |
---|---|---|
11003 | 参数错误[存在裁判员评估模式,但对应配置为空] | 选了裁判员评估模式,但对应配置为空 |
11003 | 参数错误[存在规则评估模式,但对应配置为空] | 选了规则评估模式,但对应配置为空 |
11003 | 参数错误[存在人工评估模式,但对应配置为空] | 选了人工评估模式,但对应配置为空 |
11003 | 参数错误[模型非法:模型版本(101)不存在,模型版本(lama2>V1)不支持评估] | 模型版本不存在或者不支持评估 |
11003 | 参数错误[获取评估数据集信息失败] | 查询数据集失败 |
11003 | 参数错误[query问题集仅供人工评估使用] | query问题集仅供人工评估使用 |
11003 | 参数错误[数据集标注样本数不能小于1] | 数据集标注样本数不能小于1 |
11003 | 参数错误[模型评估仅支持[文本对话,query问题集]类型数据集] | 模型评估仅支持[文本对话,query问题集]类型数据集 |
11003 | 参数错误[获取裁判员模型应用信息失败] | 获取裁判员模型应用信息失败 |
11003 | 参数错误[人工评估维度不能为空] | 人工评估维度不能为空 |
11003 | 参数错误[人工评估满意度打分必选] | 人工评估必选满意度打分维度 |
11003 | 参数错误[评估维度仅支持中英文下划线,长度[1,10]] | 评估维度仅支持中英文下划线,长度[1,10] |
70002 | 查询错误[获取评估列表失败] | 获取评估列表失败 |
70002 | 查询错误[获取评估信息失败] | 获取评估信息失败 |
70002 | 查询错误[获取评估模型列表失败] | 查询模型列表报错 |
70002 | 查询错误[获取评估子任务列表失败] | 获取评估子任务列表失败 |
70003 | 创建人工评估结果集失败 | 创建人工评估结果集失败 |
70116 | 模型评估任务名称已存在 | 同个用户的模型评估任务名称不可重名 |
71008 | 停用词表文件不存在 | 停用词表文件不存在 |
71009 | 模型评估任务不是可编辑状态 | 只有编辑状态的模型才可以编辑,如果请求中包含id字段,且id对应的评估任务不是编辑状态,会返回此错误 |
71013 | 所选评估数据集未发布 | 评估数据集必须是已经发布的数据集 |
70119 | 存储操作异常 | 检查停用词文件失败 |
500000 | internal server error | 服务器内部错误 |
500001 | param invalid | 参数错误 |
500001 | param[%s] invalid | 参数错误 |
500002 | auth failed, no access | 无权访问 |