对话Chat
更新时间:2024-09-23
注意: 为提升开发者使用体验,本文内容已合并至对应API文档,请查看API鉴权及调用-对话Chat-各模型调用文档;本文档已于2024年7月5日在平台文档中心下线,内容不再更新。
千帆ModelBuilder提供了对话Chat相关模型API SDK,支持单轮对话、多轮对话、流式等调用。
注意事项
(1)本文内容适用Python、Go、Java和Node.js SDK。SDK支持功能详情,请查看SDK功能列表。
(2)模型不同,调用SDK时,使用参数不同。请结合具体模型,查看参数使用说明进行调用。
- 默认使用模型,默认使用的模型为ERNIE-Lite-8K-0922,无需填写model和endpoint参数,使用的模型,详见请求参数说明。
- 指定支持预置服务的模型,使用model参数指定支持预置服务的模型,详见请求参数说明。
- 用户快速部署自行发布的模型服务,需使用参数endpoint,详见请求参数说明。
支持模型列表
支持的模型列表,及各模型支持的调用方法说明如下,更多详情见请求参数说明。
模型 | 支持预置服务的模型 (使用model参数) |
用户自行发布的模型服务 (使用endpoint参数) |
---|---|---|
ERNIE-4.0-8K (即ERNIE-Bot-4) |
✓ | ✕ |
ERNIE-4.0-8K-0329 | ✓ | ✕ |
ERNIE-4.0-8K-0104 | ✓ | ✕ |
ERNIE-4.0-8K-Preview | ✓ | ✕ |
ERNIE-4.0-8K-Preview-0518 | ✓ | ✕ |
ERNIE-4.0-8K-Latest | ✓ | ✕ |
ERNIE-4.0-8K-0613 | ✓ | ✕ |
ERNIE-4.0-Turbo-8K | ✓ | ✕ |
ERNIE-3.5-8K (即ERNIE-Bot) |
✓ | ✕ |
ERNIE-3.5-8K-0329 | ✓ | ✕ |
ERNIE-3.5-8K-0205 | ✓ | ✕ |
ERNIE-3.5-8K-0613 | ✓ | ✕ |
ERNIE-3.5-8K-Preview | ✓ | ✕ |
ERNIE-3.5-128K | ✓ | ✕ |
ERNIE-Speed-128k | ✓ | ✕ |
ERNIE-Speed-8K (即ERNIE-Speed) |
✓ | ✓ |
ERNIE-Lite-8K-0922 (即ERNIE-Bot-turbo) |
✓ | ✓ |
ERNIE-Lite-8K-0308 (即ERNIE-Lite-8K) |
✓ | ✓ |
ERNIE-Tiny-8K | ✓ | ✓ |
ERNIE-Character-8K | ✓ | ✓ |
ERNIE-Character-Fiction-8K | ✓ | ✕ |
ERNIE-Functions-8K | ✓ | ✓ |
ERNIE Speed-AppBuilder (即EB-turbo-AppBuilder) |
✓ | ✓ |
Gemma-7B-it | ✓ | ✓ |
Yi-34B-Chat | ✓ | ✓ |
BLOOMZ-7B | ✓ | ✓ |
Qianfan-BLOOMZ-7B-compressed | ✓ | ✓ |
Mixtral-8x7B-Instruct | ✓ | ✓ |
Llama-2-7b-chat | ✓ | ✓ |
Llama-2-13b-chat | ✓ | ✓ |
Llama-2-70b-chat | ✓ | ✓ |
Meta-Llama-3-8B | ✓ | ✓ |
Meta-Llama-3-70B | ✓ | ✓ |
Qianfan-Chinese-Llama-2-7B | ✓ | ✓ |
Qianfan-Chinese-Llama-2-13B (即Qianfan-Chinese-Llama-2-13B-v1) |
✓ | ✓ |
Qianfan-Chinese-Llama-2-70B | ✓ | ✓ |
ChatGLM2-6B-32K | ✓ | ✓ |
XuanYuan-70B-Chat-4bit | ✓ | ✓ |
ChatLaw | ✓ | ✓ |
AquilaChat-7B | ✓ | ✓ |
ERNIE-Lite-128K-0419 | ✕ | ✓ |
ERNIE-Lite-8K-0725 | ✕ | ✓ |
ERNIE-Lite-4K-0704 | ✕ | ✓ |
ERNIE-Lite-4K-0516 | ✕ | ✓ |
ERNIE Tiny | ✕ | ✓ |
Gemma-2B-it | ✕ | ✓ |
Qianfan-Chinese-Llama-2-7B-32K | ✕ | ✓ |
Qianfan-Chinese-Llama-2-13B-v2 | ✕ | ✓ |
Qianfan-Llama-2-70B-compressed | ✕ | ✓ |
Linly-Chinese-LLaMA-2-7B | ✕ | ✓ |
Linly-Chinese-LLaMA-2-13B | ✕ | ✓ |
Qianfan-Chinese-Llama-2-1.3B | ✕ | ✓ |
ChatGLM3-6B | ✕ | ✓ |
ChatGLM3-6B-32K | ✕ | ✓ |
ChatGLM2-6B | ✕ | ✓ |
ChatGLM2-6B-INT4 | ✕ | ✓ |
Baichuan2-7B-Chat | ✕ | ✓ |
Baichuan2-13B-Chat | ✕ | ✓ |
XVERSE-13B-Chat | ✕ | ✓ |
DISC-MedLLM | ✕ | ✓ |
Falcon-7B | ✕ | ✓ |
Falcon-40B-Instruct | ✕ | ✓ |
RWKV-4-World | ✕ | ✓ |
RWKV-4-pile-14B | ✕ | ✓ |
RWKV-Raven-14B | ✕ | ✓ |
OpenLLaMA-7B | ✕ | ✓ |
Dolly-12B | ✕ | ✓ |
MPT-7B-Instruct | ✕ | ✓ |
MPT-30B-instruct | ✕ | ✓ |
OA-Pythia-12B-SFT-4 | ✕ | ✓ |
自定义模型 | ✕ | ✓ |
单轮对话
调用示例
默认模型
调用默认模型ERNIE-Lite-8K(即ERNIE-Bot-turbo),无需使用参数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"
# 方式二:【不推荐】使用应用AK/SK鉴权
# 替换下列示例中参数,将应用API_Key、应用Secret key值替换为真实值
#os.environ["QIANFAN_AK"] = "应用API_Key"
#os.environ["QIANFAN_SK"] = "应用Secret_Key"
chat_comp = qianfan.ChatCompletion()
# 调用默认模型,ERNIE-Lite-8K-0922(即ERNIE-Bot-turbo)
resp = chat_comp.do(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")
// 调用默认模型,ERNIE-Lite-8K-0922(即ERNIE-Bot-turbo)
chat := qianfan.NewChatCompletion()
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()
.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: '你好!',
},
],
});
console.log(resp);
}
main();
指定支持预置服务的模型
使用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"
# 方式二:【不推荐】使用应用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(model="ERNIE-3.5-8K", 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("ERNIE-3.5-8K"),
)
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("ERNIE-3.5-8K")
.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: '你好!',
},
],
}, 'ERNIE-Bot-turbo');
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"
# 方式二:【不推荐】使用应用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': 7,
'completion_tokens': 67,
'total_tokens': 74
}
}
你好!有什么我可以帮助你的吗?
你好!有什么我可以帮助你的吗?
{
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(messages=[{ # 调用默认模型,即 ERNIE-Bot-turbo
"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")
// 多轮对话,调用默认模型,即 ERNIE-Bot-turbo
chat := qianfan.NewChatCompletion()
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()
.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() { // 调用默认模型,即 ERNIE-Bot-turbo
const resp = await client.chat({
messages: [
{
role: 'user',
content: '你好!',
},
{
role: "assistant",
content: "你好,请问有什么我可以帮助你的吗?"
},
{
role: "user",
"content": "我在北京,周末可以去哪里玩?"
},
],
});
console.log(resp);
}
main();
返回示例
{
"id": "as-wkg3gtxsjp",
"object": "chat.completion",
"created": 1709887957,
"result": "北京是一个拥有许多历史、文化和自然景观的城市,周末你可以去以下几个地方玩:\n\n1. 故宫:这是中国最大的古代建筑群,是中国古代皇家宫殿的代表,你可以参观各个宫殿,了解中国古代皇室的生活。\n2. 颐和园:这是中国最著名的皇家园林之一,拥有美丽的湖泊和壮观的建筑群。\n3. 长城:作为世界文化遗产,北京段的长城非常著名,你可以选择徒步、骑行或者乘坐缆车等方式去游览。\n4. 圆明园:这是清朝皇家园林的一部分,拥有丰富的文化遗产和美丽的自然风光。\n5. 798艺术区:这是一个现代化的艺术区,有很多艺术展览、画廊和创意工作室,也是北京时尚潮流的聚集地。\n6. 北京欢乐谷:这是一个大型主题公园,有各种刺激的游乐设施和丰富多彩的活动。\n7. 北京鸟巢和水立方:这是北京奥运会的主要体育场馆,是北京的地标性建筑,可以参观并欣赏它们的美丽夜景。\n8. 北京动物园:这是中国最大的动物园之一,拥有各种珍稀动物和美丽的鸟类。\n\n以上是一些适合周末游玩的景点,你可以根据自己的兴趣和时间来选择。此外,北京还有很多小吃和美食,你可以尝试一些当地的特色美食,如烤鸭、炸酱面、豆汁焦圈等等。",
"is_truncated": False,
"need_clear_history": False,
"usage": {"prompt_tokens": 18, "completion_tokens": 285, "total_tokens": 303},
}
北京是一个拥有许多历史、文化和自然景观的城市,有很多地方可以探索。如果你在周末有空,以下是一些建议的景点和活动:
1. 故宫:这是中国最大的古代宫殿之一,拥有丰富的历史和文化遗产。
2. 颐和园:这是一个美丽的皇家园林,拥有壮丽的湖泊和精美的建筑。
3. 长城:北京附近的长城段是许多人向往的地方。你可以选择参加一日游或自驾前往。
4. 798艺术区:这是一个充满艺术气息的地方,有许多画廊、艺术工作室和博物馆。
5. 南锣鼓巷:这是一个充满历史气息的胡同区,有很多小吃、手工艺品和文化遗产店。
6. 玉渊潭公园:这是一个大型公园,环境优美,有很多娱乐设施和活动。
7. 郊区古迹:如妙应寺白塔、太阳宫等,这些地方虽然不那么热闹,但也有其独特的魅力。
除此之外,北京还有很多博物馆、剧院和美食街区,如三里屯、簋街等,你可以根据自己的兴趣和时间来选择。另外,你也可以尝试一些当地的活动,如品尝北京烤鸭、炸酱面等美食,或者参加一些传统文化活动。
希望这些建议对你有所帮助!
我是由百度公司开发的人工智能语言模型,我叫文心一言。我的知识来自于训练数据和算法,旨在为人类提供帮助和启示。如果你有任何问题或需要帮助,请随时提出。
{
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(model="ERNIE-Bot-turbo", 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()
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()
.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 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}}
你好,
有什么我可以帮助你的吗?
{"id":"as-bz14dun5it","object":"chat.completion","created":1710469885,"sentenceId":0,"isEnd":false,"isTruncated":false,"result":"你好,","needClearHistory":false,"usage":{"promptTokens":1,"completionTokens":2,"totalTokens":3}}
{"id":"as-bz14dun5it","object":"chat.completion","created":1710469885,"sentenceId":1,"isEnd":false,"isTruncated":false,"result":"有什么我可以帮助你的吗?","needClearHistory":false,"usage":{"promptTokens":1,"completionTokens":2,"totalTokens":3}}
{"id":"as-bz14dun5it","object":"chat.completion","created":1710469885,"sentenceId":2,"isEnd":true,"isTruncated":false,"result":"","needClearHistory":false,"usage":{"promptTokens":1,"completionTokens":8,"totalTokens":9}}
{
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 }
}
{
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 }
}
{
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 }
}
function调用
调用示例
import os
import qianfan
import json
#通过环境变量初始化认证信息
# 方式一:【推荐】使用安全认证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"
# 定义可被调用函数
def get_file_num(language: str) -> str:
"""获取数据库中指定语言的代码文件数量"""
language_low = language.lower()
language_map = {
"c/c++": 35,
"java": 10,
"javascript": 25,
"python": 35,
"go": 32,
}
return str(language_map.get(language_low, 0))
# 定义函数schema
func_list = [{
"name": "get_file_num", # 函数名称
"description": "获取内部数据库中以某一编程语言编写的文件数量", # 函数描述
"parameters": {
"type": "object",
"properties": { # 参数schema,如果参数为空,设为空字典即可
"language": { # 参数名称
"type": "string", # 参数类型
"description": "代码所运用的编程语言,例如:python、c/c++、go、java" # 参数描述
}
},
"required": ["language"] # 必填参数(无默认值)
}
}]
# 第一轮调用触发function_call
chat_comp = qianfan.Function()
query = "请帮我查询一下数据库中用python撰写的代码文件数量"
msgs = qianfan.QfMessages()
msgs.append(query, role='user')
resp = chat_comp.do(
messages=msgs,
functions=func_list
)
print("function_calling:", resp['body'].get('function_call'))
if resp.get("function_call"):
# 获取函数名称、入参
func_call_result = resp["function_call"]
func_name = func_call_result["name"]
language = json.loads(func_call_result["arguments"]).get("language")
# 调用函数获得函数返回值
func_resp = get_file_num(language)
# 将函数返回值转换成json字符串
func_content = json.dumps({
"return": func_resp
})
# 添加到历史对话记录
msgs.append(resp, role="assistant")
msgs.append(func_content, role="function")
# 再次调用chat_completion
second_resp = chat_comp.do(
messages=msgs,
functions=func_list
)
# 得到答案
print(second_resp['body']['result'])
响应示例
function_calling: {'name': 'get_file_num', 'arguments': '{"language": "python"}'}
数据库中用Python撰写的代码文件数量为35。
参数说明
注意:以下为Python SDK参数说明,其他SDK参数相关说明请参考Go SDK-对话Chat参数相关说明、Java SDK参数相关说明、Node.js SDK参数相关说明。
请求参数
名称 | 类型 | 必填 | 描述 |
---|---|---|---|
messages | List[dict] | 是 | 聊天上下文信息。说明: (1)messages成员不能为空,1个成员表示单轮对话,多个成员表示多轮对话 (2)最后一个message为当前请求的信息,前面的message为历史对话信息 (3)必须为奇数个成员,成员中message的role必须依次为user(or function)、assistant (4)长度的限制: · 参考预置模型服务列表中,输入字符、输入Token等内容 · 其他,message中的content总长度不能超过4800个字符 |
functions | List[dict] | 否 | 一个可触发函数的描述列表,说明: (1)只有当参数model值或endpoint对应的模型为以下时,functions字段有效: · ERNIE-3.5-8K · ERNIE-3.5-8K-0205 · ERNIE-3.5-8K-Preview · ERNIE-3.5-8K-0329 · ERNIE-3.5-8K-0613 · ERNIE-3.5-128K (2)长度限制请参考message说明 |
temperature | float | 否 | 说明: (1)较高的数值会使输出更加随机,而较低的数值会使其更加集中和确定 (2)默认值: · 当model值或endpoint对应的模型为以下时,范围(0, 1.0],默认值为0.8:ERNIE-4.0-8K、ERNIE-4.0-8K-0329、ERNIE-4.0-8K-0104、ERNIE-4.0-8K-Preview、ERNIE-4.0-8K-Preview-0518、ERNIE-4.0-8K-Latest、ERNIE-4.0-8K-0613、ERNIE-4.0-Turbo-8K、ERNIE-3.5-8K、ERNIE-3.5-8K-0329、ERNIE-3.5-8K-0205、ERNIE-3.5-8K-Preview、ERNIE-3.5-128K、 ERNIE-3.5-8K-0613 · 当model值或endpoint对应的模型为ERNIE Lite系列,范围(0, 1.0],默认值为0.95 · 当model值或endpoint对应的模型为ChatLaw,范围是 [0,2.0],默认值是1 · 其他,范围(0, 1.0] |
top_k | float | 否 | 说明: (1)较高的数值会使输出更加随机,而较低的数值会使其更加集中和确定 (2)默认0.95,范围 (0, 1.0],不能为0 (3)建议该参数和top_p只设置1个 (4)以下情况,不支持使用此参数: · 当model值或endpoint对应的模型为ERNIE 3.5系列、ERNIE 4.0系列、ERNIE Lite系列或ChatLaw · 基于ERNIE-Lite-8K SFT调优后的模型 |
top_p | float | 否 | 说明: (1)影响输出文本的多样性,取值越大,生成文本的多样性越强 (2)取值范围 [0, 1.0] (3)默认值: · 当model值或endpoint对应的模型为以下时,默认值为0.8:ERNIE-4.0-8K、ERNIE-4.0-8K-0329、ERNIE-4.0-8K-0104、ERNIE-4.0-8K-Preview、ERNIE-4.0-8K-Preview-0518、ERNIE-4.0-8K-Latest、ERNIE-4.0-8K-0613、ERNIE-4.0-Turbo-8K、ERNIE-3.5-8K、ERNIE-3.5-8K-0329、ERNIE-3.5-8K-0205、ERNIE-3.5-8K-Preview、ERNIE-3.5-128K、ERNIE-3.5-8K-0613 · 当model值为ERNIE Lite系列,默认值为0.7 · 当model值为ChatLaw,表示温度采样的替代方法,其中模型考虑具有 top_p 概率质量的令牌的结果,默认值是1 |
penalty_score | float | 否 | 通过对已生成的token增加惩罚,减少重复生成的现象。说明: (1)值越大表示惩罚越大 (2)取值范围:[1.0, 2.0] (3)默认值,当model值或endpoint对应的模型值为以下时,penalty_score字段默认值为1.0: · ERNIE 3.5系列 · ERNIE 4.0系列 · ERNIE Lite系列 · ERNIE Speed系列 (4)当model值为ChatLaw,不支持此参数 |
stream | bool | 否 | 是否以流式接口的形式返回数据,默认false true:是,以流式接口的形式返回数据 false:否 |
model | string | 否 | 模型名称,用于指定平台支持预置服务的模型,说明: (1)不填写此字段时,默认模型为ERNIE-Lite-8K (2)如果模型为平台支持预置服务的模型,此字段必填,且支持模型名称如下,也可以查看本文支持模型列表中,支持预置服务的模型列: · ERNIE-4.0-8K · ERNIE-4.0-8K-0329 · ERNIE-4.0-8K-0104 · ERNIE-4.0-8K-Preview · ERNIE-4.0-8K-Preview-0518 · ERNIE-4.0-8K-Latest · ERNIE-4.0-8K-0613 · ERNIE-4.0-Turbo-8K · ERNIE-3.5-8K · ERNIE-3.5-8K-0329 · ERNIE-3.5-8K-0205 · ERNIE-3.5-8K-Preview · ERNIE-3.5-8K-0613 · ERNIE-3.5-128K · ERNIE-Speed-8K · ERNIE-Speed-128k · ERNIE-Lite-8K-0308:对应模型为ERNIE-Lite-8K · ERNIE-Tiny-8K · ERNIE-Character-8K · ERNIE-Character-Fiction-8K · ERNIE-Functions-8K · ERNIE Speed-AppBuilder · Gemma-7B-it · Yi-34B-Chat · Meta-Llama-3-8B · Meta-Llama-3-70B · BLOOMZ-7B · Qianfan-BLOOMZ-7B-compressed · Mixtral-8x7B-Instruct · Llama-2-7b-chat · Llama-2-13b-chat · Llama-2-70b-chat · Qianfan-Chinese-Llama-2-7B · Qianfan-Chinese-Llama-2-13B:模型版本为Qianfan-Chinese-Llama-2-13B-v1 · Qianfan-Chinese-Llama-2-70B · ChatGLM2-6B-32K · XuanYuan-70B-Chat-4bit · ChatLaw · AquilaChat-7B |
endpoint | string | 否 | 用于指定用户自行发布的模型服务,包括自行发布平台预置的模型、用户自定义模型。说明: (1)如果指定用户自行发布的模型服务,endpoint字段为必填,目前平台支持自行发布的模型服务,请参考模型列表-用户自行发布的模型服务列表,示例:Falcon-7B (2)用户自行发布服务,该字段值可以通过查看服务地址获取:打开模型服务-在线服务页面,选择创建的服务-点击详情页查看服务地址,endpoint值为 https://aip.baidubce.com/rpc/2.0/ai_custom/v1/wenxinworkshop/chat/ 后面的地址,如下图所示注意: 在创建服务页面,选择模型后,API地址会自动新增个后缀。例如选择模型RWKV-4-World,输入API地址为“test1”,endpoint的取值即为“ngxxxol8_test1”,如下图所示,如何发布服务请参考发布平台预置的模型服务、快速部署自定义模型 |
retry_count | int | 否 | 重试次数,默认1次,说明: 当model值或endpoint对应的模型为ChatLaw,不支持此参数 |
request_timeout | float | 否 | 请求超时时间,默认60秒,说明: 当model值或endpoint对应的模型为ChatLaw,不支持此参数 |
backoff_factor | float | 否 | 请求重试参数,用于指定重试的策略,默认为0,说明: 当model值或endpoint对应的模型为ChatLaw,不支持此参数 |
system | string | 否 | 模型人设,主要用于人设设定,例如,你是xxx公司制作的AI助手,说明: (1)只有当参数model值或endpoint对应的模型为以下时,system字段有效: · ERNIE 4.0系列 · ERNIE 3.5系列 · ERNIE Lite系列 · ERNIE Speed系列 · ERNIE-Tiny-8K · ERNIE-Character-8K-0321 · ERNIE Speed-AppBuilder (2)长度限制请参考message说明 (3)如果同时使用system和functions,可能暂无法保证使用效果,持续进行优化 |
stop | List[string] | 否 | 生成停止标识。当模型生成结果以stop中某个元素结尾时,停止文本生成。说明: (1)每个元素长度不超过20字符。 (2)最多4个元素 (3)以下情况,不支持使用此参数: · 当model值或endpoint对应的模型为ChatLaw |
disable_search | bool | 否 | 是否强制关闭实时搜索功能,说明: (1)默认false,表示不关闭 (2)当model值或endpoint对应的模型为以下时,该字段有效: · ERNIE-4.0-8K · ERNIE-4.0-8K-0329 · ERNIE-4.0-8K-0104 · ERNIE-4.0-8K-Preview · ERNIE-4.0-8K-Preview-0518 · ERNIE-4.0-8K-Latest · ERNIE-4.0-8K-0613 · ERNIE-3.5-8K · ERNIE-3.5-8K-0329 · ERNIE-3.5-8K-0613 · ERNIE-3.5-8K-0205 · ERNIE-3.5-8K-Preview · ERNIE-3.5-128K |
enable_citation | bool | 否 | 是否开启上角标返回,说明: (1)开启后,有概率触发搜索溯源信息search_info,search_info内容见返回参数介绍 (2)默认false,不开启 (3)当model值或endpoint对应的模型为以下时,该字段有效: · ERNIE-4.0-8K · ERNIE-4.0-8K-0329 · ERNIE-4.0-8K-0104 · ERNIE-4.0-8K-Preview · ERNIE-4.0-8K-Preview-0518 · ERNIE-4.0-8K-Latest · ERNIE-4.0-8K-0613 · ERNIE-4.0-Turbo-8K · ERNIE-3.5-8K · ERNIE-3.5-8K-0329 · ERNIE-3.5-8K-0205 · ERNIE-3.5-8K-0613 · ERNIE-3.5-8K-Preview · ERNIE-3.5-128K |
enable_trace | bool | 否 | 是否返回搜索溯源信息,说明: (1)如果开启,在触发了搜索增强的场景下,会返回搜索溯源信息search_info,search_info内容见响应参数介绍 (2)默认false,表示不开启 (3)当model值或endpoint对应的模型为以下时,此字段有效: · ERNIE-4.0-8K · ERNIE-4.0-8K-0329 · ERNIE-4.0-8K-0104 · ERNIE-4.0-8K-Preview · ERNIE-4.0-8K-Preview-0518 · ERNIE-4.0-8K-Latest · ERNIE-4.0-8K-0613 · ERNIE-4.0-Turbo-8K · ERNIE-3.5-8K · ERNIE-3.5-8K-0329 · ERNIE-3.5-8K-0205 · ERNIE-3.5-8K-0613 · ERNIE-3.5-8K-Preview · ERNIE-3.5-128K |
min_output_tokens | int | 否 | 指定模型最小输出token数,说明: (1)当model值或endpoint对应的模型为ERNIE-Lite-8K-0308、ERNIE-Speed-8K或ERNIE-Tiny-8K时,该字段有效 (2)该参数取值范围[2, 2048] |
max_output_tokens | int | 否 | 指定模型最大输出token数,说明:支持模型及限制,可参考预置模型服务列表中,输出区间、默认最大输出Tokens值 |
response_format | string | 否 | 指定响应内容的格式,说明: (1)当model值或endpoint对应的模型为以下时,该字段有效: · ERNIE-4.0-8K · ERNIE-4.0-8K-0329 · ERNIE-4.0-8K-0104 · ERNIE-4.0-8K-Preview · ERNIE-4.0-8K-Preview-0518 · ERNIE-4.0-8K-Latest · ERNIE-4.0-8K-0613 · ERNIE-4.0-Turbo-8K · ERNIE-3.5-8K · ERNIE-3.5-8K-0329 · ERNIE-3.5-8K-0205 · ERNIE-3.5-8K-0613 · ERNIE-3.5-8K-Preview · ERNIE-3.5-128K (2)可选值: · json_object:以json格式返回,可能出现不满足效果情况 · text:以文本格式返回 (3)如果不填写参数response_format值,默认为text |
user_id | string | 否 | 表示最终用户的唯一标识符 |
extra_parameters | Object | 否 | 第三方大模型推理高级参数,依据第三方大模型厂商不同而变化,说明: 当model值或endpoint对应的模型为ChatLaw,该字段必填 |
tool_choice | tool_choice | 否 | 在函数调用场景下,提示大模型选择指定的函数(非强制),说明: (1)指定的函数名必须在functions中存在 (2)只有当参数model值或endpoint对应的模型为ERNIE 3.5系列时,此字段有效,如ERNIE-3.5-8K、ERNIE-3.5-8K-0205等 |
logprobs | bool | 否 | 是否在输出token的时候返回对数概率,说明: (1)只有先经过SFT模型训练后发布服务,才能使用该参数 (2)可选值: · true:在响应消息体中返回该内容 · false:不返回,默认为false (3)endpoint对应的模型如下: · Qianfan-Chinese-Llama-2-13b-v2 · Qianfan-Chinese-Llama-2-7b-32K · Qianfan-Chinese-Llama-2-1.3B · ChatGLM2-6B · Baichuan2-7B-Chat · Baichuan2-13B-Chat |
top_logprobs | int | 否 | 指定为每个token位置返回多少最有可能的token,说明: (1)只有先经过SFT模型训练后发布服务,才能使用该参数 (2)当logprobs为true,该参数必填 (3)取值范围:[0,5] (4)endpoint对应的模型如下: · Qianfan-Chinese-Llama-2-13b-v2 · Qianfan-Chinese-Llama-2-7b-32K · Qianfan-Chinese-Llama-2-1.3B · ChatGLM2-6B · Baichuan2-7B-Chat · Baichuan2-13B-Chat |
frequency_penalty | float | 否 | 正值根据迄今为止文本中的现有频率对新token进行惩罚,从而降低模型逐字重复同一行的可能性;说明: (1)默认0.1,取值范围[-2.0, 2.0] (2)只有当参数当model值或endpoint对应的模型为以下时,该字段有效: · ERNIE-Lite-8K-0308 : · ERNIE-Lite-8K-0922 : · ERNIE-Lite-128K-0419 : · ERNIE-Tiny-8K : · ERNIE-Speed-8K : · ERNIE-Speed-128K |
presence_penalty | float | 否 | 正值根据token记目前是否出现在文本中来对其进行惩罚,从而增加模型谈论新主题的可能性;说明: (1)默认0.0,取值范围[-2.0, 2.0] (2)只有当参数当model值或endpoint对应的模型为以下时,该字段有效: · ERNIE-Lite-8K-0308 : · ERNIE-Lite-8K-0922 : · ERNIE-Lite-128K-0419 : · ERNIE-Tiny-8K : · ERNIE-Speed-8K : · ERNIE-Speed-128K |
enable_system_memory | bool | 否 | 是否开启系统记忆,说明: (1)可选值: false:未开启,默认false true:表示开启,开启后,system_memory_id字段必填 (2)当model值或endpoint对应的模型值为以下时,该字段有效: · ERNIE 3.5系列 · ERNIE 4.0系列 |
system_memory_id | string | 否 | 系统记忆ID,用于读取对应ID下的系统记忆,读取到的记忆文本内容会拼接message参与请求推理,说明 (1)当model值或endpoint对应的模型值为以下时,该字段有效: · ERNIE 3.5系列 · ERNIE 4.0系列 |
messages说明
名称 | 类型 | 必填 | 描述 |
---|---|---|---|
role | string | 是 | 当前支持以下: user: 表示用户 assistant: 表示对话助手 function: 表示函数 |
content | string | 是 | 对话内容,当前message存在function_call时可以为空,其他场景不能为空 |
name | string | 否 | message作者;当role=function时,必填,且是响应内容中function_call中的name |
function_call | dict | 否 | 函数调用,function call场景下第一轮对话的返回,第二轮对话作为历史信息在message中传入 |
functions说明
名称 | 类型 | 必填 | 描述 |
---|---|---|---|
name | string | 是 | 函数名 |
description | string | 是 | 函数描述 |
parameters | object | 是 | 函数请求参数,说明: (1)JSON Schema 格式,参考JSON Schema描述 (2)如果函数没有请求参数,parameters值格式如下: {"type": "object","properties": {}} |
responses | object | 否 | 函数响应参数,JSON Schema 格式,参考JSON Schema描述 |
examples | List[List[dict]] | 否 | function调用的一些历史示例,说明: (1)可以提供正例(正常触发)和反例(无需触发)的example ·正例:从历史请求数据中获取 ·反例: 当role = user,不会触发请求的query 当role = assistant,有固定的格式。function_call的name为空,arguments是空对象:"{}",thought可以填固定的:"我不需要调用任何工具" (2)兼容之前的 List[dict] 格式 |
examples说明
名称 | 类型 | 必填 | 描述 |
---|---|---|---|
role | string | 是 | 当前支持以下: user: 表示用户 assistant: 表示对话助手 function: 表示函数 |
content | string | 是 | 对话内容,当前message存在function_call时可以为空,其他场景不能为空 |
name | string | 否 | message作者;当role=function时,必填,且是响应内容中function_call中的name |
function_call | dict | 否 | 函数调用,function call场景下第一轮对话的返回,第二轮对话作为历史信息在message中传入 |
tool_choice说明
名称 | 类型 | 必填 | 描述 |
---|---|---|---|
type | string | 是 | 指定工具类型,function |
function | function | 是 | 指定要使用的函数 |
name | string | 是 | 指定要使用的函数名 |
function_call说明
名称 | 类型 | 必填 | 描述 |
---|---|---|---|
name | string | 是 | 触发的function名 |
arguments | string | 是 | 请求参数 |
thoughts | string | 否 | 模型思考过程 |
extra_parameters说明
名称 | 类型 | 必须 | 描述 |
---|---|---|---|
use_keyword | bool | 是 | 表示是否提取问答关键词以加强模型推理。使用use_keyword参数,可能会导致以下情况: (1)模型回答通识性问题下降 (2)在接口响应前,获取到提取的问答关键词,并将内容拼接到prompt中,最终接口返回参数prompt_tokens数会比用户输入多 |
use_reference | bool | 是 | 表示是否使用参考法条以加强推理。使用use_reference参数,可能会导致以下情况: (1)模型回答通识性问题下降 (2)在接口响应前,获取到参考法条,并将内容拼接到prompt中,最终接口返回参数prompt_tokens数会比用户输入多 |
返回参数
名称 | 类型 | 描述 |
---|---|---|
id | string | 本轮对话的id |
object | string | 回包类型 chat.completion:多轮对话返回 |
created | int | 时间戳 |
sentence_id | int | 表示当前子句的序号。只有在流式接口模式下会返回该字段。 |
is_end | bool | 表示当前子句是否是最后一句。只有在流式接口模式下会返回该字段 |
is_truncated | bool | 当前生成的结果是否被截断 |
finish_reason | string | 输出内容标识,说明: (1)当model值或endpoint对应的模型为ERNIE-3.5-8K、ERNIE-4.0-8K或ERNIE-Functions-8K时,会返回该字段 (2)标识说明: · normal:输出内容完全由大模型生成,未触发截断、替换 · stop:输出结果命中入参stop中指定的字段后被截断 · length:达到了最大的token数,根据EB返回结果is_truncated来截断 · content_filter:输出内容被截断、兜底、替换为**等 · function_call:调用了funtion call功能 |
search_info | dict | 搜索数据,当请求参数enable_citation为true并且触发搜索时,会返回该字段 |
result | string | 对话返回结果,说明: 如果使用ChatLaw模型,对话返回结果限制在1000个token |
need_clear_history | bool | 表示用户输入是否存在安全,是否关闭当前会话,清理历史会话信息。 true:是,表示用户输入存在安全风险,建议关闭当前会话,清理历史会话信息 false:否,表示用户输入无安全风险 |
flag | int | 说明:返回flag表示触发安全 |
ban_round | int | 当need_clear_history为true时,此字段会告知第几轮对话有敏感信息,如果是当前问题,ban_round=-1 |
usage | usage | token统计信息 |
search_info说明
名称 | 类型 | 描述 |
---|---|---|
search_results | List(search_result) | 搜索结果列表 |
search_result说明
名称 | 类型 | 描述 |
---|---|---|
index | int | 序号 |
url | string | 搜索结果URL |
title | string | 搜索结果标题 |
usage说明
名称 | 类型 | 描述 |
---|---|---|
prompt_tokens | int | 问题tokens数 |
completion_tokens | int | 回答tokens数 |
total_tokens | int | tokens总数 |