资讯 社区 文档
技术能力
语音技术
文字识别
人脸与人体
图像技术
语言与知识
视频技术

OA-Pythia-12B-SFT-4

OA-Pythia-12B-SFT-4是基于Pythia12B,Open-Assistant项目的第4次SFT迭代模型。该模型在https://open-assistant.io/收集的人类反馈的对话数据上进行微调。本文介绍了相关API。

功能介绍

调用本接口,发起一次对话请求。

使用说明

支持通过Python SDK、Go SDK、Java SDK和Node.js 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': 7, 
            'completion_tokens': 67, 
            'total_tokens': 74
        }
    }
你好!有什么我可以帮助你的吗?
你好!有什么我可以帮助你的吗?
{
  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();

返回示例(多轮)

{
	'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. 郊区古迹:如妙应寺白塔、太阳宫等,这些地方虽然不那么热闹,但也有其独特的魅力。

除此之外,北京还有很多博物馆、剧院和美食街区,如三里屯、簋街等,你可以根据自己的兴趣和时间来选择。另外,你也可以尝试一些当地的活动,如品尝北京烤鸭、炸酱面等美食,或者参加一些传统文化活动。

希望这些建议对你有所帮助!
我是由百度公司开发的人工智能语言模型,我叫文心一言。我的知识来自于训练数据和算法,旨在为人类提供帮助和启示。如果你有任何问题或需要帮助,请随时提出。
{
  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 ) {
        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总长度不能超过4800个字符
endpoint string 用于指定用户自行发布的模型服务,说明:
(1)该字段值可以通过查看服务地址获取:打开模型服务-模型推理-我的服务页面,选择创建的服务-点击详情页查看服务地址,endpoint值为https://aip.baidubce.com/rpc/2.0/ai_custom/v1/wenxinworkshop/chat/后面的地址,如下图所示
image.png
(2)注意:在创建服务页面,选择模型后,API地址会自动新增个后缀。例如选择某模型,输入API地址为“test1”,endpoint的取值即为“ngxxxol8_test1”,如下图所示,如何发布服务请参考发布平台预置的模型服务
image.png
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总数