ChatGLM2-6B-32K
ChatGLM2-6B-32K是在ChatGLM2-6B的基础上进一步强化了对于长文本的理解能力,能够更好的处理最多32K长度的上下文。本文介绍了相关API。
功能介绍
调用本接口,发起一次对话请求。
在线调试
平台提供了 API在线调试平台-示例代码 ,用于帮助开发者调试接口,平台集成快速检索、查看开发文档、查看在线调用的请求内容和返回结果、复制和下载示例代码等功能,简单易用,更多内容请查看API在线调试介绍。
SDK调用
使用说明
- 本文内容适用Python、Go、Java和Node.js SDK,SDK调用流程请参考SDK安装及使用流程。
-
本文模型支持不同调用方式,请结合具体使用的模型服务,查看参数使用说明进行调用。
- 指定支持预置服务的模型,使用model参数指定支持预置服务的模型,详见请求参数说明。
- 用户快速部署自行发布的模型服务,需使用参数endpoint,详见请求参数说明。
调用示例(单轮)
- 指定支持预置服务的模型
使用model
字段,指定平台支持预置服务的模型,调用示例如下。
import os
import qianfan
#【推荐】使用安全认证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"
chat_comp = qianfan.ChatCompletion()
# 指定特定模型
resp = chat_comp.do(model="ChatGLM2-6B-32K", messages=[{
"role": "user",
"content": "你好"
}])
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")
// 指定特定模型
chat := qianfan.NewChatCompletion(
qianfan.WithModel("ChatGLM2-6B-32K"),
)
resp, _ := chat.Do(
context.TODO(),
&qianfan.ChatCompletionRequest{
Messages: []qianfan.ChatCompletionMessage{
qianfan.ChatCompletionUserMessage("你好"),
},
},
)
fmt.Println(resp.Result)
}
import com.baidubce.qianfan.Qianfan;
import com.baidubce.qianfan.model.chat.ChatResponse;
public class Demo {
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");
// 指定模型
ChatResponse resp = qianfan.chatCompletion()
.model("ChatGLM2-6B-32K")
.addMessage("user", "你好")
.execute();
System.out.println(resp.getResult());
}
}
import {ChatCompletion, 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');
const client = new ChatCompletion();
async function main() {
const resp = await client.chat({
messages: [
{
role: 'user',
content: '你好',
},
],
}, 'ChatGLM2-6B-32K');
console.log(resp);
}
main();
- 用户自行发布的模型服务
对于用户快速部署自行发布的模型服务,通过使用endpoint
字段进行调用,示例如下。
import os
import qianfan
#【推荐】使用安全认证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"
chat_comp = qianfan.ChatCompletion()
# 使用自行发布的模型
resp = chat_comp.do(endpoint="your_custom_endpoint", messages=[{
"role": "user",
"content": "你好"
}])
# 可以通过resp["body"]获取接口返回的内容
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")
// 使用自行发布的模型
chat := qianfan.NewChatCompletion(
qianfan.WithEndpoint("your_endpoint"),
)
resp, _ := chat.Do(
context.TODO(),
&qianfan.ChatCompletionRequest{
Messages: []qianfan.ChatCompletionMessage{
qianfan.ChatCompletionUserMessage("你好"),
},
},
)
fmt.Println(resp.Result)
}
import com.baidubce.qianfan.Qianfan;
import com.baidubce.qianfan.model.chat.ChatResponse;
public class Demo {
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");
// 使用自行发布的模型,替换your_custom_endpoint
ChatResponse resp = qianfan.chatCompletion()
.endpoint("your_custom_endpoint")
.addMessage("user", "你好")
.execute();
System.out.println(resp.getResult());
}
}
import {ChatCompletion, 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');
const client = new ChatCompletion({Endpoint: 'your_endpoint'});
async function main() {
const resp = await client.chat({
messages: [
{
role: 'user',
content: '你好',
},
],
});
console.log(resp);
}
main();
返回示例(单轮)
{
'id': 'as-csn49skq6g',
'object': 'chat.completion',
'created': 1719041666,
'result': ' 你好!我是人工智能助手 ChatGLM2-6B,很高兴见到你,欢迎问我任何问题。',
'is_truncated': False,
'need_clear_history': False,
'usage': {'prompt_tokens': 1, 'completion_tokens': 24, 'total_tokens': 25}
}
你好!我是人工智能助手 ChatGLM2-6B,很高兴见到你,欢迎问我任何问题。
你好!我是人工智能助手 ChatGLM2-6B,很高兴见到你,欢迎问我任何问题。
{
headers: {...},
id: 'as-ipkghnmey3',
object: 'chat.completion',
created: 1719042858,
result: ' 你好!我是人工智能助手 ChatGLM2-6B,很高兴见到你,欢迎问我任何问题。',
is_truncated: false,
need_clear_history: false,
usage: { prompt_tokens: 1, completion_tokens: 24, total_tokens: 25 }
}
调用示例(多轮)
import os
import qianfan
#通过环境变量初始化认证信息
# 【推荐】使用安全认证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"
chat_comp = qianfan.ChatCompletion()
# 多轮对话
resp = chat_comp.do(model="ChatGLM2-6B-32K", messages=[{
"role": "user",
"content": "你好"
},
{
"role": "assistant",
"content": "你好!很高兴见到你,欢迎问我任何问题。"
},
{
"role": "user",
"content": "介绍下故宫"
},
])
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")
// 多轮对话
chat := qianfan.NewChatCompletion(
qianfan.WithModel("ChatGLM2-6B-32K"),
)
resp, _ := chat.Do(
context.TODO(),
&qianfan.ChatCompletionRequest{
Messages: []qianfan.ChatCompletionMessage{
qianfan.ChatCompletionUserMessage("你好!"),
qianfan.ChatCompletionAssistantMessage("你好!有什么我可以帮助你的吗?"),
qianfan.ChatCompletionUserMessage("我在北京,周末可以去哪里玩?"),
},
},
)
fmt.Println(resp.Result)
}
import com.baidubce.qianfan.Qianfan;
import com.baidubce.qianfan.model.chat.ChatResponse;
public class Demo {
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");
// 多轮对话
ChatResponse resp = qianfan.chatCompletion()
.model("ChatGLM2-6B-32K")
.addMessage("user", "你好")
.addMessage("assistant", "你好!有什么我可以帮助你的吗?")
.addMessage("user", "介绍下故宫")
.execute();
System.out.println(resp.getResult());
}
}
import {ChatCompletion, 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');
const client = new ChatCompletion();
async function main() {
const resp = await client.chat({
messages: [
{
role: 'user',
content: '你好!',
},
{
role: "assistant",
content: "你好,请问有什么我可以帮助你的吗?"
},
{
role: "user",
"content": "我在北京,周末可以去哪里玩?"
},
],
},'ChatGLM2-6B-32K');
console.log(resp);
}
main();
返回示例(多轮)
{
'id': 'as-8j9kn48n84',
'object': 'chat.completion',
'created': 1719042007,
'result': ' 故宫是中国北京市中心的一座明清两代的皇宫,现已成为博物馆。它是中国古代宫殿建筑之精华,以其丰富的文化遗产和精美的建筑艺术而闻名于世界。\n\n故宫始建于明朝永乐年间,建筑群占地面积约72万平方米。它有九千余间房屋、庭院和花园,是中国乃至世界上保存最完整、规模最宏大的古代木质结构建筑群之一。故宫被誉为“东方的大皇宫”,是中国古代宫殿建筑的杰作。\n\n故宫是中国历史上一位重要的政治中枢,也是一位皇帝的宫殿。它是中国封建王朝宫廷文化的重要代表,也是中国文化的重要组成部分。故宫于1987年列为世界文化遗产,是中国著名的旅游景点之一。',
'is_truncated': False,
'need_clear_history': False,
'usage': {'prompt_tokens': 15, 'completion_tokens': 143, 'total_tokens': 158}
}
北京有很多有趣的周末活动,以下是一些建议:
1. 故宫博物院:如果您想游览中国的著名博物馆,可以前往故宫博物院。这里有许多历史文化景点,可以让您了解中国过去的统治者们的生活。
2. 天安门广场:这是一个巨大的广场,位于故宫的南侧。这里有许多纪念碑和博物馆,您可以欣赏到许多美丽的建筑和城市景观。
3. 颐和园:颐和园是一个美丽的皇家园林,建于清朝。这里有许多湖泊和花园,可以欣赏到美丽的景色。
4. 北京动物园:这是一个大型的动物园,可以了解到各种不同种类的动物。
5. 王府井:这是一个著名的商业街,有许多商店和餐馆。这里有许多独特的商品和美食,可以让您购物和品尝美食。
希望这些建议可以帮助您规划周末的活动。
故宫是中国北京市中心的一座明清两代的皇宫,现已成为博物馆。它是中国古代宫殿建筑之精华,以其丰富的文化遗产和精美的建筑艺术而闻名于世界。
故宫始建于明朝永乐年间,建筑群占地面积约72万平方米。它有九千余间房屋和庭院,包括宫殿、花园和煤房等。故宫是中国古代宫殿建筑的代表,其建筑风格高贵典雅,装饰华丽精美,被誉为“东方的大皇宫”。
故宫是中国文化遗产的重要组成部分,也是中国对外开放的重要文化场所之一。它被誉为“世界五大宫殿之一”,吸引着来自世界各地的游客前来参观。
{
headers: {...},
id: 'as-nme6pmrm6e',
object: 'chat.completion',
created: 1719042915,
result: ' 北京有很多有趣的周末活动,以下是一些建议:\n' +
'\n' +
'1. 故宫博物院:周末故宫会有特别的活动,例如免费参观,可以提前关注一下。\n' +
'\n' +
'2. 颐和园:颐和园是一个美丽的皇家园林,周末可以对外开放,可以考虑去逛逛。\n' +
'\n' +
'3. 北京动物园:北京动物园是一个大型的动物园,有各种动物,可以适合家庭出游。\n' +
'\n' +
'4. 鸟巢和水立方:这两个建筑物是2008年北京奥运会的主场馆,可以参观一下。\n' +
'\n' +
'5. 798艺术区:这是一个集艺术、文化、设计和美食为一体的区域,可以感受一下。\n' +
'\n' +
'6. 北京国家体育场(鸟巢)和水立方:这两个建筑物是2008年北京奥运会的主场馆,可以参观一下。\n' +
'\n' +
'希望这些建议对你有所帮助,祝你周末愉快!',
is_truncated: false,
need_clear_history: false,
usage: { prompt_tokens: 19, completion_tokens: 182, total_tokens: 201 }
}
调用示例(流式)
import os
import qianfan
#【推荐】使用安全认证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"
chat_comp = qianfan.ChatCompletion()
resp = chat_comp.do(model="ChatGLM2-6B-32K", messages=[{
"role": "user",
"content": "介绍下北京"
}], stream=True)
for r in resp:
print(r["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")
chat := qianfan.NewChatCompletion(
qianfan.WithModel("ChatGLM2-6B-32K"),
)
resp, _ := chat.Stream( // Stream 启用流式返回,参数与 Do 相同
context.TODO(),
&qianfan.ChatCompletionRequest{
Messages: []qianfan.ChatCompletionMessage{
qianfan.ChatCompletionUserMessage("介绍下北京"),
},
},
)
for {
r, err := resp.Recv()
if err != nil {
panic(err)
}
if resp.IsEnd { // 判断是否结束
break
}
fmt.Println(r.Result)
}
}
import com.baidubce.qianfan.Qianfan;
import com.google.gson.Gson;
public class Demo {
public static void main(String[] args) {
Gson gson = new Gson();
// 使用安全认证AK/SK鉴权,替换下列示例中参数,安全认证Access Key替换your_iam_ak,Secret Key替换your_iam_sk
Qianfan qianfan = new Qianfan("your_iam_ak", "your_iam_sk");
qianfan.chatCompletion()
.model("ChatGLM2-6B-32K")
.addMessage("user", "介绍下北京")
// 启用流式返回
.executeStream()
.forEachRemaining(chunk -> System.out.print(gson.toJson(chunk)));
}
}
import {ChatCompletion, 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');
const client = new ChatCompletion();
async function main() {
const resp = await client.chat({
messages: [
{
role: 'user',
content: '介绍下故宫',
},
],
stream: true, //启用流式返回
}, 'ChatGLM2-6B-32K');
for await (const chunk of resp) {
console.log(chunk);
}
}
main();
返回示例(流式)
{'id': 'as-r2barmn1qd', 'object': 'chat.completion', 'created': 1719041928, 'sentence_id': 0, 'is_end': False, 'is_truncated': False, 'result': ' 北京,简称“京”,是中国的首都,是全国的政治中心、文化中心,是世界著名古都和现代化国际城市。\n\n北京地处中国北部、', 'need_clear_history': False, 'usage': {'prompt_tokens': 3, 'completion_tokens': 0, 'total_tokens': 3}}
{'id': 'as-r2barmn1qd', 'object': 'chat.completion', 'created': 1719041929, 'sentence_id': 1, 'is_end': False, 'is_truncated': False, 'result': '华北平原北部,东与天津毗连,其余均与河北相邻,中心位置东经 116°20′、北纬 3', 'need_clear_history': False, 'usage': {'prompt_tokens': 3, 'completion_tokens': 0, 'total_tokens': 3}}
{'id': 'as-r2barmn1qd', 'object': 'chat.completion', 'created': 1719041929, 'sentence_id': 2, 'is_end': False, 'is_truncated': False, 'result': '9°54′,是世界著名古都和现代化国际城市,\n\n北京中国历史文化名城和古都之一,拥有许多历史名胜和现代化', 'need_clear_history': False, 'usage': {'prompt_tokens': 3, 'completion_tokens': 0, 'total_tokens': 3}}
{'id': 'as-r2barmn1qd', 'object': 'chat.completion', 'created': 1719041930, 'sentence_id': 3, 'is_end': False, 'is_truncated': False, 'result': '建筑,\n\n著名景点有故宫、长城、颐和园、天坛等。\n\n北京也有许多美食和文化活动,吸引着来自世界各地', 'need_clear_history': False, 'usage': {'prompt_tokens': 3, 'completion_tokens': 0, 'total_tokens': 3}}
{'id': 'as-r2barmn1qd', 'object': 'chat.completion', 'created': 1719041930, 'sentence_id': 4, 'is_end': True, 'is_truncated': False, 'result': '的游客。', 'need_clear_history': False, 'usage': {'prompt_tokens': 3, 'completion_tokens': 136, 'total_tokens': 139}}
北京,简称“京”,是中国的首都,是全国的政治中心、文化中心,是世界著名古都和现代化国际城市。
北京地处中国北部、
华北平原北部,东与天津毗连,其余均与河北相邻,中心位置东经 116°20′、北纬 3
9°54′,是世界著名古都和现代化国际城市,
北京中国历史文化名城和古都之一,拥有许多历史名胜和现代化
建筑,例如故宫、天安门广场、长城等。
北京也有许多美食和文化活动,吸引着来自世界各地的游客。
{"sentenceId":0,"isEnd":false,"isTruncated":false,"result":" 北京,简称“京”,是中国的首都,是全国的政治中心、文化中心,是世界著名古都和现代化国际城市。\n\n北京地处中国北部、","needClearHistory":false,"usage":{"promptTokens":3,"completionTokens":0,"totalTokens":3},"id":"as-xp833yzyv1","object":"chat.completion","created":1718965173,"headers":{...}}
{"sentenceId":1,"isEnd":false,"isTruncated":false,"result":"华北平原北部,东与天津毗连,其余均与河北相邻,中心位置东经 116°20′、北纬 3","needClearHistory":false,"usage":{"promptTokens":3,"completionTokens":0,"totalTokens":3},"id":"as-xp833yzyv1","object":"chat.completion","created":1718965173,"headers":{...}}{"sentenceId":2,"isEnd":false,"isTruncated":false,"result":"9°54′,是世界著名古都和现代化国际城市,\n\n北京中国历史文化名城和古都之一,拥有许多历史名胜和现代化","needClearHistory":false,"usage":{"promptTokens":3,"completionTokens":0,"totalTokens":3},"id":"as-xp833yzyv1","object":"chat.completion","created":1718965174,"headers":{...}}
{"sentenceId":3,"isEnd":true,"isTruncated":false,"result":"建筑,\n\n北京也有许多美食和文化活动。","needClearHistory":false,"usage":{"promptTokens":3,"completionTokens":112,"totalTokens":115},"id":"as-xp833yzyv1","object":"chat.completion","created":1718965174,"headers":{...}}
{
headers: {...},
id: 'as-3rmjf5v463',
object: 'chat.completion',
created: 1718965693,
sentence_id: 0,
is_end: false,
is_truncated: false,
result: ' 故宫,中国明清时期的皇家宫殿,位于北京市中心的紫禁城中。故宫始建于明朝永乐年间,建筑群占地面积约72万平方米。其建筑',
need_clear_history: false,
usage: { prompt_tokens: 3, completion_tokens: 0, total_tokens: 3 }
}
{
headers: {...},
id: 'as-3rmjf5v463',
object: 'chat.completion',
created: 1718965693,
sentence_id: 1,
is_end: false,
is_truncated: false,
result: '风格高贵典雅,装饰华丽精美,是中国传统宫殿建筑的杰出代表。\n\n故宫是中国历史最为悠久、规模最大、保存最完整的古代宫殿',
need_clear_history: false,
usage: { prompt_tokens: 3, completion_tokens: 0, total_tokens: 3 }
}
{
headers: {...},
id: 'as-3rmjf5v463',
object: 'chat.completion',
created: 1718965694,
sentence_id: 2,
is_end: false,
is_truncated: false,
result: '建筑群之一,也是中国古代文化的瑰宝之一。在中国千年文化中,故宫是举世无与伦比的,也是全球最有知名度的博物馆之一。',
need_clear_history: false,
usage: { prompt_tokens: 3, completion_tokens: 100, total_tokens: 103 }
}
{
headers: {...},
id: 'as-3rmjf5v463',
object: 'chat.completion',
created: 1718965694,
sentence_id: 3,
is_end: true,
is_truncated: false,
result: '游客可以在故宫欣赏到大量的文化遗产和珍贵的文物,了解中国皇帝的生活和文化,感受中国古代宫殿建筑的独特魅力。',
need_clear_history: false,
usage: { prompt_tokens: 3, completion_tokens: 125, total_tokens: 128 }
}
请求参数
注意:以下为Python SDK参数说明,其他SDK参数相关说明请参考Go SDK-对话Chat参数相关说明、Java SDK参数相关说明、Node.js SDK参数相关说明。
名称 | 类型 | 必填 | 描述 |
---|---|---|---|
messages | List[dict] | 是 | 聊天上下文信息。说明: (1)messages成员不能为空,1个成员表示单轮对话,多个成员表示多轮对话 (2)最后一个message为当前请求的信息,前面的message为历史对话信息 (3)必须为奇数个成员,成员中message的role必须依次为user、assistant (4)message中的content总长度不能超过32500个字符 |
model | string | 否 | 模型名称,用于指定平台支持预置服务的模型,说明: (1)如果调用预置服务,即调用本文API,该字段必填,且为固定值ChatGLM2-6B-32K (2)如果指定用户自行发布的模型服务,该字段不填写,需填写endpoint字段,详见参数endpoint说明 |
endpoint | string | 否 | 用于指定用户自行发布的模型服务,说明: (1)如果指定用户自行发布的模型服务,endpoint字段为必填 (2)该字段值可以通过查看服务地址获取:打开模型服务-模型推理-我的服务页面,选择创建的服务-点击详情页查看服务地址,endpoint值为 https://aip.baidubce.com/rpc/2.0/ai_custom/v1/wenxinworkshop/chat/ 后面的地址,如下图所示注意: 在创建服务页面,选择模型后,API地址会自动新增个后缀。例如选择某模型,输入API地址为“test1”,endpoint的取值即为“ngxxxol8_test1”,如下图所示,如何发布服务请参考发布平台预置的模型服务 |
temperature | float | 否 | 说明: (1)较高的数值会使输出更加随机,而较低的数值会使其更加集中和确定 (2) 范围(0, 1.0],不能为0 |
top_k | float | 否 | 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] |
stream | bool | 否 | 是否以流式接口的形式返回数据,默认False · True:是,以流式接口的形式返回数据 · False:否 |
retry_count | int | 否 | 重试次数,默认1次 |
request_timeout | float | 否 | 请求超时时间,默认60秒 |
backoff_factor | float | 否 | 请求重试参数,用于指定重试的策略,默认为0 |
stop | List[string] | 否 | 生成停止标识。当模型生成结果以stop中某个元素结尾时,停止文本生成。说明: (1)每个元素长度不超过20字符。 (2)最多4个元素 |
user_id | 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总数 |
HTTP调用
鉴权说明
本文API,支持2种鉴权方式。不同鉴权方式,调用方式不同,使用Header、Query参数不同,详见本文请求说明。开发者可以选择以下任一种方式进行鉴权。
请求说明
- 基本信息
请求地址: https://aip.baidubce.com/rpc/2.0/ai_custom/v1/wenxinworkshop/chat/chatglm2_6b_32k
请求方式: POST
- Header参数
根据不同鉴权方式,查看对应Header参数。
访问凭证access_token鉴权
名称 | 类型 | 必填 | 描述 |
---|---|---|---|
Content-Type | string | 是 | 固定值application/json |
基于安全认证AK/SK进行签名计算鉴权
名称 | 类型 | 必填 | 描述 |
---|---|---|---|
Content-Type | string | 是 | 固定值application/json |
x-bce-date | string | 否 | 当前时间,遵循ISO8601规范,格式如2016-04-06T08:23:49Z |
Authorization | string | 是 | 用于验证请求合法性的认证信息,更多内容请参考鉴权认证机制,签名工具可参考IAM签名工具 |
- 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总长度不能超过32500 个字符 |
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 | 否 | 表示最终用户的唯一标识符 |
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,示例如下。
# 步骤一,获取access_token,替换下列示例中的应用API Key与应用Secret Key
curl 'https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=[应用API Key]&client_secret=[应用Secret Key]'
# 步骤二,调用本文API,使用步骤一获取的access_token,替换下列示例中的“调用接口获取的access_token”;
curl -XPOST 'https://aip.baidubce.com/rpc/2.0/ai_custom/v1/wenxinworkshop/chat/chatglm2_6b_32k?access_token=[步骤一调用接口获取的access_token]' -d '{
"messages": [
{"role":"user","content":"介绍一下北京"}
]
}' | iconv -f utf-8 -t utf-8
import requests
import json
def get_access_token():
"""
使用 API Key,Secret Key 获取access_token,替换下列示例中的应用API Key、应用Secret Key
"""
url = "https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=[应用API Key]&client_secret=[应用Secret Key]"
payload = json.dumps("")
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request("POST", url, headers=headers, data=payload)
return response.json().get("access_token")
def main():
url = "https://aip.baidubce.com/rpc/2.0/ai_custom/v1/wenxinworkshop/chat/chatglm2_6b_32k?access_token=" + get_access_token()
payload = json.dumps({
"messages": [
{
"role": "user",
"content": "介绍一下北京"
}
]
})
headers = {
'Content-Type': 'application/json'
}
response = requests.request("POST", url, headers=headers, data=payload)
print(response.text)
if __name__ == '__main__':
main()
响应示例(单轮)
{
"id": "as-whq0zbtde0",
"object": "chat.completion",
"created": 1702546199,
"result": "北京,简称“京”,是中国的首都,是全国的政治中心、文化中心,是世界著名古都和现代化国际城市。\n\n北京地处中国北部、华北平原北部,东与天津毗连,其余均与河北相邻,中心位置东经 116°20′、北纬 39°54′,是世界著名古都和现代化国际城市,\n\n北京中国历史文化名城和古都之一,拥有许多历史名胜和现代化建筑,例如故宫、天安门广场、长城等。\n\n北京还是一个美食之都,有许多著名的美食,例如北京烤鸭、炸酱面等。",
"is_truncated": false,
"need_clear_history": false,
"usage": {
"prompt_tokens": 2,
"completion_tokens": 137,
"total_tokens": 139
}
}
请求示例(多轮)
# 步骤一,获取access_token,替换下列示例中的应用API Key与应用Secret Key
curl 'https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=[应用API Key]&client_secret=[应用Secret Key]'
# 步骤二,调用本文API,使用步骤一获取的access_token,替换下列示例中的“调用接口获取的access_token”;
curl -XPOST 'https://aip.baidubce.com/rpc/2.0/ai_custom/v1/wenxinworkshop/chat/chatglm2_6b_32k?access_token=[步骤一调用接口获取的access_token]' -d '{
"messages": [
{"role":"user","content":"介绍一下北京"},
{"role":"assistant","content":"北京,简称“京”,是中国的首都,是全国的政治中心、文化中心,是世界著名古都和现代化国际城市。\n\n北京地处中国北部、华北平原北部,东与天津毗连,其余均与河北相邻,中心位置东经 116°20′、北纬 39°54′,是世界著名古都和现代化国际城市,\n\n北京中国历史文化名城和古都之一,拥有许多历史名胜和现代化建筑,例如故宫、天安门广场、长城等。\n\n北京还是一个美食之都,有许多著名的美食,例如北京烤鸭、炸酱面等。"},
{"role":"user","content": "北京有哪些著名景点"}
]
}' | iconv -f utf-8 -t utf-8
import requests
import json
def get_access_token():
"""
使用 API Key,Secret Key 获取access_token,替换下列示例中的应用API Key、应用Secret Key
"""
url = "https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=[应用API Key]&client_secret=[应用Secret Key]"
payload = json.dumps("")
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request("POST", url, headers=headers, data=payload)
return response.json().get("access_token")
def main():
url = "https://aip.baidubce.com/rpc/2.0/ai_custom/v1/wenxinworkshop/chat/chatglm2_6b_32k?access_token=" + get_access_token()
payload = json.dumps({
"messages": [
{
"role": "user",
"content": "介绍一下北京"
},
{
"role": "assistant",
"content": "北京,简称“京”,是中国的首都,是全国的政治中心、文化中心,是世界著名古都和现代化国际城市。\n\n北京地处中国北部、华北平原北部,东与天津毗连,其余均与河北相邻,中心位置东经 116°20′、北纬 39°54′,是世界著名古都和现代化国际城市,\n\n北京中国历史文化名城和古都之一,拥有许多历史名胜和现代化建筑,例如故宫、天安门广场、长城等。\n\n北京还是一个美食之都,有许多著名的美食,例如北京烤鸭、炸酱面等。"
},
{
"role": "user",
"content": "北京有哪些著名景点"
}
]
})
headers = {
'Content-Type': 'application/json'
}
response = requests.request("POST", url, headers=headers, data=payload)
print(response.text)
if __name__ == '__main__':
main()
响应示例(多轮)
{
"id": "as-4a1x264c01",
"object": "chat.completion",
"created": 1702549201,
"result": "北京有许多著名景点,以下是一些:\n\n1. 故宫:位于北京市中心,是中国历代皇帝的宫殿,是世界上保存最完整的古代宫殿建筑群之一。\n\n2. 天安门广场:是中国的国家象征之一,也是世界上最大的城市广场之一。\n\n3. 颐和园:是中国古代皇家园林之一,被誉为“万园之园”。\n\n4. 长城:是中国最著名的古迹之一,被誉为“世界长城之最”。\n\n5. 北海公园:是一座古代皇家园林,被誉为“皇城西北的一颗明珠”。\n\n6. 北京鸟巢:是2008年北京奥运会主体育场馆之一,是中国现代建筑的代表之一。\n\n7. 北京国家体育场(鸟巢)和水立方:是2008年北京奥运会另外两个主要场馆,也成为了中国现代建筑的代表之一。\n\n除此之外,北京还有许多其他著名景点,例如北京动物园、天坛公园、北京国际雕塑园等。",
"is_truncated": false,
"need_clear_history": false,
"usage": {
"prompt_tokens": 143,
"completion_tokens": 212,
"total_tokens": 355
}
}
请求示例(流式)
# 步骤一,获取access_token,替换下列示例中的应用API Key与应用Secret Key
curl 'https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=[应用API Key]&client_secret=[应用Secret Key]'
# 步骤二,调用本文API,使用步骤一获取的access_token,替换下列示例中的“调用接口获取的access_token”;
curl -XPOST 'https://aip.baidubce.com/rpc/2.0/ai_custom/v1/wenxinworkshop/chat/chatglm2_6b_32k?access_token=[步骤一调用接口获取的access_token]' -d '{
"messages": [
{"role":"user", "content": "给我推荐一些自驾游路线"}
],
"stream": true
}'
import requests
import json
def get_access_token():
"""
使用 API Key,Secret Key 获取access_token,替换下列示例中的应用API Key、应用Secret Key
"""
url = "https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=[应用API Key]&client_secret=[应用Secret Key]"
payload = json.dumps("")
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request("POST", url, headers=headers, data=payload)
return response.json().get("access_token")
def main():
url = "https://aip.baidubce.com/rpc/2.0/ai_custom/v1/wenxinworkshop/chat/chatglm2_6b_32k?access_token=" + get_access_token()
payload = json.dumps({
"messages": [
{
"role": "user",
"content": "给我推荐一些自驾游路线"
}
],
"stream": True
})
headers = {
'Content-Type': 'application/json'
}
response = requests.request("POST", url, headers=headers, data=payload, stream=True)
for line in response.iter_lines():
print(line.decode("UTF-8"))
if __name__ == '__main__':
main()
响应示例(流式)
HTTP/1.1 200 OK
Date: Mon, 12 Apr 2021 06:27:55 GMT
Content-Type: text/event-stream;charset=utf-8
Cache-Control: no-cache
Statement: AI-generated
data: {"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}}
data: {"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}}
data: {"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}}
data: {"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}}
data: {"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}}
data: {"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}}
data: {"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}}
data: {"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}}
data: {"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再次请求。
{
"error_code": 110,
"error_msg": "Access token invalid or no longer valid"
}
更多相关错误码,请查看错误码说明。