创建模型评估任务
更新时间:2024-09-30
功能介绍
本接口用于创建模型评估任务。
SDK调用
使用说明
本文API支持通过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,如何获取请查看https://cloud.baidu.com/doc/Reference/s/9jwvz2egb
os.environ["QIANFAN_ACCESS_KEY"] = "your_access_key"
os.environ["QIANFAN_SECRET_KEY"] = "your_secret_key"
resp = resources.console.utils.call_action(
# 调用本文API,该参数值为固定值,无需修改;对应本文HTTP调用-请求说明-请求地址的后缀
"/v2/eval",
# 调用本文API,该参数值为固定值,无需修改;对应本文HTTP调用-请求说明-请求参数-Query参数的Action
"CreateEvalTask",
# 对应本文HTTP调用-请求说明-请求参数-Body参数,具体使用请查看Body参数说明,根据实际使用选择参数
{
"taskName": "管控API裁判员评估测试",
"description": "管控API测试",
"evalObjectType": "model",
"evalObjectConfig": {
"evalModelConfig": {
"versionId": "ds-mwmk3mwxxxxxfk",
"storageType": "sysStorage",
"evalModelConfigList": [
{
"modelId": "amv-ttsxxxx1hp",
"promptTemplate": "你是一个好助手,请遵照{input}要求,以商务风格做出相应回复,要求语言简练,客观详尽。"
}
]
}
},
"evalConfig": {
"evalMode": "model",
"autoModelEvalConfig": {
"apiName": "ERNIE-xxx"
}
}
}
)
print(resp.body)
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调用-请求说明-请求地址的后缀
"/v2/eval",
// 调用本文API,该参数值为固定值,无需修改;对应本文HTTP调用-请求说明-请求参数-Query参数的Action
"CreateEvalTask",
// 对应本文HTTP调用-请求说明-请求参数-Body参数,具体使用请查看Body参数说明,根据实际使用选择参数
map[string]interface{}{
"taskName": "管控API裁判员评估测试",
"description": "管控API测试",
"evalObjectType": "model",
"evalObjectConfig": map[string]any{
"evalModelConfig": map[string]any{
"versionId": "ds-mwmk3mwxxxxxfk",
"storageType": "sysStorage",
"evalModelConfigList": []map[string]any{
{
"modelId": "amv-ttsxxxx1hp",
"promptTemplate": "你是一个好助手,请遵照{input}要求,以商务风格做出相应回复,要求语言简练,客观详尽。",
},
},
},
},
"evalConfig": map[string]any{
"evalMode": "model",
"autoModelEvalConfig": map[string]any{
"apiName": "ERNIE-xxx",
},
},
})
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("/v2/eval")
// 调用本文API,该参数值为固定值,无需修改;对应本文HTTP调用-请求说明-请求参数-Query参数的Action
.action("CreateEvalTask")
// 需要传入参数的场景,可以自行封装请求类,或者使用Map.of()来构建请求Body
// Java 8可以使用SDK提供的CollUtils.mapOf()来替代Map.of()
// 对应本文HTTP调用-请求说明-请求参数-Body参数,具体使用请查看Body参数说明,根据实际使用选择参数
.body(CollUtils.mapOf(
"taskName", "管控API裁判员评估测试",
"description", "管控API测试",
"evalObjectType", "model",
"evalObjectConfig", CollUtils.mapOf(
"evalModelConfig", CollUtils.mapOf(
"versionId", "ds-mwmk3mwxxxxxfk",
"storageType", "sysStorage",
"evalModelConfigList",new Map[] {
CollUtils.mapOf(
"modelId", "amv-ttsxxxx1hp",
"promptTemplate", "你是一个好助手,请遵照{input}要求,以商务风格做出相应回复,要求语言简练,客观详尽。"
)
}
)
),
"evalConfig", CollUtils.mapOf(
"evalMode", "model",
"autoModelEvalConfig", CollUtils.mapOf(
"apiName", "ERNIE-xxx"
)
)
))
.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调用-请求说明-请求地址的后缀
//action:调用本文API,该参数值为固定值,无需修改;对应本文HTTP调用-请求说明-请求参数-Query参数的Action
//data:对应本文HTTP调用-请求说明-请求参数-Body参数,具体使用请查看Body参数说明,根据实际使用选择参数
const res = await consoleAction({base_api_route: '/v2/eval', action: 'CreateEvalTask', data: {
"taskName": "管控API裁判员评估测试",
"description": "管控API测试",
"evalObjectType": "model",
"evalObjectConfig": {
"evalModelConfig": {
"versionId": "ds-mwmk3mwxxxxxfk",
"storageType": "sysStorage",
"evalModelConfigList": [
{
"modelId": "amv-ttsxxxx1hp",
"promptTemplate": "你是一个好助手,请遵照{input}要求,以商务风格做出相应回复,要求语言简练,客观详尽。"
}
]
}
},
"evalConfig": {
"evalMode": "model",
"autoModelEvalConfig": {
"apiName": "ERNIE-xxx"
}
}
}
});
console.log(res);
}
main();
返回示例
{
'requestId ': 'df3986c5-70bd-40d9-bedf-6db65ef137d8 ',
'result ': 'ame-au4xxxxxv5 '
}
{
"requestId": "df3986c5-70bd-40d9-bedf-6db65ef137d8",
"result": "ame-au4xxxxxv5"
}
{
"requestId": "df3986c5-70bd-40d9-bedf-6db65ef137d8",
"result": "ame-au4xxxxxv5"
}
{
requestId: 'df3986c5-70bd-40d9-bedf-6db65ef137d8',
result: 'ame-au4xxxxxv5'
}
请求参数
请参考本文HTTP调用-请求说明。
返回参数
请参考本文HTTP调用-响应说明。
HTTP调用
鉴权说明
调用本文API,使用“基于安全认证AK/SK”进行签名计算鉴权,即使用安全认证中的Access Key ID 和 Secret Access Key进行鉴权,具体鉴权认证机制参考HTTP调用鉴权说明。
请求说明
- 基本信息
请求地址: https://qianfan.baidubce.com/v2/eval
请求方式: POST
- Header参数
名称 | 类型 | 必填 | 描述 |
---|---|---|---|
Content-Type | string | 是 | 固定值application/json |
x-bce-date | string | 是 | 当前时间,遵循ISO8601规范,格式如2016-04-06T08:23:49Z |
Authorization | string | 是 | 用于验证请求合法性的认证信息。更多参见鉴权认证,签名工具可参考IAM签名工具 |
- Query参数
名称 | 类型 | 必填 | 描述 |
---|---|---|---|
Action | string | 是 | 方法名称,固定值CreateEvalTask |
- Body参数
名称 | 类型 | 必填 | 描述 |
---|---|---|---|
taskName | string | 是 | 任务名称 |
description | string | 否 | 任务描述 |
evalObjectType | string | 是 | 评估的数据类型,可选值如下: · inferDataset:推理数据集 · model:评估模型 |
evalObjectConfig | object | 是 | 评估对象配置信息 |
evalConfig | object | 是 | 评估参数配置 |
evalObjectConfig说明
- 最多支持五个评估对象,五个对象的类型需要保持一致
名称 | 类型 | 必填 | 描述 |
---|---|---|---|
evalModelConfig | object | 否 | 评估模型配置信息 |
evalInferDatasetConfig | object | 否 | 评估结果集配置信息 |
evalInferDatasetConfig说明
- 评估结果集对象的配置信息
名称 | 类型 | 必填 | 描述 |
---|---|---|---|
evalInferDatasetConfigList | List<object> | 是 | 评估子对象配置列表 |
evalInferDatasetConfigList说明
名称 | 类型 | 必填 | 描述 |
---|---|---|---|
inferDatasetId | string | 是 | 推理结果集ID,通过以下方法获取该字段值,在控制台-数据管理-数据集-推理结果集页面,点击某个推理结果集详情,点击推理结果集信息页面查看,如下图所示: |
isBaseline | bool | 否 | 启用GSB时,表示基准对象;若开启,要求待评估对象的数量为2 |
evalModelConfig说明
- 评估模型对象的配置信息
名称 | 类型 | 必填 | 描述 |
---|---|---|---|
versionId | string | 否 | 评估数据集版本的ID,说明: (1)当评估对象是模型或者服务的时候,即evalObjectType=model,该字段必填 (2)可以通过以下任一方式获取该字段值: · 方式一,通过调用创建数据集接口,返回的versionId字段获取 · 方式二,在控制台-数据管理-数据集-通用数据集查看,如下图所示: |
storageType | string | 否 | 推理结果集存储类型,说明: (1)仅针对模型评估,用于存储评估过程中产生的推理结果集 (2)可选值如下: · BOS:对象存储BOS · sysStorage:平台共享存储,不填默认是sysStorage |
storagePath | string | 否 | 存储路径,说明:当存储类型为对象存储BOS时,即storageType=BOS,该字段必填,需提供完整存储路径 |
evalModelConfigList | List<object> | 是 | 评估子对象配置列表 |
evalModelConfigList说明
名称 | 类型 | 必填 | 描述 |
---|---|---|---|
modelId | string | 是 | 模型版本ID,说明: (1)通过以下方式获取该字段值,在控制台-模型调优-我的模型,点击某模型详情,在版本列表中查看,如下图所示 |
promptTemplate | string | 否 | 推理Prompt,说明: (1)必须包含{input} (2)示例:你是一个好助手,请遵照{input)要求,以商务风格做出相应回复,要求语言简练,客观详尽 |
params | object | 否 | 模型推理超参 |
isBaseline | bool | 否 | 启用GSB的时候,表示基准对象;若开启,要求待评估对象的数量为2 |
params说明
名称 | 类型 | 必填 | 描述 |
---|---|---|---|
temperature | float | 否 | 温度,说明: (1)较高的数值会使输出更加随机,而较低的数值会使其更加集中和确定 (2)建议该参数和top_p只设置1个 (3)两位小数,范围[0.01, 1.00 ] |
top_p | float | 否 | 多样性,说明: (1)影响输出文本的多样性,取值越大,生成文本的多样性越强 (2)建议该参数和temperature只设置1个 (3)一位小数,取值范围[0.0, 1.0] |
penalty_score | float | 否 | 重复惩罚,用通过对已生成的token增加惩罚,减少重复生成的现象。说明: (1)值越大表示惩罚越大 (2)一位小数,取值范围[1.0, 2.0] |
system | string | 否 | 模型人设字段 |
disable_search | bool | 否 | 是否强制关闭实时搜索功能,默认false,不关闭 |
enable_citation | bool | 否 | 搜索溯源,开启后有概率触发搜索溯源信息 |
top_k | int | 否 | 采样参数,在每轮token生成时,保留k个概率最高的token作为候选。说明: (1)影响输出文本的多样性,取值越大,生成文本的多样性越强 (2)取值范围:正整数 |
stop | string[] | 否 | 推理停用词表 |
evalConfig说明
- 如果evalMode为
"rule,model"
,需要同时提供 autoRuleEvalConfig 和 autoModelEvalConfig 两个配置。
名称 | 类型 | 必填 | 描述 |
---|---|---|---|
evalMode | string | 是 | 评估模式,可选值如下 : · rule:基于规则 · model:裁判员模型 · manual:人工评估 · rule,model:同时支持自动规则和自动裁判员评估 |
manualEvalConfig | object | 否 | 人工评估配置 |
autoRuleEvalConfig | object | 否 | 自动规则评估配置 |
autoModelEvalConfig | object | 否 | 自动裁判员评估配置 |
manualEvalConfig说明
名称 | 类型 | 必填 | 描述 |
---|---|---|---|
evalDimension | object[] | 是 | 人工评估评价维度,说明: (1)默认维度为满意度,不可删除 (2)用户可自行添加其他维度,最多添加4个维度 (3)当evalMode参数中包含manual,即存在人工评估模式时,此字段必填 |
evalDimension说明
名称 | 类型 | 必填 | 描述 |
---|---|---|---|
dimension | string | 是 | 评价维度 |
description | string | 否 | 维度的描述 |
autoRuleEvalConfig说明
名称 | 类型 | 必填 | 描述 |
---|---|---|---|
stopWordList | string[] | 否 | 基于规则的停用词表,说明:当evalMode参数中包含rule,即存在规则评估模式时,此字段有效,非必填 |
autoModelEvalConfig说明
名称 | 类型 | 必填 | 描述 |
---|---|---|---|
promptParam | object | 否 | 裁判员评估打分模板配置,说明: (1)当evalMode参数中包含model,即存在裁判员评估模式时,此字段有效 (2)用户若未指定则采用平台默认配置 |
apiName | string | 是 | 裁判员打分应用名称,裁判员打分应用默认使用EB3.5 和 EB4.0 的主线版本的预置服务进行评估,说明: (1)当前仅开放两类名称供用户选填: · EB3.5:ERNIE-Bot · EB4.0:ERNIE-Bot-4.0 (2)不填默认是EB3.5 |
promptParam说明
- 若用户不指定,则采用平台默认配置
名称 | 类型 | 必填 | 描述 |
---|---|---|---|
metric | string | 否 | 指标内容,替换{metric}占位符 |
steps | string | 否 | 评分步骤,用于替换{steps}占位符 |
maxScore | number | 否 | 最高分,用于替换{max_score}占位符 |
响应说明
名称 | 类型 | 描述 |
---|---|---|
requestId | string | 请求ID |
code | string | 错误码,错误时返回 |
message | string | 错误信息,请求失败时返回 |
result | string | 评估任务id,请求成功时返回 |
请求示例
# 替换下列示例中的Authorization值、x-bce-date值
curl -i --location 'https://qianfan.baidubce.com/v2/eval?Action=CreateEvalTask'\
--header 'Authorization: bce-auth-v1/047ab241xxxxxx8b1ac/2024-09-20T02:31:36Z/1800/host;x-bce-date/badcdfc045033dfxxxxxxxx11cecfbd7d11ef'\
--header 'Content-Type: application/json'\
--data '{
"taskName": "管控API裁判员评估测试",
"description": "管控API测试",
"evalObjectType": "model",
"evalObjectConfig": {
"evalModelConfig": {
"versionId": "ds-mwmk3mwxxxxxfk",
"storageType": "sysStorage",
"evalModelConfigList": [
{
"modelId": "amv-ttsxxxx1hp",
"promptTemplate": "你是一个好助手,请遵照{input}要求,以商务风格做出相应回复,要求语言简练,客观详尽。"
}
]
}
},
"evalConfig": {
"evalMode": "model",
"autoModelEvalConfig": {
"apiName": "ERNIE-xxx"
}
}
}'
响应示例
{
"requestId": "df3986c5-70bd-40d9-bedf-6db65ef137d8",
"result": "ame-au4xxxxxv5"
}
错误码
若请求错误,服务器将返回的JSON文本包含以下参数:
名称 | 描述 |
---|---|
requestId | 请求ID |
code | 错误码 |
message | 错误描述信息,帮助理解和解决发生的错误 |
例如错误返回:
{
"requestId": "b8544096-3cb1-45dc-af36-9154b4cc8971",
"code": "EvalNameExists",
"message": "模型评估任务名称已存在"
}
更多其他错误码,也可以查看错误码说明。