ChatLaw
ChatLaw由壹万卷公司与北大深研院研发的法律行业大模型,在开源版本基础上进行了进一步架构升级,融入了法律意图识别、法律关键词提取、CoT推理增强等模块,实现了效果提升,以满足法律问答、法条检索等应用需求。本文介绍了相关API。
说明: 当前服务版本仅支持体验试用,暂时无法支持大规模调用,如有更高的并发需求请提交工单与我们联系。
功能介绍
调用本接口,发起一次对话请求。
在线调试
百度智能云千帆提供了 API在线调试平台-示例代码 ,用于帮助开发者调试接口,平台集成快速检索、查看开发文档、查看在线调用的请求内容和返回结果、复制和下载示例代码等功能,简单易用,更多内容请查看API在线调试介绍。
SDK调用
使用说明
本文内容适用千帆Python、Go、Java和Node.js SDK,SDK调用流程请参考SDK安装及使用流程。
调用示例(单轮)
使用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="ChatLaw", messages=[{
"role": "user",
"content": "如果一个人故意驾车向人群冲撞,但没有造成重大损失,会被怎样处罚?"
}],extra_parameters={"use_keyword":False,"use_reference":False})
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("ChatLaw"),
)
request := qianfan.ChatCompletionRequest{
Messages: []qianfan.ChatCompletionMessage{
qianfan.ChatCompletionUserMessage("如果一个人故意驾车向人群冲撞,但没有造成重大损失,会被怎样处罚?"),
},
}
request.SetExtra(map[string]interface{}{
"extra_parameters": map[string]interface{}{
"use_keyword": false,
"use_reference": false,
},
})
resp, _ := chat.Do(
context.TODO(),
&request,
)
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("ChatLaw")
.addMessage("user", "如果一个人故意驾车向人群冲撞,但没有造成重大损失,会被怎样处罚?")
.addExtraParameter("use_keyword",false)
.addExtraParameter("use_reference",false)
.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: '如果一个人故意驾车向人群冲撞,但没有造成重大损失,会被怎样处罚?',
},
],
extra_parameters: {
"use_keyword":false,
"use_reference":false
}
}, 'ChatLaw');
console.log(resp);
}
main();
返回示例(单轮)
{
'id': 'as-4v1h587fyv',
'object': 'chat.completion',
'created': 1695021339,
'result': '如果有人故意驾车向人群冲撞,但又没有造成重大损失,可能会被处以3年以下的有期徒刑。',
'is_truncated': False,
'need_clear_history': False,
'usage': {
'prompt_tokens': 7,
'completion_tokens': 67,
'total_tokens': 74
}
}
如果有人故意驾车向人群冲撞,但又没有造成重大损失,可能会被处以3年以下的有期徒刑。
如果有人故意驾车向人群冲撞,但又没有造成重大损失,可能会被处以3年以下的有期徒刑。
{
id: 'as-ejhrawp3hk',
object: 'chat.completion',
created: 1718957145,
result: '如果一个人故意驾车向人群冲撞,但没有造成重大损失,可能会被判以故意伤害罪或危害公共安全罪。具体的处罚要根据情节和具体证据而定。根据《中华人民共和国刑法》规定:“故意驾驶机动车,故意造成重大损失的,处十年以上有期徒刑或者无期徒刑,并处罚金或者没收财产。故意驾驶机动车,情节严重的,处五年以下有期徒刑或者拘役,并处罚金。”',
is_truncated: false,
need_clear_history: false,
usage: { prompt_tokens: 99, completion_tokens: 74, total_tokens: 173 }
}
调用示例(多轮)
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="ChatLaw",messages=[{
"role": "user",
"content": "如果一个人故意驾车向人群冲撞,但没有造成重大损失,会被怎样处罚?"
},
{
"role": "assistant",
"content": "根据问题描述和相关法律,即使没有造成死亡等重伤后果,仍然属于危险驾驶,情况也构成犯罪危险驾驶。从道路交通安全法来看,司乘人员严禁随意跳车和钻车窗口。无论何时,都需要提前落实转车准备工作,包括系紧安全带,关好门窗及天窗,确认手刹和灯光状态,摆正坐姿与座椅角度等。同时需要警惕闯红灯,乱变道,超速行驶等恶习。"
},
{
"role": "user",
"content": "如果司机处于醉酒驾驶状态呢"
},
],extra_parameters={"use_keyword":False,"use_reference":False})
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("ChatLaw"),
)
request := qianfan.ChatCompletionRequest{
Messages: []qianfan.ChatCompletionMessage{
qianfan.ChatCompletionUserMessage("如果一个人故意驾车向人群冲撞,但没有造成重大损失,会被怎样处罚?"),
qianfan.ChatCompletionAssistantMessage("根据问题描述和相关法律,即使没有造成死亡等重伤后果,仍然属于危险驾驶,情况也构成犯罪危险驾驶。从道路交通安全法来看,司乘人员严禁随意跳车和钻车窗口。无论何时,都需要提前落实转车准备工作,包括系紧安全带,关好门窗及天窗,确认手刹和灯光状态,摆正坐姿与座椅角度等。同时需要警惕闯红灯,乱变道,超速行驶等恶习。"),
qianfan.ChatCompletionUserMessage("如果司机处于醉酒驾驶状态呢"),
},
}
request.SetExtra(map[string]interface{}{
"extra_parameters": map[string]interface{}{
"use_keyword": false,
"use_reference": false,
},
})
resp, _ := chat.Do(
context.TODO(),
&request,
)
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("ChatLaw")
.addMessage("user", "如果一个人故意驾车向人群冲撞,但没有造成重大损失,会被怎样处罚?")
.addMessage("assistant", "根据问题描述和相关法律,即使没有造成死亡等重伤后果,仍然属于危险驾驶,情况也构成犯罪危险驾驶。从道路交通安全法来看,司乘人员严禁随意跳车和钻车窗口。无论何时,都需要提前落实转车准备工作,包括系紧安全带,关好门窗及天窗,确认手刹和灯光状态,摆正坐姿与座椅角度等。同时需要警惕闯红灯,乱变道,超速行驶等恶习。")
.addMessage("user", "如果司机处于醉酒驾驶状态呢")
.addExtraParameter("use_keyword",false)
.addExtraParameter("use_reference",false)
.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": "如果司机处于醉酒驾驶状态呢"
}
],
extra_parameters: {
"use_keyword":false,
"use_reference":false
}
},'ChatLaw');
console.log(resp);
}
main();
返回示例(多轮)
{
'id': 'as-pnm98mj6jk',
'object': 'chat.completion',
'created': 1718953495,
'result': '如果司机处于醉酒驾驶状态,则会被认定为危险驾驶,根据《中华人民共和国刑法》规定,将会依法给予刑事处罚。根据《机动车交通事故责任强制保险条例》规定,醉酒驾驶者会被认定为犯罪行为,属于危险驾驶。从道路交通安全法来看,司乘人员的行为直接关系到自己和他人的安全,所以无论何时都需要时刻提醒自己,严格遵守道路交通安全法律。',
'is_truncated': False,
'need_clear_history': False,
'usage': {'prompt_tokens': 194, 'completion_tokens': 67, 'total_tokens': 261},
}
如果司机处于醉酒驾车状态,则属于醉酒驾车,属于危险驾驶行为之一,根据道路交通安全法及刑法规定,醉酒驾车属于危险驾驶行为,将被处罚,如果造成后果,将被判刑和罚款。
如果司机处于醉酒驾驶状态,则会被认定为危险驾驶,根据《中华人民共和国刑法》规定,将会依法给予刑事处罚。根据《机动车交通事故责任强制保险条例》规定,醉酒驾驶者会被认定为犯罪行为,属于危险驾驶。从道路交通安全法来看,司乘人员的行为直接关系到自己和他人的安全,所以无论何时都需要时刻提醒自己,严格遵守道路交通安全法律。
{
id: 'as-cbdrm45i20',
object: 'chat.completion',
created: 1718957271,
result: '如果有人存在醉酒驾车的行为,属于醉酒驾驶的状态,这是严重违反道路交通安全法的行为,属于危险驾驶罪。',
is_truncated: false,
need_clear_history: false,
usage: { prompt_tokens: 194, completion_tokens: 21, total_tokens: 215 }
}
调用示例(流式)
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="ChatLaw", messages=[{
"role": "user",
"content": "如果一个人故意驾车向人群冲撞,但没有造成重大损失,会被怎样处罚?"
}],extra_parameters={"use_keyword":False,"use_reference":False}, 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("ChatLaw"),
)
request := qianfan.ChatCompletionRequest{
Messages: []qianfan.ChatCompletionMessage{
qianfan.ChatCompletionUserMessage("如果一个人故意驾车向人群冲撞,但没有造成重大损失,会被怎样处罚?"),
},
}
request.SetExtra(map[string]interface{}{
"extra_parameters": map[string]interface{}{
"use_keyword": false,
"use_reference": false,
},
})
resp, _ := chat.Stream(
context.TODO(),
&request,
)
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("ChatLaw")
.addMessage("user", "如果一个人故意驾车向人群冲撞,但没有造成重大损失,会被怎样处罚?")
.addExtraParameter("use_keyword",false)
.addExtraParameter("use_reference",false)
.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": "如果一个人故意驾车向人群冲撞,但没有造成重大损失,会被怎样处罚?"
}
],
extra_parameters: {
"use_keyword":false,
"use_reference":false
},
stream: true, //启用流式返回
}, 'ChatLaw');
for await (const chunk of resp) {
console.log(chunk);
}
}
main();
返回示例(流式)
{'id': 'as-306hzbjqk4', 'object': 'chat.completion', 'created': 1718954191, 'sentence_id': 0, 'is_end': False, 'is_truncated': False, 'result': '如果一个人故意', 'need_clear_history': False, 'usage': {'prompt_tokens': 99, 'completion_tokens': 2, 'total_tokens': 101}}
{'id': 'as-306hzbjqk4', 'object': 'chat.completion', 'created': 1718954192, 'sentence_id': 1, 'is_end': False, 'is_truncated': False, 'result': '驾车向人群冲撞,但没有造成重大损失,可能会受到刑事处罚。', 'need_clear_history': False, 'usage': {'prompt_tokens': 99, 'completion_tokens': 17, 'total_tokens': 116}}
{'id': 'as-306hzbjqk4', 'object': 'chat.completion', 'created': 1718954192, 'sentence_id': 2, 'is_end': False, 'is_truncated': False, 'result': '具体的处罚要根据具体情况而定,包括但不限于拘留、罚款、缓刑等。', 'need_clear_history': False, 'usage': {'prompt_tokens': 99, 'completion_tokens': 31, 'total_tokens': 130}}
{'id': 'as-306hzbjqk4', 'object': 'chat.completion', 'created': 1718954192, 'sentence_id': 3, 'is_end': True, 'is_truncated': False, 'result': '', 'need_clear_history': False, 'usage': {'prompt_tokens': 99, 'completion_tokens': 32, 'total_tokens': 131}}
根据中国
《刑法》的规定,危险驾驶的情节较轻的,可以判处拘役或者罚金,情节特别轻微或者有其他可以从轻处罚情节的,可以免于
处罚。
因此,如果一个人没有造成重大损失,可能会被处以拘役或者罚金。
{"sentenceId":0,"isEnd":false,"isTruncated":false,"result":"根据刑法","needClearHistory":false,"usage":{"promptTokens":99,"completionTokens":2,"totalTokens":101},"id":"as-skzmny1kpt","object":"chat.completion","created":1718956119,"headers":{"Access-Control-Allow-Headers":"Content-Type",...}{"sentenceId":1,"isEnd":false,"isTruncated":false,"result":"第136条的规定,故意驾车向人群冲撞且造成重大损失的,应处死刑;","needClearHistory":false,"usage":{"promptTokens":99,"completionTokens":23,"totalTokens":122},"id":"as-skzmny1kpt","object":"chat.completion","created":1718956119,"headers":{"Access-Control-Allow-Headers":"Content-Type",...}{"sentenceId":2,"isEnd":false,"isTruncated":false,"result":"造成严重后果的,处无期徒刑或者10年以上有期徒刑;","needClearHistory":false,"usage":{"promptTokens":99,"completionTokens":34,"totalTokens":133},"id":"as-skzmny1kpt","object":"chat.completion","created":1718956119,"headers":{"Access-Control-Allow-Headers":"Content-Type",...}{"sentenceId":3,"isEnd":false,"isTruncated":false,"result":"情节较轻的,则处5年以上10年以下有期徒刑。","needClearHistory":false,"usage":{"promptTokens":99,"completionTokens":47,"totalTokens":146},"id":"as-skzmny1kpt","object":"chat.completion","created":1718956120,"headers":{"Access-Control-Allow-Headers":"Content-Type",...}{"sentenceId":4,"isEnd":false,"isTruncated":false,"result":"如果故意驾车向人群冲撞但没有造成重大损失,可以以危害公共安全罪定罪处罚。","needClearHistory":false,"usage":{"promptTokens":99,"completionTokens":66,"totalTokens":165},"id":"as-skzmny1kpt","object":"chat.completion","created":1718956120,"headers":{"Access-Control-Allow-Headers":"Content-Type",...}{"sentenceId":5,"isEnd":false,"isTruncated":false,"result":"具体量刑应当根据案件的实际情况和情节进行综合考虑。","needClearHistory":false,"usage":{"promptTokens":99,"completionTokens":77,"totalTokens":176},"id":"as-skzmny1kpt","object":"chat.completion","created":1718956120,"headers":{"Access-Control-Allow-Headers":"Content-Type",...}{"sentenceId":6,"isEnd":true,"isTruncated":false,"result":"","needClearHistory":false,"usage":{"promptTokens":99,"completionTokens":78,"totalTokens":177},"id":"as-skzmny1kpt","object":"chat.completion","created":1718956120,"headers":{"Access-Control-Allow-Headers":"Content-Type",...}
{
headers: {...},
id: 'as-ek8p82ewzb',
object: 'chat.completion',
created: 1718959013,
sentence_id: 0,
is_end: false,
is_truncated: false,
result: '如果行为人',
need_clear_history: false,
usage: { prompt_tokens: 99, completion_tokens: 2, total_tokens: 101 }
}
{
headers: {...},
id: 'as-ek8p82ewzb',
object: 'chat.completion',
created: 1718959014,
sentence_id: 1,
is_end: false,
is_truncated: false,
result: '故意驾车向人群冲撞,但没有造成重大损失,其行为人已经违反了故意毁坏财物罪、以危险方法危害公共安全罪等罪名,根据',
need_clear_history: false,
usage: { prompt_tokens: 99, completion_tokens: 32, total_tokens: 131 }
}
{
headers: {...},
id: 'as-ek8p82ewzb',
object: 'chat.completion',
created: 1718959014,
sentence_id: 2,
is_end: false,
is_truncated: false,
result: '《中华人民共和国刑法》的规定,将被处罚金或者判处有期徒刑。',
need_clear_history: false,
usage: { prompt_tokens: 99, completion_tokens: 44, total_tokens: 143 }
}
{
headers: {...},
id: 'as-ek8p82ewzb',
object: 'chat.completion',
created: 1718959015,
sentence_id: 3,
is_end: false,
is_truncated: false,
result: '处罚金额由法院决定,判决结果也由法院最终决定。',
need_clear_history: false,
usage: { prompt_tokens: 99, completion_tokens: 57, total_tokens: 156 }
}
{
headers: {...},
id: 'as-ek8p82ewzb',
object: 'chat.completion',
created: 1718959015,
sentence_id: 4,
is_end: false,
is_truncated: false,
result: '但具体刑罚的轻重,需要根据具体案情来判定。',
need_clear_history: false,
usage: { prompt_tokens: 99, completion_tokens: 70, total_tokens: 169 }
}
{
headers: {...},
id: 'as-ek8p82ewzb',
object: 'chat.completion',
created: 1718959015,
sentence_id: 5,
is_end: true,
is_truncated: false,
result: '',
need_clear_history: false,
usage: { prompt_tokens: 99, completion_tokens: 71, total_tokens: 170 }
}
请求参数
注意:以下为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总长度不能超过8000个字符 |
model | string | 否 | 模型名称,用于指定平台支持预置服务的模型,说明:调用本文API,该字段为固定值ChatLaw |
temperature | float | 否 | 说明: (1)较高的数值会使输出更加随机,而较低的数值会使其更加集中和确定 (2) 范围(0, 2.0],默认值为 1 |
top_p | float | 否 | 说明: (1)温度采样的替代方法,核采样,说明: (1)取值范围 [0,1.0],其中模型考虑具有 top_p 概率质量的令牌的结果 (2)默认值1 |
stream | bool | 否 | 是否以流式接口的形式返回数据,默认False · True:是,以流式接口的形式返回数据 · False:否 |
user_id | string | 否 | 表示最终用户的唯一标识符 |
extra_parameters | dict | 是 | 第三方大模型推理高级参数,依据第三方大模型厂商不同而变化 |
message说明
名称 | 类型 | 描述 |
---|---|---|
role | string | 当前支持以下: user: 表示用户 assistant: 表示对话助手 |
content | 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 | 表示当前子句是否是最后一句。只有在流式接口模式下会返回该字段 |
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/chatlaw
请求方式: 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总长度不能超过8000 个字符 |
stream | bool | 否 | 是否以流式接口的形式返回数据,默认false |
temperature | float | 否 | 要使用的采样温度,说明: (1)较高的数值会使输出更加随机,而较低的数值会使其更集中,更具确定性 (2)范围 [0,2.0],默认值为 1 |
top_p | float | 否 | 温度采样的替代方法,核采样,说明: (1)取值范围 [0,1.0],其中模型考虑具有 top_p 概率质量的令牌的结果 (2)默认值1 |
user_id | string | 否 | 表示最终用户的唯一标识符 |
extra_parameters | Object | 是 | 第三方大模型推理高级参数,依据第三方大模型厂商不同而变化 |
message说明
名称 | 类型 | 描述 |
---|---|---|
role | string | 当前支持以下: user: 表示用户 assistant: 表示对话助手 |
content | 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 | 表示当前子句是否是最后一句。只有在流式接口模式下会返回该字段 |
result | string | 对话返回结果,当前对话返回结果限制在1000个token |
need_clear_history | bool | 表示用户输入是否存在安全,是否关闭当前会话,清理历史会话信息 true:是,表示用户输入存在安全风险,建议关闭当前会话,清理历史会话信息 false:否,表示用户输入无安全风险 |
ban_round | int | 当need_clear_history为true时,此字段会告知第几轮对话有敏感信息,如果是当前问题,ban_round=-1 |
usage | usage | token统计信息,由第三方模型本身负责计算 |
usage说明
名称 | 类型 | 描述 |
---|---|---|
prompt_tokens | int | 问题tokens数(包含历史QA) |
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/chatlaw?access_token=[步骤一调用接口获取的access_token] -d '{
"messages": [
{"role":"user","content": "如果一个人故意驾车向人群冲撞,但没有造成重大损失,会被怎样处罚?"}
],
"extra_parameters":{
"use_keyword":true,
"use_reference":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/chatlaw?access_token=" + get_access_token()
payload = json.dumps({
"messages": [{
"role": "user",
"content": "如果一个人故意驾车向人群冲撞,但没有造成重大损失,会被怎样处罚?"
}],
"extra_parameters": {
"use_keyword": True,
"use_reference": True
}
})
headers = {
'Content-Type': 'application/json'
}
response = requests.request("POST", url, headers=headers, data=payload)
print(response.text)
if __name__ == '__main__':
main()
响应示例(单轮)
HTTP/1.1 200 OK
Date: Mon, 12 Apr 2021 06:27:55 GMT
Content-Type: application/json;charset=utf-8
X-Aipe-Self-Def: eb_total_tokens:741-id:as-z046y3u8p9
Statement: AI-generated
{
"id":"as-z046y3u8p9",
"object":"chat.completion",
"created":1701325384,
"result":"根据问题描述和相关法律,即使没有造成死亡等重伤后果,仍然属于危险驾驶,情况也构成犯罪危险驾驶。从道路交通安全法来看,司乘人员严禁随意跳车和钻车窗口。无论何时,都需要提前落实转车准备工作,包括系紧安全带,关好门窗及天窗,确认手刹和灯光状态,摆正坐姿与座椅角度等。同时需要警惕闯红灯,乱变道,超速行驶等恶习。",
"is_truncated":false,
"need_clear_history":false,
"is_safe":0,
"usage":{
"prompt_tokens":587,
"completion_tokens":154,
"total_tokens":741
}
}
请求示例(多轮)
# 步骤一,获取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/chatlaw?access_token=[步骤一调用接口获取的access_token] -d '{
"messages": [
{"role":"user","content":"如果一个人故意驾车向人群冲撞,但没有造成重大损失,会被怎样处罚?"},
{"role":"assistant","content":"根据问题描述和相关法律,即使没有造成死亡等重伤后果,仍然属于危险驾驶,情况也构成犯罪危险驾驶。从道路交通安全法来看,司乘人员严禁随意跳车和钻车窗口。无论何时,都需要提前落实转车准备工作,包括系紧安全带,关好门窗及天窗,确认手刹和灯光状态,摆正坐姿与座椅角度等。同时需要警惕闯红灯,乱变道,超速行驶等恶习。"},
{"role":"user","content": "如果司机处于醉酒驾驶状态呢"}
],
"extra_parameters":{
"use_keyword":true,
"use_reference":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/chatlaw?access_token=" + get_access_token()
payload = json.dumps({
"messages": [
{
"role": "user",
"content": "如果一个人故意驾车向人群冲撞,但没有造成重大损失,会被怎样处罚?"
},
{
"role": "assistant",
"content": "根据问题描述和相关法律,即使没有造成死亡等重伤后果,仍然属于危险驾驶,情况也构成犯罪危险驾驶。从道路交通安全法来看,司乘人员严禁随意跳车和钻车窗口。无论何时,都需要提前落实转车准备工作,包括系紧安全带,关好门窗及天窗,确认手刹和灯光状态,摆正坐姿与座椅角度等。同时需要警惕闯红灯,乱变道,超速行驶等恶习。"
},
{
"role": "user",
"content": "如果司机处于醉酒驾驶状态呢"
}
],
"extra_parameters":{
"use_keyword":True,
"use_reference":True
}
})
headers = {
'Content-Type': 'application/json'
}
response = requests.request("POST", url, headers=headers, data=payload)
print(response.text)
if __name__ == '__main__':
main()
响应示例(多轮)
HTTP/1.1 200 OK
Date: Mon, 12 Apr 2021 06:27:55 GMT
Content-Type: application/json;charset=utf-8
X-Aipe-Self-Def: eb_total_tokens:1450-id:as-f3shsukvc2
Statement: AI-generated
{
"id":"as-f3shsukvc2",
"object":"chat.completion",
"created":1701325502,
"result":"根据这三种规定,饮酒驾驶机动车将面临相应的刑事责任及相应的资格吊销和业务禁止。如果该驾人造成了严重的交通事故,还可能涉嫌危害运输安全罪等。对于交通事故责任的责任判断,一般适用“机械比对说”原则:首先,判断谁是事故责任方,须考虑双方都做出过错事实的推导。那么最为直接、明晰的办法就是比较双方行为之间事故产生的机械联系程度,认定哪一个最小化了事故发生概率。换言之,把双方作为单独试探主体所做的决策排除掉外界干扰,分析这种决策如何减少行为者承担危险的必要性。而对于饮酒驾驶,已经足够地解释清楚其引起交通事故的风险了。",
"is_truncated":false,
"need_clear_history":false,
"is_safe":0,
"usage":{
"prompt_tokens":1193,
"completion_tokens":257,
"total_tokens":1450
}
}
请求示例(流式单轮)
# 步骤一,获取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/chatlaw?access_token=[步骤一调用接口获取的access_token]' -d '{
"messages": [
{"role":"user", "content": "如果一个人故意驾车向人群冲撞,但没有造成重大损失,会被怎样处罚?"}
],
"stream": true,
"extra_parameters":{
"use_keyword":true,
"use_reference":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/chatlaw?access_token=" + get_access_token()
payload = json.dumps({
"messages": [
{
"role": "user",
"content": "如果一个人故意驾车向人群冲撞,但没有造成重大损失,会被怎样处罚?"
}
],
"stream": True,
"extra_parameters":{
"use_keyword":True,
"use_reference":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-7dn3ehrnh3","object":"chat.completion","created":1701325259,"sentence_id":0,"is_end":false,"is_truncated":false,"result":"按照《中华","need_clear_history":false,"is_safe":0,"usage":{"prompt_tokens":580,"completion_tokens":7,"total_tokens":587}}
data: {"id":"as-7dn3ehrnh3","object":"chat.completion","created":1701325260,"sentence_id":1,"is_end":false,"is_truncated":false,"result":"人民共和国刑法》的规定,故意犯罪要受到刑事制裁。","need_clear_history":false,"is_safe":0,"usage":{"prompt_tokens":580,"completion_tokens":32,"total_tokens":612}}
data: {"id":"as-7dn3ehrnh3","object":"chat.completion","created":1701325261,"sentence_id":2,"is_end":false,"is_truncated":false,"result":"根据司法解释和相关条文,行为人只需造成他人轻伤,就属于触犯故意伤害罪。","need_clear_history":false,"is_safe":0,"usage":{"prompt_tokens":580,"completion_tokens":72,"total_tokens":652}}
data: {"id":"as-7dn3ehrnh3","object":"chat.completion","created":1701325263,"sentence_id":3,"is_end":false,"is_truncated":false,"result":"因此,对于驾车冲人案,即使肇事者没有造成重大损失,也不妨碍将该行为视为故意犯罪追究刑事责任。","need_clear_history":false,"is_safe":0,"usage":{"prompt_tokens":580,"completion_tokens":113,"total_tokens":693}}
data: {"id":"as-7dn3ehrnh3","object":"chat.completion","created":1701325265,"sentence_id":4,"is_end":false,"is_truncated":false,"result":"同时,由于该行为符合《中华人民共和国治安管理处罚法》“偷开他人机动车”的条件,又构成犯罪,还须承担行","need_clear_history":false,"is_safe":0,"usage":{"prompt_tokens":580,"completion_tokens":163,"total_tokens":743}}
data: {"id":"as-7dn3ehrnh3","object":"chat.completion","created":1701325266,"sentence_id":5,"is_end":false,"is_truncated":false,"result":"政主体作出的行政措施。","need_clear_history":false,"is_safe":0,"usage":{"prompt_tokens":580,"completion_tokens":173,"total_tokens":753}}
data: {"id":"as-7dn3ehrnh3","object":"chat.completion","created":1701325266,"sentence_id":6,"is_end":true,"is_truncated":false,"result":"","need_clear_history":false,"is_safe":0,"usage":{"prompt_tokens":580,"completion_tokens":173,"total_tokens":753}}
请求示例(流式多轮)
# 步骤一,获取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/chatlaw?access_token=[步骤一调用接口获取的access_token]' -d '--data '{
"messages": [
{"role":"user","content":"如果一个人故意驾车向人群冲撞,但没有造成重大损失,会被怎样处罚?"},
{"role":"assistant","content":"根据问题描述和相关法律,即使没有造成死亡等重伤后果,仍然属于危险驾驶,情况也构成犯罪危险驾驶。从道路交通安全法来看,司乘人员严禁随意跳车和钻车窗口。无论何时,都需要提前落实转车准备工作,包括系紧安全带,关好门窗及天窗,确认手刹和灯光状态,摆正坐姿与座椅角度等。同时需要警惕闯红灯,乱变道,超速行驶等恶习。"},
{"role":"user","content": "如果司机处于醉酒驾驶状态呢"}
],
"stream": true,
"extra_parameters":{
"use_keyword":true,
"use_reference":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/chatlaw?access_token=" + get_access_token()
payload = json.dumps({
"messages": [{
"role": "user",
"content": "如果一个人故意驾车向人群冲撞,但没有造成重大损失,会被怎样处罚?"
}, {
"role":
"assistant",
"content":
"根据问题描述和相关法律,即使没有造成死亡等重伤后果,仍然属于危险驾驶,情况也构成犯罪危险驾驶。从道路交通安全法来看,司乘人员严禁随意跳车和钻车窗口。无论何时,都需要提前落实转车准备工作,包括系紧安全带,关好门窗及天窗,确认手刹和灯光状态,摆正坐姿与座椅角度等。同时需要警惕闯红灯,乱变道,超速行驶等恶习。"
}, {
"role": "user",
"content": "如果司机处于醉酒驾驶状态呢"
}],
"stream":True,
"extra_parameters": {
"use_keyword":True,
"use_reference":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-1emij971ms","object":"chat.completion","created":1701325621,"sentence_id":0,"is_end":false,"is_truncated":false,"result":"民法典第九","need_clear_history":false,"is_safe":0,"usage":{"prompt_tokens":1189,"completion_tokens":7,"total_tokens":1196}}
data: {"id":"as-1emij971ms","object":"chat.completion","created":1701325623,"sentence_id":1,"is_end":false,"is_truncated":false,"result":"百四十三条:醉酒之后驾车上高速公路会导致机动车肇事的风险极大,应该受到严厉打击。","need_clear_history":false,"is_safe":0,"usage":{"prompt_tokens":1189,"completion_tokens":48,"total_tokens":1237}}
data: {"id":"as-1emij971ms","object":"chat.completion","created":1701325625,"sentence_id":2,"is_end":false,"is_truncated":false,"result":"同时,这项罪名只适用在普遍公众有关社会秩序的高级形象问题,例如长途旅客可以参考汽车事故法庭案例。","need_clear_history":false,"is_safe":0,"usage":{"prompt_tokens":1189,"completion_tokens":96,"total_tokens":1285}}
data: {"id":"as-1emij971ms","object":"chat.completion","created":1701325627,"sentence_id":3,"is_end":false,"is_truncated":false,"result":"而不是像醉驾那样面临威胁到自身或第三方生命/财产问题,所以醉驾的刑数要比高速公路醉驾地区要低些。","need_clear_history":false,"is_safe":0,"usage":{"prompt_tokens":1189,"completion_tokens":143,"total_tokens":1332}}
data: {"id":"as-1emij971ms","object":"chat.completion","created":1701325627,"sentence_id":4,"is_end":true,"is_truncated":false,"result":"","need_clear_history":false,"is_safe":0,"usage":{"prompt_tokens":1189,"completion_tokens":143,"total_tokens":1332}}
错误码
如果请求错误,服务器返回的JSON文本包含以下参数。
名称 | 描述 |
---|---|
error_code | 错误码 |
error_msg | 错误描述信息,帮助理解和解决发生的错误 |
例如Access Token失效返回以下内容,需要重新获取新的Access Token再次请求。
{
"error_code": 110,
"error_msg": "Access token invalid or no longer valid"
}
千帆大模型平台相关错误码,请查看错误码说明。