banner
P2N2

P2N2

P2N2代表两个正电荷,两个负电荷,而这正是氦原子的内部结构。夏荷的英文名称是Helim,来自Helium。 你可能觉得这样取名字脑洞未免太大了,但我觉得挺适合的。
mastodon

更加GPT的“一言”接口:HitokotoGPT

HitokotoGPT 是我一時興起做的一個簡單小腳本,用來提供一個基於 ChatGPT 的 “一言” 接口。

這個原版所謂的 “一言” 接口是一個項目,它在每一次請求 API 時都會返回一句話,用來裝點網站的文藝風範。而 HitokotoGPT 則更進一步,它使用 ChatGPT 來動態生成這句話,使得網站上的文學裝點也顯得更加新穎。

HitokotoGPT 建立在 ChatGPT 上,是一個簡單部署的 Python 程序。通過這一程序,你將可以簡單地獲取由 ChatGPT 生成的 “名言警句”。你可以自己部署這一程序,也可以使用公開的接口。本項目自帶的公開接口僅供測試用,不對其穩定性負責。

部署指南#

滿足系統需求#

本項目非常輕量,一般能夠運行 python 的機器都能順利運行本程序。但您需要確定運行本程序的機器可以訪問 OpenAI 的 API 接口。

本項目依賴 uvicorn 和 fastapi 等庫運行。所以,請在 CLI 中執行這一條命令,自動化地安裝所需的全部依賴

pip install -r requirements.txt

這個安裝過程將很快結束。完成後請檢查防火牆的端口狀態,是否開放65530端口。本程序在65530端口監聽。如果你認為高位端口不方便使用,請在config.json中將port變量修改為你期望開放的端口號。

進行必要設置#

本項目的全部配置都存儲在config.json文件中,請打開默認目錄下的 config.json 文件,遵照下面的提示進行配置。

{
    "api_key" : "your openai api key", //OpenAI API鑒權密鑰
    "access_token" : "access token to access the web server", //用來給HitokotoGPT接口鑒權的密鑰
    "port" : 65530, //API 服務監聽的端口,如無必要請勿修改
    "database" : "testdebug", //SQLite數據庫的名稱。如無必要請勿修改
    "rate" : "1/min", //對於每個來源IP的請求速率限制
    "rate_cached" : "3/min" //對於非即時生成的內容的請求速率限制
}

調用接口#

重要:本項目可以設置 Rate Limit,但請您務必注意使本項目的 Rate Limit 和 OpenAI 的頻率限制相吻合,否則,將會造成不可預料的後果。

請求體請統一通過 JSON 發送,接口只處理內容類型為 JSON 的 POST 請求,其他請求一概報錯。

鑒權#

本項目使用簡單鑒權。請在訪問所有接口時都使用gptauth參數,其值為在 json 中設置的api_key

即時生成的一言#

在這種模式下,本程序將請求 OpenAI 的接口,通過默認的提示詞生成一言並返回。需要注意:此請求可因 OpenAI 的速率問題而嚴重拖延時長,甚至超時而失敗。請不要將即時生成的一言用於頁面醒目位置,因為它可能會在很長一段時間內加載不出來。

接口地址:/hitokoto (POST)

請求參數:

  • gptauth 字符串,用於鑒權的密鑰(必須)
  • encycle 布爾值,設置此次生成產生的一言是否允許供給不重複緩存生成使用,即如果調用 /hitokoto-cached 接口並選擇 “不重樣” 模式時,是否使用此生成。(可選,默認為否,即false

預生成 / 已緩存的一言#

在調用 “即時生成的一言” 端口時,所有生成都會被記錄進入一個 SQLite 數據庫中,這是為了供這個接口調用已經預提交過的生成。同時,你還可以使用./batch.py在低峰時段大量生成一言,並存儲進數據庫中。你可以選擇使用 “重樣” 或 “不重樣” 模式,但需要注意,儘管在這個接口選擇了 “不重樣” 模式,你還是有可能看到相同的一言,這是因為在 “即時生成的一言” 接口中它是否被使用過的狀態設置為 “沒有”。當然你不會再看到它了,因為現在它的使用狀態已經被設置為 “已使用”

但如果 “不重樣” 模式已經找不到從未被使用過的一言,那接口將直接返回已經使用過的一言,且不會有任何提示,請務必注意。

接口地址 /hitokoto-cached (POST)

請求參數:

  • gptauth 已介紹
  • recycle 布爾值,設置為真時使用 “重樣”,設置為否時使用 “不重樣”(可選,默認為否,即False

低峰批量生成#

通過batch.py,你可以大量生成一言,並將它們存進數據庫中供日後調用使用。

具體操作是在batch.py中設置sentence_num變量的數值,以便決定生成的數量。同時,還可以使用其他程序來讓batch.py在夜深人靜的低峰時段執行,或是隔一兩個小時定時執行,以提高成功率並保證總能有一言調用。

載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。