一個用原生JavaScript和編寫的ChatGPT聊天界面,基於openai的GPT-3.5 turbo API接口實現, 並使用官方接口文檔提供的方案實現了記憶歷史對話上下文的功能,使其可以持續對話,可實現與官網ChatGPT接近的持續性對話效果。
根據官網文檔信息,使用費用相較於之前的003模型便宜90%。
靜態網頁:http://sdsds222.gitee.io/chat-gpt-3.5.js


軟件架構說明Javascript HTML CSS
要使用該頁面需要提前自備openai的apikey,否則將無法正常使用所有功能。
基於原生Javascript,可直接部署到靜態網頁託管平台運行。
在輸入框輸入“/help”即可查看支持的指令,可通過這些指令來更改發送請求的參數以調整AI的行為:
/help (用於查看幫助信息)
/apikey (用於設置apikey,只有在官網註冊獲取apikey才能正常使用本服務)
/prompt (為每次發送的文本添加前置上下文)
/system (為每次發送的文本添加系統級描述)
/maxtoken (用於控制ChatGPT每次能生成的詞數)
/tpr (可以用來控制chatbot生成的話的多樣性)
/top (可以用來控制chatbot生成的話的質量)
/fp (可以用來控制chatbot生成的話的“新穎程度”)
/pp (用於控制bot產生的句子的長度)
/info (用於顯示當前各項參數的值)
/csize (用於設置記憶歷史對話的條數)
/mode (用於設置是否啟用持續對話模式)
輸入/info後,將顯示所有參數的值:

由於本項目能夠持續對話的原理是將之前的歷史對話內容作為上下文語境也一併發送給GPT-3.5 turbo 的接口,這可能會導致賬戶額度的浪費,可以在控制台輸入“/mode”並在輸入框輸入“false”來關閉持續對話模式。
合理利用system和prampt參數來設置每句話的前置上下文,可以使AI的語氣和性格長期保持一致,也可以使關鍵信息不被AI忘記。
本項目中有一部分代碼由ChatGPT生成。
這裡記錄作者的兩種新型聚類算法的設想:
1。通過在空間中往不同角度發射一些一定大小的方塊,方塊直線運動,當方塊碰撞到樣本點時停止不動,且方塊遇到方塊也會停止不動,方塊會不斷堆積直到放不下,這樣會將整個空間中的沒有點的空隙空隙用方塊填滿,剩下的由沒有方塊的只有樣本點的空間泡就劃為類,從而實現聚類。
2.一種聚類算法的設想:通過在空間中往不同角度發射一些彈球,把每個樣本點都看做一個方塊,彈球如果碰撞到了樣本點方塊,則將樣本方塊標記為邊緣方塊,並向其他方向彈射,就像打磚塊遊戲一樣,經過一段時間之後,這些邊緣方塊會包裹住內層的方塊,把這些邊緣方塊相連成圈,在圈內的樣本點就是一類。 這種方式借鑒了打磚塊,裹麵粉和自然界滾雪球。