
# 更新模型信息 - UpdateModelDefinition
#### 功能介绍
更新模型，会生成新版本。通过该接口可以更新模型信息，包括名称、描述、当前版本ID。支持新增版本，支持传入版本名称、描述、基模型类型和模型地址。此接口为异步接口，配套使用接口ListModelVersions查看模型版本信息。如果版本是失败的，则不允许更新为当前版本。新增模型时模型路径需要存在，否则会报错。
#### 调试
您可以在[API Explorer](https://console.huaweicloud.com/apiexplorer/#/openapi/DataArtsFabric/doc?api=UpdateModelDefinition)中调试该接口，支持自动认证鉴权。API Explorer可以自动生成SDK代码示例，并提供SDK代码示例调试功能。
#### 授权信息
账号具备所有API的调用权限，如果使用账号下的IAM用户调用当前API，该IAM用户需具备调用API所需的权限。
- 如果使用角色与策略授权，具体权限要求请参见[权限和授权项](https://support.huaweicloud.com/api-fabric/dataartsfabric_03_0014.html)。
- 如果使用身份策略授权，需具备如下身份策略权限。
  
  | 授权项                        | 访问级别  | 资源类型（\*为必须）  | 条件键                                                                                                                                                 | 别名 | 依赖的授权项                                                                                                                               |
  |:---|:---|:---|:---|:---|:---|
  | DataArtsFabric:model:alter | Write | workspace \* | - g:ResourceTag/\<tag-key\>  - g:EnterpriseProjectId  | -  | - obs:object:GetObject - obs:bucket:HeadBucket - obs:bucket:ListBucketVersions - obs:bucket:ListAllMyBuckets - obs:bucket:ListBucket |
  | DataArtsFabric:model:alter | Write | model \*     | -                                                                                                                                                   | -  | - obs:object:GetObject - obs:bucket:HeadBucket - obs:bucket:ListBucketVersions - obs:bucket:ListAllMyBuckets - obs:bucket:ListBucket |
     
#### URI
PUT /v1/workspaces/{workspace_id}/models/{model_id}
表1路径参数 
| 参数           | 是否必选 | 参数类型   | 描述                                                                                                                                                                               |
|:---|:---|:---|:---|
| workspace_id | 是    | String | **参数解释** ：工作空间ID。获取方法，请参见[获取工作空间ID](https://support.huaweicloud.com/api-fabric/dataartsfabric_03_0022.html)。 **约束限制**：不涉及。 **取值范围**：长度为\[1,36\]的英文字符、数字和中划线(-)的组合。 **默认取值**：不涉及。 |
| model_id     | 是    | String | **参数解释** ：模型ID。获取方法，请参见[获取模型ID](https://support.huaweicloud.com/api-fabric/dataartsfabric_03_0024.html)。 **约束限制**：不涉及。 **取值范围**：长度为\[1,36\]的英文字符、数字和中划线(-)的组合。 **默认取值**：不涉及。     |
#### 请求参数
表2请求Header参数 
| 参数           | 是否必选 | 参数类型   | 描述                                                                                                                                                                      |
|:---|:---|:---|:---|
| X-Auth-Token | 否    | String | **参数解释** ：租户Token。用于调用接口的认证。获取方法，请参见[认证鉴权](https://support.huaweicloud.com/api-fabric/dataartsfabric_03_0005.html)。 **约束限制**：不涉及。 **取值范围**：长度不超过65534个字符。 **默认取值**：不涉及。 |
   
表3请求Body参数 
| 参数                 | 是否必选 | 参数类型                                                                                 | 描述                                                                                                          |
|:---|:---|:---|:---|
| name               | 否    | String                                                                               | **参数解释**：一个Model的名称。 **约束限制**：不涉及。 **取值范围**：长度为\[1,64\]的中文、字母、数字、下划线(_)、中划线(-)、半角句号（.）、空格的组合。 **默认取值**：不涉及。 |
| description        | 否    | String                                                                               | **参数解释**：描述信息。 **约束限制**：不涉及。 **取值范围**：\[0,1024\]。 **默认取值**：不涉及。                                             |
| current_version_id | 否    | String                                                                               | **参数解释**：模型版本ID。 **约束限制**：系统自动生成无法修改，输入不生效。 **取值范围**：长度为\[32,36\]的英文字符、数字和中划线(-)的组合。 **默认取值**：不涉及。          |
| version            | 否    | [ModelVersionInput] object | **参数解释**：模型每个版本的详细信息。 **约束限制**：不涉及。                                                                         |
   
 表4ModelVersionInput 
| 参数          | 是否必选 | 参数类型                                                                     | 描述                                                                                                      |
|:---|:---|:---|:---|
| name        | 是    | String                                                                   | **参数解释**：模型版本名称。 **约束限制**：不涉及。 **取值范围**：长度为\[1,64\]的中文、字母、数字、下划线(_)、中划线(-)、半角句号（.）、空格的组合。 **默认取值**：不涉及。 |
| description | 否    | String                                                                   | **参数解释**：描述信息。 **约束限制**：不涉及。 **取值范围**：不涉及。 **默认取值**：不涉及。                                                |
| config      | 否    | [ModelConfig] object | **参数解释**：模型配置。 **约束限制**：不涉及。 **取值范围**：不涉及。 **默认取值**：不涉及。                                                |
   
 表5ModelConfig 
| 参数               | 是否必选 | 参数类型                                                                           | 描述                              |
|:---|:---|:---|:---|
| llm_model_config | 否    | [LlmModelConfig] object | **参数解释**：Llm模型配置。 **约束限制**：不涉及。 |
   
 表6LlmModelConfig 
| 参数               | 是否必选 | 参数类型   | 描述                                                                                                                                      |
|:---|:---|:---|:---|
| base_model_type  | 是    | String | **参数解释**：基模型类型。 **约束限制**：不涉及。 **取值范围** ：请从[列举基模型](https://support.huaweicloud.com/api-fabric/ListBaseModels.html)接口响应中获取。 **默认取值**：不涉及。 |
| model_path       | 否    | String | **参数解释**：模型文件路径。 **约束限制**：合法OBS路径。 **取值范围**：不涉及。 **默认取值**：不涉及。                                                                          |
| local_model_path | 否    | String | **参数解释**：本地模型文件路径。 **约束限制**：本地模型文件路径。 **取值范围**：不涉及。 **默认取值**：不涉及。                                                                       |
   
#### 响应参数
**状态码：200**
OK。
**状态码：400**
表7响应Body参数 
| 参数           | 参数类型   | 描述                                                                      |
|:---|:---|:---|
| error_code   | String | **参数解释**：错误码。 **约束限制**：不涉及。 **取值范围**：长度为\[8,36\]个字符。 **默认取值**：不涉及。      |
| error_msg    | String | **参数解释**：错误描述。 **约束限制**：不涉及。 **取值范围**：长度为\[2,512\]个字符。 **默认取值**：不涉及。    |
| solution_msg | String | **参数解释**：解决方案描述。 **约束限制**：不涉及。 **取值范围**：长度为\[0,4096\]个字符。 **默认取值**：不涉及。 |
   
**状态码：401**
表8响应Body参数 
| 参数           | 参数类型   | 描述                                                                      |
|:---|:---|:---|
| error_code   | String | **参数解释**：错误码。 **约束限制**：不涉及。 **取值范围**：长度为\[8,36\]个字符。 **默认取值**：不涉及。      |
| error_msg    | String | **参数解释**：错误描述。 **约束限制**：不涉及。 **取值范围**：长度为\[2,512\]个字符。 **默认取值**：不涉及。    |
| solution_msg | String | **参数解释**：解决方案描述。 **约束限制**：不涉及。 **取值范围**：长度为\[0,4096\]个字符。 **默认取值**：不涉及。 |
   
**状态码：404**
表9响应Body参数 
| 参数           | 参数类型   | 描述                                                                      |
|:---|:---|:---|
| error_code   | String | **参数解释**：错误码。 **约束限制**：不涉及。 **取值范围**：长度为\[8,36\]个字符。 **默认取值**：不涉及。      |
| error_msg    | String | **参数解释**：错误描述。 **约束限制**：不涉及。 **取值范围**：长度为\[2,512\]个字符。 **默认取值**：不涉及。    |
| solution_msg | String | **参数解释**：解决方案描述。 **约束限制**：不涉及。 **取值范围**：长度为\[0,4096\]个字符。 **默认取值**：不涉及。 |
   
**状态码：408**
表10响应Body参数 
| 参数           | 参数类型   | 描述                                                                      |
|:---|:---|:---|
| error_code   | String | **参数解释**：错误码。 **约束限制**：不涉及。 **取值范围**：长度为\[8,36\]个字符。 **默认取值**：不涉及。      |
| error_msg    | String | **参数解释**：错误描述。 **约束限制**：不涉及。 **取值范围**：长度为\[2,512\]个字符。 **默认取值**：不涉及。    |
| solution_msg | String | **参数解释**：解决方案描述。 **约束限制**：不涉及。 **取值范围**：长度为\[0,4096\]个字符。 **默认取值**：不涉及。 |
   
**状态码：500**
表11响应Body参数 
| 参数           | 参数类型   | 描述                                                                      |
|:---|:---|:---|
| error_code   | String | **参数解释**：错误码。 **约束限制**：不涉及。 **取值范围**：长度为\[8,36\]个字符。 **默认取值**：不涉及。      |
| error_msg    | String | **参数解释**：错误描述。 **约束限制**：不涉及。 **取值范围**：长度为\[2,512\]个字符。 **默认取值**：不涉及。    |
| solution_msg | String | **参数解释**：解决方案描述。 **约束限制**：不涉及。 **取值范围**：长度为\[0,4096\]个字符。 **默认取值**：不涉及。 |
   
#### 请求示例
更新模型。名称为LLama3-8b，描述为description，当前版本ID为0b5633ba2b904511ad514346f4d23d4b，生成新版本配置如下样例所示。
```
PUT https://{endpoint}/v1/workspaces/{workspace_id}/models/{model_id}
{
  "name" : "LLama3-8b",
  "description" : "description",
  "current_version_id" : "0b5633ba2b904511ad514346f4d23d4b",
  "version" : {
    "name" : "name",
    "description" : "description",
    "config" : {
      "llm_model_config" : {
        "base_model_type" : "string",
        "model_path" : "obs://bucketname/objectdir/modelpath/"
      }
    }
  }
}
```
#### 响应示例
**状态码：200**
OK。
```
{
  "visibility" : "PRIVATE",
  "id" : "0b5633ba2b904511ad514346f4d23d4b",
  "name" : "LLama3-8b",
  "description" : "description",
  "type" : "LLM_MODEL",
  "create_time" : "2023-05-30T12:24:30.401Z",
  "update_time" : "2023-05-30T12:24:30.401Z",
  "current_version" : {
    "id" : "0b5633ba2b904511ad514346f4d23d4b",
    "name" : "name",
    "cap_white_list" : [ "cap1 cap2 ca* cap*" ],
    "description" : "description",
    "config" : {
      "llm_model_config" : {
        "base_model_type" : "string",
        "model_path" : "obs://bucketname/objectdir/modelpath/"
      }
    },
    "create_time" : "2023-05-30T12:24:30.401Z",
    "create_user" : {
      "domain_name" : "string",
      "domain_id" : "0b5633ba2b904511ad514346f4d23d4b",
      "user_name" : "string",
      "user_id" : "0b5633ba2b904511ad514346f4d23d4b"
    }
  },
  "create_user" : {
    "domain_name" : "string",
    "domain_id" : "0b5633ba2b904511ad514346f4d23d4b",
    "user_name" : "string",
    "user_id" : "0b5633ba2b904511ad514346f4d23d4b"
  },
  "update_user" : {
    "domain_name" : "string",
    "domain_id" : "0b5633ba2b904511ad514346f4d23d4b",
    "user_name" : "string",
    "user_id" : "0b5633ba2b904511ad514346f4d23d4b"
  },
  "new_version" : {
    "id" : "0b5633ba2b904511ad514346f4d23d4b",
    "name" : "name",
    "cap_white_list" : [ "cap1 cap2 ca* cap*" ],
    "description" : "description",
    "config" : {
      "llm_model_config" : {
        "base_model_type" : "string",
        "model_path" : "obs://bucketname/objectdir/modelpath/"
      }
    },
    "create_time" : "2023-05-30T12:24:30.401Z",
    "create_user" : {
      "domain_name" : "string",
      "domain_id" : "0b5633ba2b904511ad514346f4d23d4b",
      "user_name" : "string",
      "user_id" : "0b5633ba2b904511ad514346f4d23d4b"
    }
  }
}
```
**状态码：400**
BadRequest
```
{
  "error_code" : "common.01000001",
  "error_msg" : "failed to read http request, please check your input, code: 400, reason: Type mismatch., cause: TypeMismatchException"
}
```
**状态码：401**
Unauthorized
```
{
  "error_code" : "APIG.1002",
  "error_msg" : "Incorrect token or token resolution failed"
}
```
**状态码：403**
Forbidden
```
{
  "error" : {
    "code" : "403",
    "message" : "X-Auth-Token is invalid in the request",
    "title" : "Forbidden"
  },
  "error_code" : 403,
  "error_msg" : "X-Auth-Token is invalid in the request",
  "title" : "Forbidden"
}
```
**状态码：404**
NotFound
```
{
  "error_code" : "common.01000001",
  "error_msg" : "response status exception, code: 404"
}
```
**状态码：408**
Request Time-out
```
{
  "error_code" : "common.00000408",
  "error_msg" : "timeout exception occurred"
}
```
**状态码：500**
InternalServerError
```
{
  "error_code" : "common.00000500",
  "error_msg" : "internal error"
}
```
#### 状态码
| 状态码 | 描述                  |
|:---|:---|
| 200 | OK。                 |
| 400 | BadRequest          |
| 401 | Unauthorized        |
| 403 | Forbidden           |
| 404 | NotFound            |
| 408 | Request Time-out    |
| 500 | InternalServerError |
   
#### 错误码
请参见[错误码](https://support.huaweicloud.com/api-fabric/dataartsfabric_03_0028.html)。
