介绍文心一言之前要先说一下文心一言和千帆大模型平台的关系。
文心一言是百度推出的一款基于大语言模型的生成式AI产品,类似于ChatGPT。它可以根据用户的输入生成各种类型的文本,如诗歌、故事、对话等。据介绍,「文心一言」目前包含以下五类落地场景:文学创作、商业文案创作、数理逻辑推送、中文理解、多模态生成。文心一言是百度基于文心大模型技术推出的生成式对话产品。
百度智能云千帆大模型平台(以下简称千帆或千帆大模型平台)是面向企业开发者的一站式大模型开发及服务运行平台。千帆不仅提供了包括文心一言底层模型(ERNIE-Bot)和第三方开源大模型,还提供了各种AI开发工具和整套开发环境,方便客户轻松使用和开发大模型应用。
文心一言是百度推出的大预言模型的生成式AI产品而千帆大模型平台则是由百度推出面向企业的大模型开发平台其中不仅有文心一言的底层模型还有其他优秀的第三方开源大模型。换言之文心一言是千帆大模型平台的产品之一,有了千帆大模型平台其他的企业就可以推出无数包括文心一言但不限于文心一言的AI应用。如果还不明白就可以查看文心一言和千帆大模型平台的关系图通过下图基本可以一目了然。
本文将详细介绍如何调用文心一言ERNIE4.0 API服务,包括获取 API 密钥的步骤、基础配置、API 调用示例及注意事项。
使用文心一言产品之前,需先在百度开放平台申请 API 密钥用于请求认证。
申请步骤:
1. 注册百度账号:前往 百度账号注册页面 完成注册,输入您的个人信息,如姓名、邮箱等。
2. 成为开发者:在 百度智能云开放平台 中注册成为开发者。选择个人或企业认证并按提示完成。
1.进入百度智能云官网进行登录
2.进入千帆ModelBuilder点击左侧的应用接入并且点击创建应用
3.在页面上的应用名称输入上自己想要的应用名称和应用描述,
4.获取对应的API Key 和 Secret Key
1.选择一个想要使用的模型
2.调用API调试(本文选择的为ERNIE-4.0-8K模型)
用Python调用
import os import qianfan # 通过环境变量初始化认证信息 # 方式一:【推荐】使用安全认证AK/SK鉴权 # 替换下列示例中参数,安全认证Access Key替换your_iam_ak,Secret Key替换your_iam_sk,如何获取请查看https://cloud.baidu.com/doc/Reference/s/9jwvz2egb 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-4.0-8K", messages=[{ "role": "user", "content": "你好" }]) print(resp["body"])
用Java调用
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-4.0-8K") .addMessage("user", "你好") .execute(); System.out.println(resp.getResult()); } }
用Go调用
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-4.0-8K"), ) resp, _ := chat.Do( context.TODO(), &qianfan.ChatCompletionRequest{ Messages: []qianfan.ChatCompletionMessage{ qianfan.ChatCompletionUserMessage("你好"), }, }, ) fmt.Println(resp.Result) }
用Node.js调用
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-4.0-8K'); console.log(resp); } main();
在Prompt中的实体对象存在多种谐音,而我们在拼写错的情况下,往往会获得错误的返回结果。同理,在语法错误以及标点错误的情况下,可能也会得到不符合预期的返回结果。因此,我们在构建Prompt时,需要保证语法、用词以及标点的准确性来引导模型生成更准确的内容
生成式大模型很多时候也和人类的理解能力相似,需要输入一些更明确的指示内容助于理解并执行内容生成,意图不明的模糊指令会让模型生成内容与预期有些偏离,甚至影响原本Prompt指令的生成内容。如下例中,让大模型生成一个短点的故事内容,在结构上可能进行了缩短,但生成内容有些偏离“故事”本身;而明确让大模型生成一个故事并规定字数限制后,可见的表现变得更好了
在针对一些实体对象进行评价、分析等场景时,大模型训练时不含这类实体对象的语料,就像我们无法对不认识的人产生评价一样,大模型也无法理解并生成对应的内容。因此,在针对特定对象以及特定场景进行内容生成时,需要补充更完整的背景信息
在一些对话场景、创作场景下,不同的身份视角往往会基于Prompt具体的指令内容给出不同角度的生成内容,例如在法律咨询的场景,我们期待大模型基于律师的视角给与建议;在学生考前焦虑的提问对话场景下,可以让大模型基于老师、家长不同的视角给与建议与安抚
提供更多明确的示例内容与格式,可以明确大模型生成的内容在可控范围内,是在很多通用场景下提升大模型生成内容质量的有效手段
在一些需要明确返回内容范围的场景,例如需要通过返回内容进行检索等,给出明确的指令输入模型,能够提升返回内容的准确度,来满足场景诉求。同时,这样限定生成内容范围的Prompt在某种程度上也减少了泛化内容的生成,节约了网络传输与资源成本
Q:预置服务的付费方式那么多,我应该如何选择?
A: 1. 首先初步结合业务场景自行估算TPM/RPM/QPS的速率要求,如果预置服务默认的速率限制满足业务需求,则可以首选按tokens计费,更为经济;如果速率要求超出了默认的速率配额,则可以购买TPM&RPM包,从而实现速率提升。
2. 如果选择按tokens用量计费,可以进一步灵活选择预付费还是后付费,按照经验来看如果业务比较稳定,首选预付费,折扣力度更大;如果仅仅是前期试用,后付费即可,随用随停。需要注意的是,购买预付费的Tokens资源包,只是多Tokens可用量进行了扩容,并未对调用速率进行扩容。
3. 如果选择购买TPM&RPM配套扩容速率限制,建议购买一定数量的基础预付费TPM&RPM配额,更加经济实惠。如果需要应对业务场景中偶发的突增峰值流量,建议按需搭配灵活数量的后付费配额以应对突增流量。
Q:为什么我开启的训练任务一直在无法提交,我应该怎么做才能推动模型训练的进度?
A:当前训练任务一直无法提交,一般由于未通过实名认证引起,需要您进入用户中心,完成实名认证后再正常提交任务。
Q:我在多轮对话的SFT中,有部分轮次的对话效果不符合预期,因为模型并未按照指定要求回答问题,此时如果我使用全部轮次的数据进行精调,模型效果会受到影响,应该怎么办?
A:您可能遇到以下情况:[{"prompt":"可以请你用热情的语气回答我的问题吗?", "response":"当然可以,请说出你的问题"}, {"prompt":"法国的首都是哪里", "response":"巴黎"}, {"prompt":"请你用热情的语气认真回答", "response":"哦!是巴黎,浪漫之都,那儿有很多漂亮的建筑,有机会你一定要去看看!"}]
其中在第二轮,模型并未按照指定要求热情地回答问题。
此时,您可以在数据集中配置weight
字段,在SFT精调时选择性跳过特定轮次的模型回答,使之不参与损失函数(loss)的计算过程,避免模型在训练过程中学习到错误信息。
取值:0或1,0表示该轮对话不参与SFT loss计算,默认值为1
格式示例[{"prompt":"可以请你用热情的语气回答我的问题吗?", "response":"当然可以,请说出你的问题", "weight":1}, {"prompt":"法国的首都是哪里", "response":"巴黎", "weight":0}, {"prompt":"请你用热情的语气认真回答", "response":"哦!是巴黎,浪漫之都,那儿有很多漂亮的建筑,有机会你一定要去看看!", "weight":1}]
注意:含weight字段的数据仅在ERNIE Tiny、ERNIE Character、ERNIE Lite 0308、ERNIE Lite128K-0419和ERNIE Speed模型精调SFT中可用,该字段对其他模型开放的情况,请您时刻关注官方说明。
Q:我在调用Stable-Diffusion-XL服务的时候,总出现请求超时的情况,应该怎么办?
A:建议使用以下方式调用:
(1)如果未部署该服务,需要您部署本模型为服务,再调用部署好的服务。发布服务流程可参考说明文档,详细计费可查看价格文档。
(2)如果您已经部署过此服务,可在部署资源中进行复购。
Q:我可以在已购买后付费配额的前提下,继续扩充或者缩小配额吗?
A:平台支持您支持灵活变更配额,可在已购买后付费配额的前提下,扩增TPM额度或降低TPM额度。(Tips提示:两次降配TPM额度操作至少间隔60分钟),同时私有资源池AI加速卡Ⅰ型支持按分钟后付费,低于15分钟按15分钟计算。
Q:千帆ModelBuilder现在有临期续购提醒吗?我应该如何配置?
A:百度智能云提供专属消息类型配置和消息接收人配置,具体使用方法,可查看帮助文档。
Q:我已将ERNIE-Lite-8K-0922的预置服务QPS切换为TPM和RPM,如果1分钟内请求数量大于RPM数值会有什么影响?
A:假设API服务RPM=60,如果客户在1分钟之内发送100个请求,只会有60个请求成功,剩余40个请求直接失败。
Q:我已将ERNIE-Lite-8K-0922的预置服务QPS切换为TPM和RPM,RPM数值为60,可以1秒直接发送60个请求么?
A:不可以。建议用户均匀的发送API请求,较短时间内发送过多的请求,会导致部分请求会进入排队队列,排队请求会按照一定周期重新发送,直到请求成功或排队超时。
Q:我在创建知识库的导入配置时,数据库配置时选择BES,为什么连接不到了呢?
A:当前仅支持选择北京区域的BES,且只能通过Http协议连接您的自建BES。
Q:我的Embedding-V1和bge-large-zh公有云在线体验服务都已经开通付费了,余额也充足,命中测试提醒我请求数量已达上限?
A:当前命中测试有上限限制,每日请求量限制不超过100次,每分钟请求量限制不超过20次。
Q:我在提交模型训练运行的时候,提醒我模型数量已达上限?
A:SFT任务、奖励模型训练、强化学习训练任务。每种任务的运行(包含新创建的、排队中的、运行中的)不能超过5个。
Q:我在文生文任务SFT时,LoRA训练后的模型,为什么增量训练的时候选不到?
A:当前平台仅支持训练方式为全量更新的文生文基准模型,开启增量训练。
Q:我上传自己的数据集会不会被其他用户调用去训练他们的大模型?
A:您的上传的数据集是属于您账号下的专属数据,未经您的许可不会被其他人员查看到,更加不会被其他用户在大模型训练时调用。
Q:我将预置模型发布为服务以后,调用接口报错误码17,这是怎么回事?
A:以上情况出现,是因为您发布了API服务,但是并未进行API付费,需要您根据提示进行在线API付费。
Q:我在调用文心系列大模型服务时,模型返回:“我是文心一言”,是否对百度造成侵权?
A:出现以上情况不会对百度造成侵权,请您放心使用。
Q:模型训练过程中,手动终止训练任务的话,还会计费吗?
A:任务终止,计费也将会终止。一旦任务终止,将无法重启,请您谨慎终止训练任务。
Q:为什么版本更新完成后,体验中心的模型输出调用token为0了?而且我在调用千帆ModelBuilder api时,遇到error code=06,是为什么?
A:版本更新后,需要您在应用接入中,选择指定应用的“编辑”按钮,完成“更新”操作。注:未创建应用的情况下使用在线测试功能,也会遇到此现象,需先创建应用。
在调用部分大模型相关API时,例如调用ERNIE 3.5 ,需使用请求参数Messages,表示聊天上下文信息。
针对Messages介绍,”成员数目必须为奇数,成员中message的role值说明如下:奇数位messsage的role值必须为user或function,偶数位message的role值assistant,第一个message的role不能是function。”,说明如下。
1.以下列为例介绍Messages使用"messages": [ {"role":"user","content":"你好"}, {"role":"assistant","content":"如果您有任何问题,请随时向我提问。"}, {"role":"user","content": "我在上海,周末可以去哪里玩?"}, {"role":"assistant","content": "上海是一个充满活力和文化氛围的城市,有很多适合周末游玩的地方。以下是几个值得推荐的地方:\n\n1. 上海科技馆:上海科技馆是中国大陆最大的科技馆之一,有许多互动展览和科学实验室,可以让您了解科技的发展历史和最新成果。\n2. 上海博物馆:上海博物馆是一座集艺术、历史和文化于一体的博物馆,有许多精美的艺术品和文物,可以让您深入了解中国和世界的文化历史。"}, {"role":"user","content": "周末这里的天气怎么样?"} ] }
(1)成员
例如:其中一个message成员为 {"role":"user","content":"你好"}
(2)成员数目
例如,示例中messages参数共有5个message成员。
(3)message的role限制
例如,示例中message中的role值分别为user、assistant、user、assistant、user。
奇数位(红框)message中的role值为user,即第1,3,5个message中的role值为user
偶数位(蓝框)值为assistant,即第2,4个message中的role值为assistant
错误调用示例举例
错误示例1
错误原因:message成员需要是奇数,示例中为2,是偶数"messages": [ { "role": "user", "content": "你好" }, { "role": "assistant", "content": "你好,有什么我可以帮助你的吗?" } ]
错误示例2
错误原因:偶数位message中的role应该为assistant,示例中为user"messages": [ { "role": "user", "content": "你好" }, { "role": "user", "content": "我在上海,周末可以去哪里玩?" } ]
文心一言(ERNIE 4.0)是百度推出的先进大语言模型,提供强大的自然语言处理能力。如果您正在寻找其替代品,以下是一些值得考虑的选项:
1. 通义千问:由阿里云开发的通义千问大模型,具备强大的语言理解和生成能力,适用于多种应用场景。
2. 讯飞星火:科大讯飞推出的讯飞星火大模型,专注于中文语言处理,广泛应用于教育、医疗等领域。
3. Minimax:Minimax系列模型在自然语言处理方面表现出色,适用于文本生成、智能问答等任务。
4. ChatGPT:由OpenAI开发的ChatGPT模型,支持多语言处理,广泛应用于全球各行业。
5. Felo AI Search:Felo AI Search是一款多语言人工智能搜索引擎,提供跨语言搜索和实时信息获取功能,适合作为文心一言的替代方案。
在选择替代品时,建议根据您的具体需求、应用场景以及对模型性能的要求,综合考虑上述选项。
本文详细介绍了如何获取和调用千帆大模型 API,包括密钥申请、基础配置、调用方法及调试注意事项。通过合理配置 prompt、temperature 和 max_tokens 参数,可以灵活调整输出效果,最大化千帆大模型的应用价值。