Python基于火山引擎豆包大模型搭建QQ機器人詳細教程(2024年最新)
豆包大模型概述
火山引擎官網(wǎng):https://www.volcengine.com/
字節(jié)跳動推出的自研大模型。通過字節(jié)跳動內(nèi)部50+業(yè)務場景實踐驗證,每日千億級tokens大使用量持續(xù)打磨,提供多模態(tài)能力,以優(yōu)質(zhì)模型效果為企業(yè)打造豐富的業(yè)務體驗。
模型控制臺
當前模型支持類目
開通模型付費
您可以在 開通管理 頁中查看各模型定價與使用限制,開通后使用各模型服務,不同模型的單價不同。其中,大語言模型費用計算方式:費用 = tokens使用量 X 模型 tokens 單價。
Tokens 定義說明: 通常 1 個中文詞語、英文單詞、數(shù)字、符號計為 1 個 token,由于不同模型采用的分詞器不同,同一段文本可能會分為不同的 tokens 數(shù)量。
安裝 SDK 環(huán)境
安裝火山 python sdk 環(huán)境
pip install volcengine-python-sdk
······ note: This error originates from a subprocess, and is likely not a problem with pip. ERROR: Failed building wheel for volcengine-python-sdk Running setup.py clean for volcengine-python-sdk Failed to build volcengine-python-sdk ERROR: Could not build wheels for volcengine-python-sdk, which is required to install pyproject.toml-based projects
解決方案
GitHub 地址:https://github.com/volcengine/volcengine-python-sdk
git clone https://github.com/volcengine/volcengine-python-sdk.git
開始安裝 volcengine-python-sdk
python setup.py install --user
在 Python 中,setup.py 是一個常用的腳本文件,用于安裝、分發(fā)和管理 Python 包。這個文件通常包含setuptools(或distutils)的調(diào)用,用于定義包的各種屬性和設置。
python setup.py 這部分命令指示Python解釋器運行setup.py腳本。 install 這是setup.py的一個常見命令,用于安裝定義的Python包。 --user 這是一個選項,指示安裝程序?qū)惭b到用戶的Python庫目錄中,而不是全局的Python庫目錄。
配置 API KEY 鑒權(quán)
方案一:API 管理頁面獲取 API KEY
進入 API Key 管理 頁面,選擇需要的項目,點擊 創(chuàng)建 API Key,即可生成長效 API Key。all權(quán)限默認給予項目下所有模型接入點和智能體訪問權(quán)限。地址:https://console.volcengine.com/ark/region:ark+cn-beijing/apiKey
方案二:配置火山引擎 API 的安全憑證
API 訪問密鑰(Access Key)是請求火山引擎 API 的安全憑證,包含 Access Key ID和Secret Access Key,請您妥善保管并定期輪換密鑰,不要將密鑰信息共享至公開環(huán)境(如上傳GitHub),以保障云資源的安全性。建議您使用最小化授權(quán)的IAM用戶的密鑰進行API訪問,不建議直接使用主賬號密鑰或使用權(quán)限過大的IAM用戶密鑰。
訪問密鑰 Access Key 管理:https://console.volcengine.com/iam/keymanage
方案三:SDK 獲取 API KEY
創(chuàng)建推理接入點地址:https://console.volcengine.com/ark/region:ark+cn-beijing/endpoint?current=1&pageSize=10
推理接入點讀取 ENDPOINT_ID 編號:ep-20240619132122-2hx7z
設置 AK/SK 作為環(huán)境變量 .env 配置文件
VOLC_ACCESSKEY=YOUR_AK VOLC_SECRETKEY=YOUR_SK ENDPOINT_ID=YOUR_ENDPOINT_ID(例如:ep-20240619132122-2hx7z)
源碼預覽
from __future__ import print_function import os import volcenginesdkcore import volcenginesdkark from pprint import pprint from volcenginesdkcore.rest import ApiException import dotenv dotenv.load_dotenv(".env") if __name__ == '__main__': configuration = volcenginesdkcore.Configuration() configuration.ak = os.getenv("VOLC_ACCESSKEY") configuration.sk = os.getenv("VOLC_SECRETKEY") configuration.region = "cn-beijing" volcenginesdkcore.Configuration.set_default(configuration) api_instance = volcenginesdkark.ARKApi() get_api_key_request = volcenginesdkark.GetApiKeyRequest( duration_seconds=30 * 24 * 3600, resource_type="endpoint", resource_ids=[os.getenv("ENDPOINT_ID")], ) try: resp = api_instance.get_api_key(get_api_key_request) pprint(resp) except ApiException as e: print("Exception when calling api: %s\n" % e)
運行結(jié)果
{'api_key': '······', 'expired_time': 1721395557}
Ark 模型接口
標準請求 standard request
import os from volcenginesdkarkruntime import Ark import dotenv dotenv.load_dotenv(".env") client = Ark() completion = client.chat.completions.create( model=os.getenv("ENDPOINT_ID"), messages=[ {"role": "system", "content": "你是豆包,是由字節(jié)跳動開發(fā)的 AI 人工智能助手"}, {"role": "user", "content": "常見的十字花科植物有哪些?"}, ], ) print(completion.choices[0].message.content)
流式請求 stream request
在 stream 模式下,基于 SSE (Server-Sent Events) 協(xié)議返回生成內(nèi)容,每次返回結(jié)果為生成的部分內(nèi)容片段。內(nèi)容片段按照生成的先后順序返回,完整的結(jié)果需要調(diào)用者拼接才能得到。如果流式請求開始時就出現(xiàn)錯誤(如參數(shù)錯誤),HTTP返回非200,方法調(diào)用也會直接返回錯誤。如果流式過程中出現(xiàn)錯誤,HTTP 依然會返回 200, 錯誤信息會在一個片段返回。
import os from volcenginesdkarkruntime import Ark import dotenv dotenv.load_dotenv(".env") client = Ark() stream = client.chat.completions.create( model=os.getenv("ENDPOINT_ID"), messages=[ {"role": "system", "content": "你是豆包,是由字節(jié)跳動開發(fā)的 AI 人工智能助手"}, {"role": "user", "content": "常見的十字花科植物有哪些?"}, ], stream=True ) for chunk in stream: if not chunk.choices: continue print(chunk.choices[0].delta.content, end="")
文檔地址:https://www.volcengine.com/docs/82379/1263512
Prompt 提示詞工程
在自然語言處理(NLP)和對話系統(tǒng)中,提示(prompt)通常是指用戶輸入的文本或問題。通過仔細設計和選擇提示,可以指導模型的生成過程,使其更符合用戶的需求。Prompt engineering 是指設計和優(yōu)化提示的過程,以使人工智能模型能夠更好地理解用戶的意圖和要求,并生成更準確、有用的響應。
Prompt Engineering 主要目標
1. 了解如何格式化和設計提示使模型效果最佳。
2. 探索不同 prompt 對模型輸出的影響。
3. 創(chuàng)造出能優(yōu)化模型輸出的提示。
注意:一般業(yè)務優(yōu)化的過程,主要包括三個環(huán)節(jié),prompt 設計、prompt 優(yōu)化和 prompt 評測,如下我們分別分三個部分來進行介紹。
限制模型輸出格式
最后針對模型的輸出,可以限制輸出的格式,一方面可以提高可讀性,使結(jié)果更清晰明了。另一方面也可以方便后續(xù)的處理,提高穩(wěn)定性。以提取“病癥”的任務來展示下如何去限制模型的輸出格式。要求直接以 json 的格式返回。
請?zhí)崛⒖假Y料中的所有病癥,并且以json格式返回。 回答滿足下面的格式要求: 1、以json的格式返回答案,json只包括一個key, key="disease",對應的值為列表,存儲參考資料中的病癥。 參考資料: """ 失眠在《內(nèi)經(jīng)》中稱為“目不瞑”、“不得眠”、“不得臥”,其原因主要有兩種:一是其他病癥影響,如咳嗽、嘔吐、腹?jié)M等,使人不得安臥;二是氣血陰陽失和,使人不能入寐。中醫(yī)常用養(yǎng)心安神的方法治療失眠,既可治標、又可治本,還可以避免西藥安眠藥容易成癮的弊端。中醫(yī)認為,失眠多因臟腑陰陽失調(diào),氣血失和所致。正如《靈樞大惑論》中記載:“衛(wèi)氣不得入于陰,常留于陽,留于陽則氣滿;陽氣滿則陽嬌盛,不得入于陰則陰氣虛,故目不瞑矣?!痹谂R床上,治療失眠應著重調(diào)理臟腑及氣血陰陽,以“補其不足,瀉其有余,調(diào)其虛實”,可采取補益心脾、滋陰降火、交通心腎、疏肝養(yǎng)血、益氣鎮(zhèn)驚、活血通絡等治法,使氣血和暢,陰陽平衡,臟腑功能恢復正常。 """
Prompt 優(yōu)化:模型扮演角色
讓模型扮演一個具體的角色,模型的輸出會更符合人類的表達方式,從而更容易被人類理解;同時輸出也會更加一致。例如,在問答系統(tǒng)中,讓模型扮演一個特定領(lǐng)域的專家可以使其回答更符合該領(lǐng)域的知識和語言習慣,從而提高回答的一致性。
比如下面的案例,讓模型分別扮演科學家和玄幻小說家生成一篇文章,文章的主題是:“黑洞是如何形成的”。在科學家的角度下,模型基于科學事實首先解釋了黑洞是什么,然后回答了黑洞的形成過程;而在玄幻小說家的角度下,模型此時的輸出不再基于科學事實,而是完全虛構(gòu),并且給人更多神秘的感覺,勾起讀者的興趣。
構(gòu)造分類接口
def construct_classification_req(): req = { "model": { "name": "skylark2-pro-4k", # 這里根據(jù)模型不同,設置不同的 model_name "version": "1.1", # 設置調(diào)用模型的版本號 }, "parameters": { "max_new_tokens": 1000, # 輸出文本的最大tokens限制 "min_new_tokens": 1, # 輸出文本的最小tokens限制 "temperature": 0.01, # 用于控制生成文本的隨機性和創(chuàng)造性,Temperature值越大隨機性越大,取值范圍0~1 "top_p": 0.7, # 用于控制輸出tokens的多樣性,TopP值越大輸出的tokens類型越豐富,取值范圍0~1 "top_k": 0, # 選擇預測值最大的k個token進行采樣,取值范圍 0-1000,0 表示不生效 "max_prompt_tokens": 3000, # 最大輸入 token 數(shù),如果給出的 prompt 的 token 長度超過此限制,取最后 max_prompt_tokens 個 token 輸入模型。 "system_prompt": '', # 系統(tǒng)角色,設定模型的行為和背景,告知模型需要扮演的角色。 "repetition_penalty": 1.1 # 重復token輸出的懲罰項 }, "query": "中國的第一個經(jīng)濟特區(qū)是?", "labels": ["北京", "珠海", "深圳", "廈門", "上海"] # 輸出的結(jié)果都在labels的選項內(nèi) } return req
總結(jié)
到此這篇關(guān)于Python基于火山引擎豆包大模型搭建QQ機器人的文章就介紹到這了,更多相關(guān)Python基于豆包搭建QQ機器人內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Django框架文件上傳與自定義圖片上傳路徑、上傳文件名操作分析
這篇文章主要介紹了Django框架文件上傳與自定義圖片上傳路徑、上傳文件名操作,結(jié)合實例形式分析了Django框架文件上傳的原理、步驟、實現(xiàn)方法以及圖片上傳時自定義上傳路徑、上傳文件名的相關(guān)操作技巧,需要的朋友可以參考下2019-05-05對python中數(shù)組的del,remove,pop區(qū)別詳解
今天小編就為大家分享一篇對python中數(shù)組的del,remove,pop區(qū)別詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-11-11