本文將詳細介紹如何調用文心一言ERNIE4.0 API服務,包括獲取 API 密鑰的步驟、基礎配置、API 調用示例及注意事項。
使用文心一言產品之前,需先在百度開放平臺申請 API 密鑰用于請求認證。
申請步驟:

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();```
### __3、使用文心一言ERNIE4.0 API的其他關鍵考慮因素__
#### 1. 正確的語法、用詞以及標點[](https://cloud.baidu.com/doc/WENXINWORKSHOP/s/Olty35las#%E2%91%A0%E6%AD%A3%E7%A1%AE%E7%9A%84%E8%AF%AD%E6%B3%95%E3%80%81%E7%94%A8%E8%AF%8D%E4%BB%A5%E5%8F%8A%E6%A0%87%E7%82%B9)
在[Prompt](https://prompts.explinks.com/)中的實體對象存在多種諧音,而我們在拼寫錯的情況下,往往會獲得錯誤的返回結果。同理,在語法錯誤以及標點錯誤的情況下,可能也會得到不符合預期的返回結果。因此,我們在構建Prompt時,需要保證語法、用詞以及標點的準確性來引導模型生成更準確的內容
#### 2. 避免歧義,簡潔易懂[](https://cloud.baidu.com/doc/WENXINWORKSHOP/s/Olty35las#%E2%91%A1%E9%81%BF%E5%85%8D%E6%AD%A7%E4%B9%89%EF%BC%8C%E7%AE%80%E6%B4%81%E6%98%93%E6%87%82)
生成式大模型很多時候也和人類的理解能力相似,需要輸入一些更明確的指示內容助于理解并執行內容生成,意圖不明的模糊指令會讓模型生成內容與預期有些偏離,甚至影響原本Prompt指令的生成內容。如下例中,讓大模型生成一個短點的故事內容,在結構上可能進行了縮短,但生成內容有些偏離“故事”本身;而明確讓大模型生成一個故事并規定字數限制后,可見的表現變得更好了
#### 3. 更完整的信息[](https://cloud.baidu.com/doc/WENXINWORKSHOP/s/Olty35las#%E2%91%A2%E6%9B%B4%E5%AE%8C%E6%95%B4%E7%9A%84%E4%BF%A1%E6%81%AF)
在針對一些實體對象進行評價、分析等場景時,大[模型訓練](http://www.dlbhg.com/wiki/what-is-model-training/)時不含這類實體對象的語料,就像我們無法對不認識的人產生評價一樣,大模型也無法理解并生成對應的內容。因此,在針對特定對象以及特定場景進行內容生成時,需要補充更完整的背景信息
#### 4. 設定身份視角[](https://cloud.baidu.com/doc/WENXINWORKSHOP/s/Olty35las#%E2%91%A0%E8%AE%BE%E5%AE%9A%E8%BA%AB%E4%BB%BD%E8%A7%86%E8%A7%92)
在一些對話場景、創作場景下,不同的身份視角往往會基于Prompt具體的指令內容給出不同角度的生成內容,例如在法律咨詢的場景,我們期待大模型基于律師的視角給與建議;在學生考前焦慮的提問對話場景下,可以讓大模型基于老師、家長不同的視角給與建議與安撫
#### 5. 提供生成示例[](https://cloud.baidu.com/doc/WENXINWORKSHOP/s/Olty35las#%E2%91%A1%E6%8F%90%E4%BE%9B%E7%94%9F%E6%88%90%E7%A4%BA%E4%BE%8B)
提供更多明確的示例內容與格式,可以明確大模型生成的內容在可控范圍內,是在很多通用場景下提升大模型生成內容質量的有效手段
#### 6. 限定Prompt指令范圍(To Do and Not To Do)[](https://cloud.baidu.com/doc/WENXINWORKSHOP/s/Olty35las#%E2%91%A2%E9%99%90%E5%AE%9Aprompt%E6%8C%87%E4%BB%A4%E8%8C%83%E5%9B%B4%EF%BC%88to-do-and-not-to-do%EF%BC%89)
在一些需要明確返回內容范圍的場景,例如需要通過返回內容進行檢索等,給出明確的指令輸入模型,能夠提升返回內容的準確度,來滿足場景訴求。同時,這樣限定生成內容范圍的Prompt在某種程度上也減少了泛化內容的生成,節約了網絡傳輸與資源成本
### __4、 API密鑰申請和使用中的常見問題__
#### 產品使用相關
__Q:預置服務的付費方式那么多,我應該如何選擇?__
A: 1. 首先初步結合業務場景自行估算TPM/RPM/QPS的速率要求,如果預置服務默認的速率限制滿足業務需求,則可以首選按tokens計費,更為經濟;如果速率要求超出了默認的速率配額,則可以購買TPM&RPM包,從而實現速率提升。
2. 如果選擇按tokens[用量計費](http://www.dlbhg.com/blog/cpaas-api-call-tracking-usage-billing),可以進一步靈活選擇預付費還是后付費,按照經驗來看如果業務比較穩定,首選預付費,折扣力度更大;如果僅僅是前期試用,后付費即可,隨用隨停。需要注意的是,購買預付費的Tokens資源包,只是多Tokens可用量進行了擴容,并未對調用速率進行擴容。
3. 如果選擇購買TPM&RPM配套擴容速率限制,建議購買一定數量的基礎預付費TPM&RPM配額,更加經濟實惠。如果需要應對業務場景中偶發的突增峰值流量,建議按需搭配靈活數量的后付費配額以應對突增流量。
__Q:為什么我開啟的訓練任務一直在無法提交,我應該怎么做才能推動模型訓練的進度?__
A:當前訓練任務一直無法提交,一般由于未通過實名認證引起,需要您進入用戶中心,完成實名認證后再正常提交任務。
__Q:我在多輪對話的SFT中,有部分輪次的對話效果不符合預期,因為模型并未按照指定要求回答問題,此時如果我使用全部輪次的數據進行精調,模型效果會受到影響,應該怎么辦?__
A:您可能遇到以下情況:[{"prompt":"可以請你用熱情的語氣回答我的問題嗎?", "response":"當然可以,請說出你的問題"}, {"prompt":"法國的首都是哪里", "response":"巴黎"}, {"prompt":"請你用熱情的語氣認真回答", "response":"哦!是巴黎,浪漫之都,那兒有很多漂亮的建筑,有機會你一定要去看看!"}]
其中在第二輪,模型并未按照指定要求熱情地回答問題。
此時,您可以在數據集中配置weight字段,在SFT精調時選擇性跳過特定輪次的模型回答,使之不參與[損失函數](http://www.dlbhg.com/blog/wx-neural-network-algorithm-understanding-loss-function)(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)如果未部署該服務,需要您部署本[模型為服務](http://www.dlbhg.com/blog/ai-llm-enterprise-api-open-platform-website),再調用部署好的服務。發布服務流程可參考說明文檔,詳細計費可查看價格文檔。
(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請求](http://www.dlbhg.com/blog/api%e8%af%b7%e6%b1%82-%e4%bb%80%e4%b9%88%e6%98%afapi%e8%af%b7%e6%b1%82%ef%bc%9f/),較短時間內發送過多的請求,會導致部分請求會進入排隊隊列,排隊請求會按照一定周期重新發送,直到請求成功或排隊超時。
__Q:我在創建知識庫的導入配置時,數據庫配置時選擇BES,為什么連接不到了呢?__
A:當前僅支持選擇__北京區域__的BES,且只能通過__[Http協議](http://www.dlbhg.com/blog/rest-api-dam)__連接您的自建BES。
__Q:我的Embedding-V1和bge-large-zh公有云在線體驗服務都已經開通付費了,余額也充足,命中測試提醒我請求數量已達上限?__
A:當前命中測試有上限限制,每日請求量限制不超過__100次__,每分鐘請求量限制不超過__20次__。
__Q:我在提交模型訓練運行的時候,提醒我模型數量已達上限?__
A:SFT任務、獎勵模型訓練、[強化學習](http://www.dlbhg.com/wiki/what-is-reinforcement-learning/)訓練任務。每種任務的運行(包含新創建的、排隊中的、運行中的)__不能超過5個__。
__Q:我在文生文任務SFT時,LoRA訓練后的模型,為什么增量訓練的時候選不到?__
A:當前平臺僅支持訓練方式為__全量更新__的文生文基準模型,開啟__增量訓練__。
__Q:我上傳自己的數據集會不會被其他用戶調用去訓練他們的大模型?__
A:您的上傳的數據集是屬于您賬號下的專屬數據,未經您的許可不會被其他人員查看到,更加不會被其他用戶在大模型訓練時調用。
__Q:我將預置模型發布為服務以后,調用接口報錯誤碼17,這是怎么回事?__
A:以上情況出現,是因為您[在線API](http://www.dlbhg.com/blog/online-api-categories-over-4000)付費。
__Q:我在調用文心系列大模型服務時,模型返回:“我是文心一言”,是否對百度造成侵權?__
A:出現以上情況不會對百度造成侵權,請您放心使用。
__Q:模型訓練過程中,手動終止訓練任務的話,還會計費嗎?__
A:任務終止,計費也將會終止。一旦任務終止,將無法重啟,請您謹慎終止訓練任務。
__Q:為什么版本更新完成后,體驗中心的模型輸出調用token為0了?而且我在[調用千帆ModelBuilder api](http://www.dlbhg.com/blog/ua-using-pycharm-to-call-api-guide)時,遇到error code=06,是為什么?__
A:版本更新后,需要您在應用接入中,選擇指定應用的“編輯”按鈕,完成“更新”操作。注:未創建應用的情況下使用在線測試功能,也會遇到此現象,需先創建應用。
#### API&SDK相關[](https://cloud.baidu.com/doc/WENXINWORKSHOP/s/Ulfmc9dvc#apisdk%E7%9B%B8%E5%85%B3)
### __Messages使用說明__[](https://cloud.baidu.com/doc/WENXINWORKSHOP/s/Ulfmc9dvc#messages%E4%BD%BF%E7%94%A8%E8%AF%B4%E6%98%8E)
在調用部分[大模型相關API](http://www.dlbhg.com/blog/discussion-on-some-paths-of-integrated-large-model-api-landing-intelligent-knowledge-base)時,例如調用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": "上海是一個充滿活力和文化氛圍的城市,有很多適合周末游玩的地方。以下是幾個值得推薦的地方:nn1. 上??萍拣^:上海科技館是中國大陸最大的科技館之一,有許多互動展覽和科學實驗室,可以讓您了解科技的發展歷史和最新成果。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

2. 錯誤調用示例舉例
- 錯誤示例1
錯誤原因:message成員需要是奇數,示例中為2,是偶數"messages": [ { "role": "user", "content": "你好" }, { "role": "assistant", "content": "你好,有什么我可以幫助你的嗎?" } ]
- 錯誤示例2
錯誤原因:偶數位message中的role應該為assistant,示例中為user"messages": [ { "role": "user", "content": "你好" }, { "role": "user", "content": "我在上海,周末可以去哪里玩?" } ][](https://cloud.baidu.com/doc/WENXINWORKSHOP/s/Eltguk2wp)
### __5、文心一言ERNIE4.0 API 的替代品有哪些?__
文心一言(ERNIE 4.0)是百度推出的先進大[語言模型](http://www.dlbhg.com/wiki/large-language-model/),提供強大的[自然語言處理](http://www.dlbhg.com/wiki/what-is-natural-language-processing-nlp/)能力。如果您正在尋找其替代品,以下是一些值得考慮的選項:
1. __通義千問__:由應用場景。
2. __訊飛星火__:[科大訊飛](http://www.dlbhg.com/provider/uid20230526827605b15413)推出的訊飛星火大模型,專注于中文語言處理,廣泛應用于教育、醫療等領域。
3. __Minimax__:Minimax系列模型在自然語言處理方面表現出色,適用于[文本生成](http://www.dlbhg.com/blog/google-news-api-openai-text-generation-learn-how-to-build-your-own-personal-news-aggregator-service)、智能問答等任務。
4. __ChatGPT__:由[OpenAI](http://www.dlbhg.com/provider/uid202405280134182e2ed4)開發的ChatGPT模型,[支持多語言](http://www.dlbhg.com/blog/ua-what-languages-does-tongyi-qianwen-support)處理,廣泛應用于全球各行業。
5. __Felo AI Search__:Felo AI Search是一款多語言[人工智能](http://www.dlbhg.com/wiki/what-is-artificial-intelligence/)搜索引擎,提供跨語言搜索和實時信息獲取功能,適合作為文心一言的替代方案。
在選擇替代品時,建議根據您的具體需求、應用場景以及對模型性能的要求,綜合考慮上述選項。
### __總結__
本文詳細介紹了如何獲取和調用千帆大[模型 API](http://www.dlbhg.com/blog/model-api-is-the-best-way-to-unlock-ai),包括密鑰申請、基礎配置、調用方法及調試注意事項。通過合理配置 prompt、temperature 和 max_tokens 參數,可以靈活調整輸出效果,最大化千帆大[模型的應用](http://www.dlbhg.com/blog/wx-overview-of-geometric-graph-neural-networks-data-structures-models-and-applications)價值。