写点什么

文心一言 API 密钥:获取步骤指南

作者:幂简集成
  • 2024-11-12
    吉林
  • 本文字数:6811 字

    阅读完需:约 22 分钟

文心一言API密钥:获取步骤指南

介绍文心一言之前要先说一下文心一言和千帆大模型平台的关系。

什么是文心一言?

文心一言是百度推出的一款基于大语言模型的生成式 AI 产品,类似于 ChatGPT。它可以根据用户的输入生成各种类型的文本,如诗歌、故事、对话等。据介绍,「文心一言」目前包含以下五类落地场景:文学创作、商业文案创作、数理逻辑推送、中文理解、多模态生成。文心一言是百度基于文心大模型技术推出的生成式对话产品。

什么是千帆大模型平台

百度智能云千帆大模型平台(以下简称千帆或千帆大模型平台)是面向企业开发者的一站式大模型开发及服务运行平台。千帆不仅提供了包括文心一言底层模型(ERNIE-Bot)和第三方开源大模型,还提供了各种 AI 开发工具和整套开发环境,方便客户轻松使用和开发大模型应用。


文心一言是百度推出的大预言模型的生成式 AI 产品而千帆大模型平台则是由百度推出面向企业的大模型开发平台其中不仅有文心一言的底层模型还有其他优秀的第三方开源大模型。换言之文心一言是千帆大模型平台的产品之一,有了千帆大模型平台其他的企业就可以推出无数包括文心一言但不限于文心一言的 AI 应用。如果还不明白就可以查看文心一言和千帆大模型平台的关系图通过下图基本可以一目了然。



本文将详细介绍如何调用文心一言 ERNIE4.0 API 服务,包括获取API密钥的步骤、基础配置、API 调用示例及注意事项。

1. 申请 API 密钥

使用文心一言产品之前,需先在百度开放平台申请 API 密钥用于请求认证。


申请步骤:


1.注册百度账号:前往百度账号注册页面完成注册,输入您的个人信息,如姓名、邮箱等。



2.成为开发者:在百度智能云开放平台 中注册成为开发者。选择个人或企业认证并按提示完成。


1.进入百度智能云官网进行登录



2.进入千帆 ModelBuilder 点击左侧的应用接入并且点击创建应用



3.在页面上的应用名称输入上自己想要的应用名称和应用描述,



4.获取对应的 API Key 和 Secret Key



2. 配置文心一言 ERNIE4.0 API 并调用

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();
复制代码

3、使用文心一言 ERNIE4.0 API 的其他关键考虑因素

1. 正确的语法、用词以及标点

在 Prompt 中的实体对象存在多种谐音,而我们在拼写错的情况下,往往会获得错误的返回结果。同理,在语法错误以及标点错误的情况下,可能也会得到不符合预期的返回结果。因此,我们在构建 Prompt 时,需要保证语法、用词以及标点的准确性来引导模型生成更准确的内容

2. 避免歧义,简洁易懂

生成式大模型很多时候也和人类的理解能力相似,需要输入一些更明确的指示内容助于理解并执行内容生成,意图不明的模糊指令会让模型生成内容与预期有些偏离,甚至影响原本 Prompt 指令的生成内容。如下例中,让大模型生成一个短点的故事内容,在结构上可能进行了缩短,但生成内容有些偏离“故事”本身;而明确让大模型生成一个故事并规定字数限制后,可见的表现变得更好了

3. 更完整的信息

在针对一些实体对象进行评价、分析等场景时,大模型训练时不含这类实体对象的语料,就像我们无法对不认识的人产生评价一样,大模型也无法理解并生成对应的内容。因此,在针对特定对象以及特定场景进行内容生成时,需要补充更完整的背景信息

4. 设定身份视角

在一些对话场景、创作场景下,不同的身份视角往往会基于 Prompt 具体的指令内容给出不同角度的生成内容,例如在法律咨询的场景,我们期待大模型基于律师的视角给与建议;在学生考前焦虑的提问对话场景下,可以让大模型基于老师、家长不同的视角给与建议与安抚

5. 提供生成示例

提供更多明确的示例内容与格式,可以明确大模型生成的内容在可控范围内,是在很多通用场景下提升大模型生成内容质量的有效手段

6. 限定 Prompt 指令范围(To Do and Not To Do)

在一些需要明确返回内容范围的场景,例如需要通过返回内容进行检索等,给出明确的指令输入模型,能够提升返回内容的准确度,来满足场景诉求。同时,这样限定生成内容范围的 Prompt 在某种程度上也减少了泛化内容的生成,节约了网络传输与资源成本

4、 API 密钥申请和使用中的常见问题

产品使用相关

Q:预置服务的付费方式那么多,我应该如何选择?


A: 1. 首先初步结合业务场景自行估算 TPM/RPM/QPS 的速率要求,如果预置服务默认的速率限制满足业务需求,则可以首选按 tokens 计费,更为经济;如果速率要求超出了默认的速率配额,则可以购买 TPM&RPM 包,从而实现速率提升。2. 如果选择按 tokens 用量计费,可以进一步灵活选择预付费还是后付费,按照经验来看如果业务比较稳定,首选预付费,折扣力度更大;如果仅仅是前期试用,后付费即可,随用随停。需要注意的是,购买预付费的 Tokens 资源包,只是多 Tokens 可用量进行了扩容,并未对调用速率进行扩容。3. 如果选择购买 TPM&RPM 配套扩容速率限制,建议购买一定数量的基础预付费 TPM&RPM 配额,更加经济实惠。如果需要应对业务场景中偶发的突增峰值流量,建议按需搭配灵活数量的后付费配额以应对突增流量。


Q:为什么我开启的训练任务一直在无法提交,我应该怎么做才能推动模型训练的进度?


A:当前训练任务一直无法提交,一般由于未通过实名认证引起,需要您进入用户中心,完成实名认证后再正常提交任务。


Q:我在多轮对话的 SFT 中,有部分轮次的对话效果不符合预期,因为模型并未按照指定要求回答问题,此时如果我使用全部轮次的数据进行精调,模型效果会受到影响,应该怎么办?


A:您可能遇到以下情况:<font style="color:rgba(0, 0, 0, 0.87);">[{"prompt":"可以请你用热情的语气回答我的问题吗?", "response":"当然可以,请说出你的问题"}, {"prompt":"法国的首都是哪里", "response":"巴黎"}, {"prompt":"请你用热情的语气认真回答", "response":"哦!是巴黎,浪漫之都,那儿有很多漂亮的建筑,有机会你一定要去看看!"}]</font>


其中在第二轮,模型并未按照指定要求热情地回答问题。此时,您可以在数据集中配置<font style="color:rgba(0, 0, 0, 0.87);">weight</font>字段,在 SFT 精调时选择性跳过特定轮次的模型回答,使之不参与损失函数(loss)的计算过程,避免模型在训练过程中学习到错误信息。取值:0 或 1,0 表示该轮对话不参与 SFT loss 计算,默认值为 1 格式示例<font style="color:rgba(0, 0, 0, 0.87);">[{"prompt":"可以请你用热情的语气回答我的问题吗?", "response":"当然可以,请说出你的问题", "weight":1}, {"prompt":"法国的首都是哪里", "response":"巴黎", "weight":0}, {"prompt":"请你用热情的语气认真回答", "response":"哦!是巴黎,浪漫之都,那儿有很多漂亮的建筑,有机会你一定要去看看!", "weight":1}]</font>


注意:含 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&SDK 相关

Messages 使用说明

在调用部分大模型相关 API 时,例如调用 ERNIE 3.5 ,需使用请求参数 Messages,表示聊天上下文信息。


针对 Messages 介绍,”成员数目必须为奇数,成员中 message 的 role 值说明如下:奇数位 messsage 的 role 值必须为 user 或 function,偶数位 message 的 role 值 assistant,第一个 message 的 role 不能是 function。”,说明如下。


1.以下列为例介绍 Messages 使用<font style="color:rgba(0, 0, 0, 0.87);">"messages": [ {"role":"user","content":"你好"}, {"role":"assistant","content":"如果您有任何问题,请随时向我提问。"}, {"role":"user","content": "我在上海,周末可以去哪里玩?"}, {"role":"assistant","content": "上海是一个充满活力和文化氛围的城市,有很多适合周末游玩的地方。以下是几个值得推荐的地方:\n\n1. 上海科技馆:上海科技馆是中国大陆最大的科技馆之一,有许多互动展览和科学实验室,可以让您了解科技的发展历史和最新成果。\n2. 上海博物馆:上海博物馆是一座集艺术、历史和文化于一体的博物馆,有许多精美的艺术品和文物,可以让您深入了解中国和世界的文化历史。"}, {"role":"user","content": "周末这里的天气怎么样?"} ] }</font>


(1)成员


例如:其中一个 message 成员为<font style="color:rgba(0, 0, 0, 0.87);">{"role":"user","content":"你好"}</font>


(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. 错误调用示例举例


  • 错误示例 1


错误原因:message 成员需要是奇数,示例中为 2,是偶数<font style="color:rgba(0, 0, 0, 0.87);">"messages": [ { "role": "user", "content": "你好" }, { "role": "assistant", "content": "你好,有什么我可以帮助你的吗?" } ]</font>


  • 错误示例 2


错误原因:偶数位 message 中的 role 应该为 assistant,示例中为 user<font style="color:rgba(0, 0, 0, 0.87);">"messages": [ { "role": "user", "content": "你好" }, { "role": "user", "content": "我在上海,周末可以去哪里玩?" } ]</font>

5、文心一言 ERNIE4.0 API 的替代品有哪些?

文心一言(ERNIE 4.0)是百度推出的先进大语言模型,提供强大的自然语言处理能力。如果您正在寻找其替代品,以下是一些值得考虑的选项:


1.通义千问:由阿里云开发的通义千问大模型,具备强大的语言理解和生成能力,适用于多种应用场景。


2.讯飞星火:科大讯飞推出的讯飞星火大模型,专注于中文语言处理,广泛应用于教育、医疗等领域。


3.Minimax:Minimax 系列模型在自然语言处理方面表现出色,适用于文本生成、智能问答等任务。


4.ChatGPT:由 OpenAI 开发的 ChatGPT 模型,支持多语言处理,广泛应用于全球各行业。


5.Felo AI Search:Felo AI Search 是一款多语言人工智能搜索引擎,提供跨语言搜索和实时信息获取功能,适合作为文心一言的替代方案。


在选择替代品时,建议根据您的具体需求、应用场景以及对模型性能的要求,综合考虑上述选项。

总结

本文详细介绍了如何获取和调用千帆大模型 API,包括密钥申请、基础配置、调用方法及调试注意事项。通过合理配置 prompt、temperature 和 max_tokens 参数,可以灵活调整输出效果,最大化千帆大模型的应用价值。


发布于: 刚刚阅读数: 5
用户头像

幂简集成

关注

幂简集成,是国内领先的API资源网络平台。 2023-11-17 加入

还未添加个人简介

评论

发布
暂无评论
文心一言API密钥:获取步骤指南_API_幂简集成_InfoQ写作社区