对话模式
更新时间:2025-01-13
千帆ModelBuilder支持HuggingFace Transformer架构的自定义大模型导入。本文介绍了自定义导入模型发布为服务后,使用对话模式调用相关API说明。如何导入并部署第三方模型,请查看快速导入并部署第三方模型。
对话模式
使用对话模式,创建chat,发起一次对话请求。
使用说明
本文内容适用Python、Go、Java和Node.js SDK,SDK调用流程请参考SDK安装及使用流程。
SDK调用
调用示例(单轮)
对于用户快速部署自行发布的模型服务,通过使用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"
# 方式二:【不推荐】使用应用AK/SK鉴权
# 替换下列示例中参数,将应用API_Key、应用Secret key值替换为真实值
#os.environ["QIANFAN_AK"] = "应用API_Key"
#os.environ["QIANFAN_SK"] = "应用Secret_Key"
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("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: '***'});
async function main() {
const resp = await client.chat({
messages: [
{
role: 'user',
content: '你好',
},
],
});
console.log(resp);
}
main();
返回示例(单轮)
{
'id': 'as-4v1h587fyv',
'object': 'chat.completion',
'created': 1695021339,
'result': '你好,请问有什么我可以帮助你的吗?',
'is_truncated': False,
'need_clear_history': False,
'usage': {
'prompt_tokens': 1,
'completion_tokens': 15,
'total_tokens': 16
}
}
你好!有什么我可以帮助你的吗?
你好!有什么我可以帮助你的吗?
{
headers: {...},
id: 'as-xdiknr8pj9',
object: 'chat.completion',
created: 1709721393,
result: '你好!有什么我可以帮助你的吗?',
is_truncated: false,
need_clear_history: false,
usage: { prompt_tokens: 2, completion_tokens: 8, total_tokens: 10 }
}
调用示例(多轮)
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"
# 方式二:【不推荐】使用应用AK/SK鉴权
# 替换下列示例中参数,将应用API_Key、应用Secret key值替换为真实值
#os.environ["QIANFAN_AK"] = "应用API_Key"
#os.environ["QIANFAN_SK"] = "应用Secret_Key"
chat_comp = qianfan.ChatCompletion()
# 多轮对话
resp = chat_comp.do(endpoint="your_custom_endpoint",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.WithEndpoint("your_endpoint")
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()
.endpoint("your_custom_endpoint")
.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({Endpoint: 'your_endpoint'});
async function main() { // 调用默认模型,即 ERNIE-Bot-turbo
const resp = await client.chat({
messages: [
{
role: 'user',
content: '你好!',
},
{
role: "assistant",
content: "你好,请问有什么我可以帮助你的吗?"
},
{
role: "user",
"content": "我在北京,周末可以去哪里玩?"
},
],
});
console.log(resp);
}
main();
如果使用Python SDK,也可以使用内置 Messages 简化多轮对话,与用户对话的示例如下。
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"
# 方式二:【不推荐】使用应用AK/SK鉴权
# 替换下列示例中参数,将应用API_Key、应用Secret key值替换为真实值
#os.environ["QIANFAN_AK"] = "应用API_Key"
#os.environ["QIANFAN_SK"] = "应用Secret_Key"
chat_comp = qianfan.ChatCompletion()
# 下面是一个与用户对话的例子
msgs = qianfan.Messages()
while True:
msgs.append(input("输入:")) # 增加用户输入
resp = chat_comp.do(endpoint="your_custom_endpoint", messages=msgs)
print(resp) # 模型的输出
msgs.append(resp) # 追加模型输出
返回示例(多轮)
{
'id': 'as-zyicree42w',
'object': 'chat.completion',
'created': 1719200613,
'result': '北京是一个拥有许多历史、文化和自然景观的城市,周末你可以去以下几个地方玩:\n\n1. 故宫:这是中国最大的古代建筑群,是中国古代皇家宫殿的代表,你可以欣赏到丰富的历史和文化。\n\n2. 颐和园:这是一个美丽的皇家园林,有着精美的园林艺术和丰富的历史文化。\n\n3. 长城:北京附近的长城段是最受欢迎的,你可以选择徒步、骑行或者自驾前往,欣赏到壮丽的自然风光和古老的历史文化。\n\n4. 798艺术区:这是一个现代艺术和文化创意产业聚集区,你可以欣赏到各种当代艺术作品,同时也可以品尝到各种美食。\n\n5. 奥林匹克公园:如果你对体育和文化活动感兴趣,那么奥林匹克公园是一个不错的选择,这里有奥运场馆、公园和文化活动。\n\n6. 南锣鼓巷:这是一条充满老北京风貌的胡同,你可以在这里品尝到各种小吃,同时也可以欣赏到老北京的建筑和文化。\n\n除此之外,北京还有许多其他的景点和活动,例如天坛公园、北海公园、圆明园、北京动物园等等。你可以根据自己的兴趣和时间来选择合适的景点和活动。',
'is_truncated': False,
'need_clear_history': False,
'usage': {
'prompt_tokens': 18,
'completion_tokens': 249,
'total_tokens': 267
}
}
北京是一个拥有许多历史、文化和自然景观的城市,有很多地方可以探索。如果你在周末有空,以下是一些建议的景点和活动:
1. 故宫:这是中国最大的古代宫殿之一,拥有丰富的历史和文化遗产。
2. 颐和园:这是一个美丽的皇家园林,拥有壮丽的湖泊和精美的建筑。
3. 长城:北京附近的长城段是许多人向往的地方。你可以选择参加一日游或自驾前往。
4. 798艺术区:这是一个充满艺术气息的地方,有许多画廊、艺术工作室和博物馆。
5. 南锣鼓巷:这是一个充满历史气息的胡同区,有很多小吃、手工艺品和文化遗产店。
6. 玉渊潭公园:这是一个大型公园,环境优美,有很多娱乐设施和活动。
7. 郊区古迹:如妙应寺白塔、太阳宫等,这些地方虽然不那么热闹,但也有其独特的魅力。
除此之外,北京还有很多博物馆、剧院和美食街区,如三里屯、簋街等,你可以根据自己的兴趣和时间来选择。另外,你也可以尝试一些当地的活动,如品尝北京烤鸭、炸酱面等美食,或者参加一些传统文化活动。
希望这些建议对你有所帮助!
北京是一个拥有许多历史、文化和自然景观的城市,周末你可以去以下几个地方玩:\n\n1. 故宫:这是中国最大的古代建筑群,是中国古代皇家宫殿的代表,你可以欣赏到丰富的历史和文化。\n\n2. 颐和园:这是一个美丽的皇家园林,有着精美的园林艺术和丰富的历史文化。\n\n3. 长城:北京附近的长城段是最受欢迎的,你可以选择徒步、骑行或者自驾前往,欣赏到壮丽的自然风光和古老的历史文化。\n\n4. 798艺术区:这是一个现代艺术和文化创意产业聚集区,你可以欣赏到各种当代艺术作品,同时也可以品尝到各种美食。\n\n5. 奥林匹克公园:如果你对体育和文化活动感兴趣,那么奥林匹克公园是一个不错的选择,这里有奥运场馆、公园和文化活动。\n\n6. 南锣鼓巷:这是一条充满老北京风貌的胡同,你可以在这里品尝到各种小吃,同时也可以欣赏到老北京的建筑和文化。\n\n除此之外,北京还有许多其他的景点和活动,例如天坛公园、北海公园、圆明园、北京动物园等等。你可以根据自己的兴趣和时间来选择合适的景点和活动。
{
headers: {...},
id: 'as-8vcq0n4u0e',
object: 'chat.completion',
created: 1709887877,
result: '北京是一个拥有许多有趣和独特景点的大城市,周末你可以去很多地方玩。例如:\n' +
'\n' +
'1. **故宫博物院**:这是中国最大的古代建筑群,有着丰富的历史和文化遗产,是个很好的适合全家人游玩的地方。\n' +
'2. **天安门广场**:这里是北京的心脏,周围有许多历史和现代建筑。你可以在广场上漫步,欣赏升旗仪式和观看周围的繁华景象。\n' +
'3. **颐和园**:这是一个美丽的皇家园林,有着优美的湖泊和精美的古建筑。你可以在这里漫步,欣赏美丽的景色,同时也可以了解中国的传统文化。\n' +
'4. **北京动物园**:这是中国最大的动物园之一,有许多稀有动物,包括熊猫、老虎、长颈鹿等。对于孩子们来说是个很好的去处。\n' +
'5. **798艺术区**:这是一个充满艺术气息的地方,有许多画廊、艺术工作室和艺术展览。这里有许多新的现代艺术作品,可以欣赏到一些艺术家的创作。\n' +
'6. **三里屯酒吧街**:如果你对夜生活感兴趣,可以去三里屯酒吧街。这里有许多酒吧和餐馆,是一个热闹的夜生活场所。\n' +
'7. **北京环球度假区**:如果你们喜欢主题公园,那么可以去环球度假区,虽然这是在建的,但是等它建好之后肯定是一个很好的去处。\n' +
'\n' +
'当然,你也可以考虑一些其他的地方,比如购物街、博物馆、公园等等。希望这些建议对你有所帮助!',
is_truncated: false,
need_clear_history: false,
usage: { prompt_tokens: 19, completion_tokens: 307, total_tokens: 326 }
}
调用示例(流式)
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"
# 方式二:【不推荐】使用应用AK/SK鉴权
# 替换下列示例中参数,将应用API_Key、应用Secret key值替换为真实值
#os.environ["QIANFAN_AK"] = "应用API_Key"
#os.environ["QIANFAN_SK"] = "应用Secret_Key"
chat_comp = qianfan.ChatCompletion()
resp = chat_comp.do(endpoint="your_custom_endpoint", 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.WithEndpoint("your_endpoint"),)
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()
.endpoint("your_custom_endpoint")
.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({Endpoint: 'your_endpoint'});
async function main() {
const stream = await client.chat({
messages: [
{
role: 'user',
content: '你好!',
},
],
stream: true, //启用流式返回
});
for await (const chunk of stream as AsyncIterableIterator<any>) {
console.log(chunk);
}
}
main();
返回示例(流式)
{'id': 'as-csh5xe4mcf', 'object': 'chat.completion', 'created': 1716897265, 'sentence_id': 0, 'is_end': False, 'is_truncated': False, 'result': '你好!', 'need_clear_history': False, 'finish_reason': 'normal', 'usage': {'prompt_tokens': 1, 'completion_tokens': 2, 'total_tokens': 3}}
{'id': 'as-csh5xe4mcf', 'object': 'chat.completion', 'created': 1716897266, 'sentence_id': 1, 'is_end': False, 'is_truncated': False, 'result': '请问有什么我可以帮助你的吗?', 'need_clear_history': False, 'finish_reason': 'normal', 'usage': {'prompt_tokens': 1, 'completion_tokens': 2, 'total_tokens': 3}}
{'id': 'as-csh5xe4mcf', 'object': 'chat.completion', 'created': 1716897267, 'sentence_id': 2, 'is_end': False, 'is_truncated': False, 'result': '无论是关于学习、工作、生活还是其他方面的问题,我都会尽力为你解答。', 'need_clear_history': False, 'finish_reason': 'normal', 'usage': {'prompt_tokens': 1, 'completion_tokens': 2, 'total_tokens': 3}}
{'id': 'as-csh5xe4mcf', 'object': 'chat.completion', 'created': 1716897267, 'sentence_id': 3, 'is_end': True, 'is_truncated': False, 'result': '', 'need_clear_history': False, 'finish_reason': 'normal', 'usage': {'prompt_tokens': 1, 'completion_tokens': 24, 'total_tokens': 25}}
你好,
有什么我可以帮助你的吗?
{"sentenceId":0,"isEnd":false,"isTruncated":false,"result":"你好,","needClearHistory":false,"usage":{"promptTokens":1,"completionTokens":2,"totalTokens":3},"id":"as-x0scrce3um","object":"chat.completion","created":1719210415,"headers":{...}}{"sentenceId":1,"isEnd":false,"isTruncated":false,"result":"有什么我可以帮助你的吗?","needClearHistory":false,"usage":{"promptTokens":1,"completionTokens":2,"totalTokens":3},"id":"as-x0scrce3um","object":"chat.completion","created":1719210415,"headers":{...}}{"sentenceId":2,"isEnd":true,"isTruncated":false,"result":"","needClearHistory":false,"usage":{"promptTokens":1,"completionTokens":8,"totalTokens":9},"id":"as-x0scrce3um","object":"chat.completion","created":1719210415,"headers":{...}}
{
headers: {...},
id: 'as-f7mrqpanb3',
object: 'chat.completion',
created: 1709724132,
sentence_id: 0,
is_end: false,
is_truncated: false,
result: '你好!',
need_clear_history: false,
usage: { prompt_tokens: 2, completion_tokens: 0, total_tokens: 2 }
}
{
headers: {...},
id: 'as-f7mrqpanb3',
object: 'chat.completion',
created: 1709724132,
sentence_id: 1,
is_end: false,
is_truncated: false,
result: '有什么我可以帮助你的吗?',
need_clear_history: false,
usage: { prompt_tokens: 2, completion_tokens: 0, total_tokens: 2 }
}
{
headers: {...},
id: 'as-f7mrqpanb3',
object: 'chat.completion',
created: 1709724132,
sentence_id: 2,
is_end: true,
is_truncated: false,
result: '',
need_clear_history: false,
usage: { prompt_tokens: 2, completion_tokens: 8, total_tokens: 10 }
}
请求参数
注意:以下为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长度不能超过3000 token |
endpoint | string | 是 | 用于指定用户自行发布的模型服务,如用户自定义模型。说明: (1)该字段值可以通过查看服务地址获取:打开模型服务-模型推理-我的服务页面,选择创建的服务-点击详情页查看服务地址,endpoint值为 https://aip.baidubce.com/rpc/2.0/ai_custom/v1/wenxinworkshop/chat/ 后面的地址,如下图所示(2)注意:在创建服务页面,选择模型后,API地址会自动新增个后缀。例如选择某模型,输入API地址为“test1”,endpoint的取值即为“ngxxxol8_test1”,如下图所示,如何发布服务请参考快速部署自定义模型 |
stream | bool | 否 | 是否以流式接口的形式返回数据,默认false |
temperature | float | 否 | 说明: (1)较高的数值会使输出更加随机,而较低的数值会使其更加集中和确定 (2)范围 (0, 1.0],不能为0 (3)建议该参数和top_p只设置1个 (4)默认值以generation_config.json配置为准,如果未配置默认值为1.0 |
top_k | int | 否 | Top-K 采样参数,在每轮token生成时,保留k个概率最高的token作为候选。说明: (1)影响输出文本的多样性,取值越大,生成文本的多样性越强 (2)取值范围:正整数 (3)默认值以generation_config.json配置为准,如果未配置默认值为50 |
top_p | float | 否 | 说明: (1)影响输出文本的多样性,取值越大,生成文本的多样性越强 (2)取值范围 [0, 1.0] (3)建议该参数和temperature只设置1个 (4)默认值以generation_config.json配置为准,如果未配置默认值为1.0 |
penalty_score | float | 否 | 通过对已生成的token增加惩罚,减少重复生成的现象。说明: (1)值越大表示惩罚越大 (2)取值范围:[1.0, 2.0] (3)默认值以generation_config.json配置为准,如果未配置默认值为1.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总数 |