chatglm3-6b-32k
更新时间:2025-09-05
chatglm3-6b-32k智谱AI与清华KEG实验室发布的中英双语对话模型,在ChatGLM3-6B的基础上进一步强化了对于长文本的理解能力,能够更好的处理最多32K长度的上下文。本文介绍了相关API。
接口描述
调用本接口,发起一次对话请求。
在线调试
平台提供了 API在线调试平台-示例代码 ,用于帮助开发者调试接口,平台集成快速检索、查看开发文档、查看在线调用的请求内容和返回结果、复制和下载示例代码等功能,简单易用,更多内容请查看API在线调试介绍。
鉴权说明
本文API,支持2种鉴权方式。不同鉴权方式,调用方式不同,请求头域、请求参数的Query参数不同,详见本文请求说明。开发者可以选择以下任一种方式进行鉴权。
· 访问凭证access_token鉴权
· 基于安全认证AK/SK进行签名计算鉴权
请求结构
以访问凭证access_token鉴权方式为例,说明调用API请求结构,示例如下。
                Bash
                
            
            1POST /rpc/2.0/ai_custom/v1/wenxinworkshop/chat/[创建服务时填写的API名称]?access_token=24.4a3a19b******18992 HTTP/1.1
2Host: aip.baidubce.com
3Content-Type: application/json
4
5{
6   "messages": [
7     {"role":"user","content":"你好"}
8   ]
9}
            API地址说明
创建服务时填写的API地址,相关内容请查看模型服务-在线服务-服务配置。
请求头域
除公共头域外,无其它特殊头域。注意:鉴权方式不同,对应请求头域不同。
请求参数
- Query参数
 
只有访问凭证access_token鉴权方式,需使用Query参数。
访问凭证access_token鉴权
| 名称 | 类型 | 必填 | 描述 | 
|---|---|---|---|
| access_token | string | 是 | 通过应用API Key和应用Secret Key获取的access_token,参考Access Token获取 | 
- Body参数
 
| 名称 | 类型 | 必填 | 描述 | 
|---|---|---|---|
| messages | List(message) | 是 | 聊天上下文信息。说明: (1)messages成员不能为空,1个成员表示单轮对话,多个成员表示多轮对话 (2)最后一个message为当前请求的信息,前面的message为历史对话信息 (3)必须为奇数个成员,成员中message的role必须依次为user、assistant (4)message中的content总长度不能超过4800个字符  | 
| stream | bool | 否 | 是否以流式接口的形式返回数据,默认false | 
| temperature | float | 否 | 说明: (1)较高的数值会使输出更加随机,而较低的数值会使其更加集中和确定 (2)范围 (0, 1.0],不能为0  | 
| top_k | int | 否 | Top-K 采样参数,在每轮token生成时,保留k个概率最高的token作为候选。说明: (1)影响输出文本的多样性,取值越大,生成文本的多样性越强 (2)取值范围:正整数  | 
| top_p | float | 否 | 说明: (1)影响输出文本的多样性,取值越大,生成文本的多样性越强 (2)取值范围 [0, 1.0]  | 
| penalty_score | float | 否 | 通过对已生成的token增加惩罚,减少重复生成的现象。说明: (1)值越大表示惩罚越大 (2)取值范围:[1.0, 2.0]  | 
| stop | List(String) | 否 | 生成停止标识。当模型生成结果以stop中某个元素结尾时,停止文本生成。说明: (1)每个元素长度不超过20字符。 (2)最多4个元素  | 
| user_id | string | 否 | 表示最终用户的唯一标识符 | 
| metadata | map<string,string> | 否 | 说明: (1)元素个数最大支持16个 (2)key和value必须都是string类型  | 
message说明
| 名称 | 类型 | 描述 | 
|---|---|---|
| role | string | 当前支持以下: user: 表示用户 assistant: 表示对话助手  | 
| content | string | 对话内容,不能为空 | 
响应头域
除公共头域外,无其它特殊头域。
响应说明
| 名称 | 类型 | 描述 | 
|---|---|---|
| id | string | 本轮对话的id | 
| object | string | 回包类型。 chat.completion:多轮对话返回  | 
| created | int | 时间戳 | 
| sentence_id | int | 表示当前子句的序号。只有在流式接口模式下会返回该字段 | 
| is_end | bool | 表示当前子句是否是最后一句。只有在流式接口模式下会返回该字段 | 
| is_truncated | bool | 当前生成的结果是否被截断 | 
| result | string | 对话返回结果 | 
| need_clear_history | bool | 表示用户输入是否存在安全,是否关闭当前会话,清理历史会话信息 true:是,表示用户输入存在安全风险,建议关闭当前会话,清理历史会话信息 false:否,表示用户输入无安全风险  | 
| ban_round | int | 当need_clear_history为true时,此字段会告知第几轮对话有敏感信息,如果是当前问题,ban_round=-1 | 
| usage | usage | token统计信息 | 
usage说明
| 名称 | 类型 | 描述 | 
|---|---|---|
| prompt_tokens | int | 问题tokens数 | 
| completion_tokens | int | 回答tokens数 | 
| total_tokens | int | tokens总数 | 
注意 :同步模式和流式模式,响应参数返回不同,详细内容参考示例描述。
- 同步模式下,响应参数为以上字段的完整json包。
 - 流式模式下,各字段的响应参数为 data: {响应参数}。
 
请求示例(单轮)
以访问凭证access_token鉴权方式为例,说明如何调用API,示例如下。
1# 步骤一,获取access_token,替换下列示例中的应用API Key与应用Secret Key
2curl 'https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=[应用API Key]&client_secret=[应用Secret Key]'
3
4# 步骤二,调用本文API,使用步骤一获取的access_token,替换下列示例中的“调用接口获取的access_token”;替换示例中的创建服务时填写的API名称
5
6curl -X POST  'https://aip.baidubce.com/rpc/2.0/ai_custom/v1/wenxinworkshop/chat/[创建服务时填写的API名称]?access_token=[步骤一调用接口获取的access_token]' -d '{
7   "messages": [
8    {"role":"user","content":"你好"}
9   ]
10}' | iconv -f utf-8 -t utf-8
        1import requests
2import json
3
4def get_access_token():
5    """
6    使用应用API Key,应用Secret Key 获取access_token,替换下列示例中的应用API Key、应用Secret Key
7    """
8        
9    url = "https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=[应用API Key]&client_secret=[应用Secret Key]"
10    
11    payload = json.dumps("")
12    headers = {
13        'Content-Type': 'application/json',
14        'Accept': 'application/json'
15    }
16    
17    response = requests.request("POST", url, headers=headers, data=payload)
18    return response.json().get("access_token")
19
20
21def main():
22    """
23    替换下列示例中的创建服务时填写的API名称
24    """
25        
26    url = "https://aip.baidubce.com/rpc/2.0/ai_custom/v1/wenxinworkshop/chat/[创建服务时填写的API名称]?access_token=" + get_access_token()
27    
28    payload = json.dumps({
29         "messages": [
30            {
31                "role": "user",
32                "content": "你好"
33            }
34        ]
35    })
36    headers = {
37        'Content-Type': 'application/json'
38    }
39    
40    response = requests.request("POST", url, headers=headers, data=payload)
41    
42    print(response.text)
43    
44
45if __name__ == '__main__':
46    main()
        响应示例(单轮)
                JSON
                
            
            1HTTP/1.1 200 OK
2Date: Thu, 23 Mar 2023 03:12:03 GMT
3Content-Type: application/json;charset=utf-8
4Statement: AI-generated
5
6{
7  "id": "as-bcmt5ct4iy",
8  "object": "chat.completion",
9  "created": 1680167072,
10  "result": "你好!我是人工智能助手,很高兴见到你,欢迎问我任何问题。",
11  "is_truncated":false,
12  "need_clear_history": false,
13  "usage": {
14    "prompt_tokens": 1,
15    "completion_tokens": 18,
16    "total_tokens": 19
17  }
18}
            请求示例(多轮)
1# 步骤一,获取access_token,替换下列示例中的应用API Key与应用Secret Key
2curl 'https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=[应用API Key]&client_secret=[应用Secret Key]'
3
4# 步骤二,调用本文API,使用步骤一获取的access_token,替换下列示例中的“调用接口获取的access_token”;替换示例中的创建服务时填写的API名称
5curl -X POST 'https://aip.baidubce.com/rpc/2.0/ai_custom/v1/wenxinworkshop/chat/[创建服务时填写的api名称}]?access_token=[步骤一调用接口获取的access_token]' -d '{
6  "messages": [
7    {"role":"user","content":"你好"},
8    {"role":"assistant","content":"你好!我是人工智能助手,很高兴见到你,欢迎问我任何问题。"},
9    {"role":"user","content": "周末上海的天气怎么样?"}
10  ]
11}'  | iconv -f utf-8 -t utf-8
        1import requests
2import json
3
4def get_access_token():
5    """
6    使用应用API Key,应用Secret Key 获取access_token,替换下列示例中的应用API Key、应用Secret Key
7    """
8        
9    url = "https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=[应用API Key]&client_secret=[应用Secret Key]"
10    
11    payload = json.dumps("")
12    headers = {
13        'Content-Type': 'application/json',
14        'Accept': 'application/json'
15    }
16    
17    response = requests.request("POST", url, headers=headers, data=payload)
18    return response.json().get("access_token")
19
20def main():
21    """
22    替换下列示例中的创建服务时填写的API名称
23    """
24        
25    url = "https://aip.baidubce.com/rpc/2.0/ai_custom/v1/wenxinworkshop/chat/[创建服务时填写的API名称]?access_token=" + get_access_token()
26    
27    payload = json.dumps({
28        "messages": [
29            {
30                "role": "user",
31                "content": "你好"
32            },
33            {
34                "role": "assistant",
35                "content": "你好!我是人工智能助手,很高兴见到你,欢迎问我任何问题。"
36            },
37            {
38                "role": "user",
39                "content": "周末上海的天气怎么样?"
40            }
41        ]
42    })
43    headers = {
44        'Content-Type': 'application/json'
45    }
46    
47    response = requests.request("POST", url, headers=headers, data=payload)
48    
49    print(response.text)
50    
51
52if __name__ == '__main__':
53    main()
        响应示例(多轮)
                JSON
                
            
            1HTTP/1.1 200 OK
2Date: Mon, 12 Apr 2021 06:27:55 GMT
3Content-Type: application/json;charset=utf-8
4Statement: AI-generated
5
6{
7  "id": "as-1tbbc0x5af",
8  "object": "chat.completion",
9  "created": 1680166551,
10  "result": "2023年4月2日上海气温13~21℃,多云转阴,东风3-4级,空气质量良,空气质量指数55。\n\n\n\n近7日天气信息:\n\n2023-03-29:阴转小雨,11~17℃,东北风<3级,空气质量良。\n\n2023-03-30:小雨转阴,10~14℃,东风3-4级,空气质量良。\n\n2023-03-31:多云,12~18℃,东风3-4级,空气质量优。\n\n2023-04-01:多云转晴,11~20℃,东南风3-4级,空气质量良。\n\n2023-04-02:多云转阴,13~21℃,东风3-4级,空气质量良。\n\n2023-04-03:阴转中雨,15~18℃,东南风4-5级,空气质量良。\n\n2023-04-04:中雨转小雨,10~17℃,南风5-6级,空气质量优。\n\n2023-04-05:阴,9~14℃,西北风3-4级,空气质量优。",
11  "is_truncated":false,
12  "need_clear_history": false,
13  "usage": {
14    "prompt_tokens": 24,
15    "completion_tokens": 198,
16    "total_tokens": 222
17  }
18}
            请求示例(流式)
1# 步骤一,获取access_token,替换下列示例中的应用API Key与应用Secret Key
2curl 'https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=[应用API Key]&client_secret=[应用Secret Key]'
3
4# 步骤二,调用本文API,使用步骤一获取的access_token,替换下列示例中的“调用接口获取的access_token”;替换示例中的创建服务时填写的API名称
5curl -X POST 'https://aip.baidubce.com/rpc/2.0/ai_custom/v1/wenxinworkshop/chat/[创建服务时填写的API名称]?access_token=[步骤一调用接口获取的access_token]' -d '{
6  "messages": [
7    {"role":"user", "content": "给我推荐一些自驾游路线"}
8  ],
9  "stream": true
10}'
        1import requests
2import json
3
4def get_access_token():
5    """
6    使用应用API Key,应用Secret Key 获取access_token,替换下列示例中的应用API Key、应用Secret Key
7    """
8        
9    url = "https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=[应用API Key]&client_secret=[应用Secret Key]"
10    
11    payload = json.dumps("")
12    headers = {
13        'Content-Type': 'application/json',
14        'Accept': 'application/json'
15    }
16    
17    response = requests.request("POST", url, headers=headers, data=payload)
18    return response.json().get("access_token")
19def main():
20    """
21    替换下列示例中的创建服务时填写的API名称
22    """
23        
24    url = "https://aip.baidubce.com/rpc/2.0/ai_custom/v1/wenxinworkshop/chat/[创建服务时填写的API名称]?access_token=" + get_access_token()
25    
26    payload = json.dumps({
27        "messages": [
28            {
29                "role": "user",
30                "content": "给我推荐一些自驾游路线"
31            }
32        ],
33         "stream": True
34    })
35    headers = {
36        'Content-Type': 'application/json'
37    }
38    
39    response = requests.request("POST", url, headers=headers, data=payload, stream=True)
40    
41    for line in response.iter_lines():
42        print(line.decode("UTF-8"))
43    
44
45if __name__ == '__main__':
46    main()
        响应示例(流式)
                Plain Text
                
            
            1HTTP/1.1 200 OK
2Date: Mon, 12 Apr 2021 06:27:55 GMT
3Content-Type: text/event-stream;charset=utf-8
4Cache-Control: no-cache
5Statement: AI-generated
6
7data: {"id":"as-ywwpgx4dt7","object":"chat.completion","created":1680166793,"sentence_id":0,"is_end":false,"is_truncated":false,"result":"以下是一些适合自驾游的路线推荐:\n\n1.","need_clear_history":false,"usage":{"prompt_tokens":11,"completion_tokens":16,"total_tokens":27}}
8
9data: {"id":"as-ywwpgx4dt7","object":"chat.completion","created":1680166794,"sentence_id":1,"is_end":false,"is_truncated":false,"result":" 中国大陆最美的景观大道:川藏线,从成都出发,沿着川藏公路一路向西,经过稻城亚丁、理塘、巴塘、芒康等美景,最终到达拉萨。","need_clear_history":false,"usage":{"prompt_tokens":11,"completion_tokens":50,"total_tokens":77}}
10
11data: {"id":"as-ywwpgx4dt7","object":"chat.completion","created":1680166795,"sentence_id":2,"is_end":false,"is_truncated":false,"result":"\n2. 丝绸之路:这是一条贯穿中国东西部的公路,从上海出发,经过西安、兰州、乌鲁木齐等城市,最终到达喀什。","need_clear_history":false,"usage":{"prompt_tokens":11,"completion_tokens":43,"total_tokens":120}}
12
13data: {"id":"as-ywwpgx4dt7","object":"chat.completion","created":1680166796,"sentence_id":3,"is_end":false,"is_truncated":false,"result":"沿途可以欣赏到中国北方和南方的不同景色。\n3. 西北大环线:从成都出发,经过都江堰、青城山、丹巴、塔公草原、新都桥等景点,最终到达西宁。","need_clear_history":false,"usage":{"prompt_tokens":11,"completion_tokens":56,"total_tokens":176}}
14
15data: {"id":"as-ywwpgx4dt7","object":"chat.completion","created":1680166799,"sentence_id":4,"is_end":false,"is_truncated":false,"result":"这条路线可以领略到中国西北地区的壮美风光。\n4. 东北环线:从沈阳出发,经过长春、吉林、延吉等城市,最终到达哈尔滨。","need_clear_history":false,"usage":{"prompt_tokens":11,"completion_tokens":48,"total_tokens":224}}
16
17data: {"id":"as-ywwpgx4dt7","object":"chat.completion","created":1680166800,"sentence_id":5,"is_end":false,"is_truncated":false,"result":"沿途可以欣赏到中国东北地区的广阔草原和森林。\n5. 西南环线:从成都出发,经过雅安、康定、理塘、稻城亚丁等景点,最终到达香格里拉。","need_clear_history":false,"usage":{"prompt_tokens":11,"completion_tokens":54,"total_tokens":278}}
18
19data: {"id":"as-ywwpgx4dt7","object":"chat.completion","created":1680166802,"sentence_id":6,"is_end":false,"is_truncated":false,"result":"这条路线可以领略到中国西南地区的高山峡谷和民族文化。\n6. 海南环线:从三亚出发,经过海口、文昌、万宁等城市,最终到达三亚。","need_clear_history":false,"usage":{"prompt_tokens":11,"completion_tokens":52,"total_tokens":330}}
20
21data: {"id":"as-ywwpgx4dt7","object":"chat.completion","created":1680166803,"sentence_id":7,"is_end":false,"is_truncated":false,"result":"这条路线可以欣赏到中国南方的海岸线和热带雨林。\n7. 滇藏线:从昆明出发,经过大理、丽江、香格里拉等景点,最终到达西藏拉萨。","need_clear_history":false,"usage":{"prompt_tokens":11,"completion_tokens":52,"total_tokens":382}}
22
23data: {"id":"as-ywwpgx4dt7","object":"chat.completion","created":1680166804,"sentence_id":8,"is_end":true,"is_truncated":false,"result":"这条路线可以领略到中国西南地区和西藏地区的自然风光和人文景观。","need_clear_history":false,"usage":{"prompt_tokens":11,"completion_tokens":30,"total_tokens":412}}
            错误码
如果请求错误,服务器返回的JSON文本包含以下参数。
| 名称 | 描述 | 
|---|---|
| error_code | 错误码 | 
| error_msg | 错误描述信息,帮助理解和解决发生的错误 | 
例如Access Token失效返回以下内容,需要重新获取新的Access Token再次请求。
                Plain Text
                
            
            1{
2  "error_code": 110,
3  "error_msg": "Access token invalid or no longer valid"
4}
            更多相关错误码,请查看错误码说明。
