.png)
5 分鐘讀懂API技術(shù)架構(gòu)
“百度智能云千帆大模型”是百度智能云平臺(tái)上提供的一個(gè)大模型服務(wù)體系,它集成了多種先進(jìn)的預(yù)訓(xùn)練語(yǔ)言模型和AI技術(shù),旨在為企業(yè)和個(gè)人開發(fā)者提供強(qiáng)大的人工智能解決方案。這些模型包括但不限于基于Llama2架構(gòu)的中文增強(qiáng)版本、ERNIE系列的旗艦級(jí)模型以及其他由百度自研或基于開源框架優(yōu)化的高性能模型。千帆平臺(tái)上的大模型不僅支持中英雙語(yǔ),覆蓋廣泛的應(yīng)用場(chǎng)景如對(duì)話問(wèn)答、創(chuàng)作生成、代碼生成等,而且部分模型針對(duì)特定需求進(jìn)行了優(yōu)化,如壓縮加速、指令微調(diào)等,以適應(yīng)不同資源條件下的部署和使用需求。用戶可以通過(guò)千帆大模型平臺(tái)進(jìn)行模型的選擇、訓(xùn)練調(diào)優(yōu)及部署調(diào)用,以實(shí)現(xiàn)對(duì)復(fù)雜任務(wù)的支持和高效處理。
API是一個(gè)軟件解決方案,作為中介,使兩個(gè)應(yīng)用程序能夠相互交互。以下一些特征讓API變得更加有用和有價(jià)值:
1.模型相關(guān)
對(duì)話Chat:支持創(chuàng)建chat,用于發(fā)起一次對(duì)話。
續(xù)寫Completions:支持創(chuàng)建completion,用于發(fā)起一次續(xù)寫請(qǐng)求,不支持多輪會(huì)話等。
自定義模型:平臺(tái)支持HuggingFace Transformer架構(gòu)的自定義大模型導(dǎo)入,將自定義模型發(fā)布為服務(wù),并支持通過(guò)相關(guān)API調(diào)用該服務(wù)。
圖像Images:提供圖像相關(guān)API能力。
Token計(jì)算,根據(jù)輸入計(jì)算token數(shù)。
2.模型服務(wù):提供創(chuàng)建服務(wù)、獲取服務(wù)詳情等API能力。
3.模型管理:提供獲取模型、模型版本詳情,獲取用戶/預(yù)置模型及將訓(xùn)練任務(wù)發(fā)布為模型等API能力。
4.模型調(diào)優(yōu):提供創(chuàng)建訓(xùn)練任務(wù)、任務(wù)運(yùn)行、停止任務(wù)運(yùn)行及獲取任務(wù)運(yùn)行詳情等API能力。
5.數(shù)據(jù)管理:提供創(chuàng)建數(shù)據(jù)集等數(shù)據(jù)集管理、導(dǎo)入導(dǎo)出數(shù)據(jù)集任務(wù)、數(shù)據(jù)清洗任務(wù)管理等API能力。
6.Prompt工程:提供模板管理、Prompt優(yōu)化任務(wù)、評(píng)估等API能力。
7.插件應(yīng)用:提供知識(shí)庫(kù)、智慧圖問(wèn)、天氣等API能力。
進(jìn)入百度智能云 千帆大模型平臺(tái)。
點(diǎn)擊應(yīng)用接入,進(jìn)入應(yīng)用列表
點(diǎn)擊創(chuàng)建應(yīng)用
先記錄下這個(gè)秘鑰后面調(diào)用需要用到
接口文檔 地址:<https://cloud.baidu.com/doc/WENXINWORKSHOP/s/klqx7b1xf>
請(qǐng)求地址: https://aip.baidubce.com/rpc/2.0/ai_custom/v1/wenxinworkshop/chat/ernie_speed
請(qǐng)求方式: POST
根據(jù)不同鑒權(quán)方式,查看對(duì)應(yīng) Header 參數(shù)。
名稱 | 類型 | 必填 | 描述 |
Content-Type | string | 是 | 固定值 application/json |
名稱 | 類型 | 必填 | 描述 |
Content-Type | string | 是 | 固定值 application/json |
x-bce-date | string | 否 | 當(dāng)前時(shí)間,遵循 ISO8601 規(guī)范,格式如 2016-04-06T08:23:49Z |
Authorization | string | 是 | 用于驗(yàn)證請(qǐng)求合法性的認(rèn)證信息。更多內(nèi)容請(qǐng)參考簡(jiǎn)介 – 相關(guān)參考Reference | 百度智能云文檔,簽名工具可參考IAM簽名工具 |
只有訪問(wèn)憑證 access\_token 鑒權(quán)方式,需使用 Query 參數(shù)。
名稱 | 類型 | 必填 | 描述 |
access_token | string | 是 | 通過(guò) API Key 和 Secret Key 獲取的 access_token,參考 獲取access_token – 千帆大模型平臺(tái) | 百度智能云文檔 |
名稱 | 類型 | 必填 | 描述 |
messages | List(message) | 是 | 聊天上下文信息。 • messages 成員不能為空,1 個(gè)成員表示單輪對(duì)話,多個(gè)成員表示多輪對(duì)話 • 最后一個(gè) message 為當(dāng)前請(qǐng)求的信息,前面的 message 為歷史對(duì)話信息 • 必須為奇數(shù)個(gè)成員,成員中 message 的 role 必須依次為 user、assistant • message 中的 content 總長(zhǎng)度和 system 字段總內(nèi)容不能超過(guò) 24000 個(gè)字符,且不能超過(guò) 6144 tokens |
stream | bool | 否 | 是否以流式接口的形式返回?cái)?shù)據(jù),默認(rèn) false |
temperature | float | 否 | 較高的數(shù)值會(huì)使輸出更加隨機(jī),而較低的數(shù)值會(huì)使其更加集中和確定。默認(rèn) 0.95,范圍 (0, 1.0],不能為 0 |
top_p | float | 否 | 影響輸出文本的多樣性,取值越大,生成文本的多樣性越強(qiáng)。默認(rèn) 0.7,取值范圍 [0, 1.0] |
penalty_score | float | 否 | 通過(guò)對(duì)已生成的 token 增加懲罰,減少重復(fù)生成的現(xiàn)象。值越大表示懲罰越大。默認(rèn) 1.0,取值范圍:[1.0, 2.0] |
system | string | 否 | 模型人設(shè),主要用于人設(shè)設(shè)定。長(zhǎng)度限制:message 中的 content 總長(zhǎng)度和 system 字段總內(nèi)容不能超過(guò) 24000 個(gè)字符,且不能超過(guò) 6144 tokens |
stop | List(string) | 否 | 生成停止標(biāo)識(shí),當(dāng)模型生成結(jié)果以 stop 中某個(gè)元素結(jié)尾時(shí),停止文本生成。每個(gè)元素長(zhǎng)度不超過(guò) 20 字符,最多 4 個(gè)元素 |
max_output_tokens | int | 否 | 指定模型最大輸出 token 數(shù)。如果設(shè)置此參數(shù),范圍 [2, 2048]。如果不設(shè)置此參數(shù),最大輸出 token 數(shù)為 1024 |
frequency_penalty | float | 否 | 正值根據(jù)迄今為止文本中的現(xiàn)有頻率對(duì)新 token 進(jìn)行懲罰,從而降低模型逐字重復(fù)同一行的可能性;默認(rèn) 0.1,取值范圍 [-2.0, 2.0] |
presence_penalty | float | 否 | 正值根據(jù) token 記目前是否出現(xiàn)在文本中來(lái)對(duì)其進(jìn)行懲罰,從而增加模型談?wù)撔轮黝}的可能性;默認(rèn) 0.0,取值范圍 [-2.0, 2.0] |
user_id | string | 否 | 表示最終用戶的唯一標(biāo)識(shí)符 |
message 說(shuō)明
名稱 | 類型 | 描述 |
role | string | 當(dāng)前支持以下:• user: 表示用戶• assistant: 表示對(duì)話助手 |
content | string | 對(duì)話內(nèi)容,不能為空 |
部分參數(shù)如下。
名稱 | 描述 |
X-Ratelimit-Limit-Requests | 一分鐘內(nèi)允許的最大請(qǐng)求次數(shù) |
X-Ratelimit-Limit-Tokens | 一分鐘內(nèi)允許的最大 tokens 消耗,包含輸入 tokens 和輸出 tokens |
X-Ratelimit-Remaining-Requests | 達(dá)到 RPM 速率限制前,剩余可發(fā)送的請(qǐng)求數(shù)配額,如果配額用完,將會(huì)在 0-60s 后刷新 |
X-Ratelimit-Remaining-Tokens | 達(dá)到 TPM 速率限制前,剩余可消耗的 tokens 數(shù)配額,如果配額用完,將會(huì)在 0-60s 后刷新 |
名稱 | 類型 | 描述 |
id | string | 本輪對(duì)話的 id |
object | string | 回包類型• chat.completion:多輪對(duì)話返回 |
created | int | 時(shí)間戳 |
sentence_id | int | 表示當(dāng)前子句的序號(hào)。只有在流式接口模式下會(huì)返回該字段 |
is_end | bool | 表示當(dāng)前子句是否是最后一句。只有在流式接口模式下會(huì)返回該字段 |
is_truncated | bool | 當(dāng)前生成的結(jié)果是否被截?cái)?/td> |
result | string | 對(duì)話返回結(jié)果 |
need_clear_history | bool | 表示用戶輸入是否存在安全風(fēng)險(xiǎn),是否關(guān)閉當(dāng)前會(huì)話,清理歷史會(huì)話信息。• true:是,表示用戶輸入存在安全風(fēng)險(xiǎn),建議關(guān)閉當(dāng)前會(huì)話,清理歷史會(huì)話信息。• false:否,表示用戶輸入無(wú)安全風(fēng)險(xiǎn) |
ban_round | int | 當(dāng) need_clear_history 為 true 時(shí),此字段會(huì)告知第幾輪對(duì)話有敏感信息,如果是當(dāng)前問(wèn)題,ban_round=-1 |
usage | usage | token 統(tǒng)計(jì)信息 |
usage 說(shuō)明
名稱 | 類型 | 描述 |
prompt_tokens | int | 問(wèn)題 tokens 數(shù) |
completion_tokens | int | 回答 tokens 數(shù) |
total_tokens | int | tokens 總數(shù) |
注意 :同步模式和流式模式,響應(yīng)參數(shù)返回不同,詳細(xì)內(nèi)容參考示例描述。
代碼如下:
1 import requests
2 import json
3 import datetime
4
5 class QIANFAN:
6
7 _api_url = "https://aip.baidubce.com"
8
9 def __init__(self, api_key, secret_key):
10 self.API_KEY = api_key
11 self.SECRET_KEY = secret_key
12
13 url = self._api_url + "/oauth/2.0/token"
14 params = {"grant_type": "client_credentials", "client_id": self.API_KEY, "client_secret": self.SECRET_KEY}
15 result = self.http_request_v2(url, method="POST", params=params)
16 if 'access_token' in result:
17 self.access_token = result["access_token"]
18 else:
19 print(result)
20 exit()
21
22
23 def chat(self, model="ernie-lite-8k", message=None, **kwargs):
24 url = f"{self._api_url}/rpc/2.0/ai_custom/v1/wenxinworkshop/chat/{model}?access_token={self.access_token}"
25
26 payload = json.dumps({
27 "messages": [{"role": "user", "content": message}],
28 "temperature": 0.95,
29 "penalty_score": 1
30 })
31
32 for key, value in kwargs.items():
33 payload[key] = value
34
35 print(payload)
36 response = self.http_request_v2(url, method="POST", params=payload)
37 return response
38
39 # 生成headers頭
40 def headers(self, params=None):
41 headers = {}
42 headers['Content-Type'] = 'application/json'
43 return headers
44
45 def http_request_v2(self, url, method="GET", headers={}, params=None):
46 headers['User-Agent'] = 'Mozilla/5.0 \(Windows NT 6.1; WOW64\) AppleWebKit/537.36 \(KHTML, like Gecko\) Chrome/39.0.2171.71 Safari/537.36'
47 if method == "GET":
48 response = requests.get(url)
49 elif method == "POST":
50 # data = bytes(json.dumps(params), 'utf-8')
51 response = requests.post(url, data= params)
52 elif method == "DELETE":
53 response = requests.delete(url, data= data)
54
55 result = response.json()
56 return result
調(diào)用方法如下:
示例
API_KEY = "PfHVN4v3GjjE3vV24FzZdGhB"
SECRET_KEY = "***chat_client = QIANFAN(API_KEY, SECRET_KEY)
print(vars(chat_client))
result = chat_client.chat(model='ernie_speed', message="1加1為什么等于2?")
print(result["result"])
以上就是使用Python語(yǔ)言調(diào)用千帆大模型的全部過(guò)程和代碼示例。
對(duì)比大模型API的內(nèi)容創(chuàng)意新穎性、情感共鳴力、商業(yè)轉(zhuǎn)化潛力
一鍵對(duì)比試用API 限時(shí)免費(fèi)