ChatGPT與Remix?Api服務(wù)在瀏覽器url地址中對話詳解
引言
本文討論 ChatGTP 與 Node.js 的結(jié)合,由于最近在學(xué) Remix, 考慮到 Remix 可以單獨的作為 API 來使用,并且集成了很多常用的功能:
- fetch
- dotenv
- loader
- 文件路由
- ...
彎路
寫一個簡單的 ChatGPT 服務(wù)鍵值不要太簡單,但是我們在上面也走了一些彎路。
- 直接鏈接
api.openai.com一直請求超時,這個浪費了很長的時間,也不知道是什么原因。面對困難我們應(yīng)該怎么辦?先放下,搜索引里面是不是有相似的問題。結(jié)果真的需要代理, 嘗試了一個代理,其中api.openai-proxy.com還挺好。注意代理的安全性自行判斷。 - 使用 npm 的
openai還是直接發(fā)送請求到https://api.openai.com/v1/chat/completions或者https://api.openai.com/v1/completions,又是不同的做法。經(jīng)過嘗試,選擇了前者 + fetch 方案。 - 使用
axios還是fetch呢? 都有嘗試,使用方法不一樣,但是效果基本一致。
最早的思路 1
- 思路使用 remix 構(gòu)建一個簡單的 ChatGPT + api key 的簡單的應(yīng)用。但是前后端代碼都要寫,還沒有研究 UI 和 對接文檔。
思路2
- 看別人實現(xiàn),由于 api 在三月份就發(fā)布了,現(xiàn)在已經(jīng)發(fā)生一些變化,比如訪問 api 的超時原因的問題。別人的環(huán)境可能與自己的不一樣。
思路3
- 在 github 上模仿一個簡單的示例,有簡單 UI,結(jié)果還真由于基于 Next.js 的效果還可以的:nextjs-chatgpt-app-enricoros 但是,發(fā)現(xiàn) UI 是有難度的用的 MUI,內(nèi)容是有復(fù)雜度的,不符合快速原則,模仿一個 antd UI 寫一個 UI 自己覺的不理想,先放在那里了。后面做好了考慮開源。
思路4
- 直接用 node.js 跑一個示例。最簡單的 url 中有 searchParams 就是與 Chat-GPT 的對話參數(shù)。
從創(chuàng)建一個 Remix 開始
pnpm dlx create-remix@latest chat-app
定義 .env 文件
因為 Remix 已經(jīng)內(nèi)置 dotenv 使用使用起來非常方便。
OPENAI_API_KEY = "your api key" PROXY_URL = "your api proxy url"
一個是 api key, 注意不要提交到 git 上, remix 創(chuàng)建項目默認(rèn)將 .env 文件中記錄到 .gitignore 文件中??墒褂?.env.example 文件給個示例提到 git 上。
定義 chat 路由
/app/routes/chat.tsx文件即可,注意是用作 api 不要返回一個默認(rèn)的函數(shù),然后對外暴露一個 loader 函數(shù),用于處理當(dāng)前路由 get 方法請求。下面是一個簡單的代碼實現(xiàn):
async function runCompletion(messages: any) {
const response = await fetch(
"https://api.openai-proxy.com/v1/chat/completions",
{
method: "POST",
headers: {
"Content-Type": "application/json",
Authorization: "Bearer " + process.env.OPENAI_API_KEY,
},
body: JSON.stringify({
model: "gpt-3.5-turbo",
messages: [{ role: "user", content: messages }],
}),
}
).then((res) => res.json())
return await response.choices[0].message.content;
}
export async function loader({ request }: any) {
const url = new URL(request.url);
const text = url.searchParams.get("text")!;
return runCompletion(text);
}啟動 Remix 服務(wù)開始與 ChatGPT 對話
pnpm dev
默認(rèn)在 3000 端口打開,下面我們訪問 http://localhost:3000/fetch?text=吃了嗎 開始與 Chat-GPT 開始友好問答:

問題二:

問題就不再提了,大家肯定開始各種方式與 AI 對話了。因為 API 現(xiàn)在是送的 5 刀,每一個字都是要計算 token, 并且也有時常限制。
這里對 chatapt api 的參數(shù)就不做解讀了,選擇哪種模型合適,就不再解讀。本文的主要目的,就是使用 Remix 對接服務(wù)。
小結(jié)
搞對接服務(wù)雖然不是難事,但是也沒有想象中的簡單。這是第一次對接這類接口。喜歡 Remix 的可以參考一下。
以上就是ChatGPT與Remix Api服務(wù)在瀏覽器url地址中對話詳解的詳細內(nèi)容,更多關(guān)于ChatGPT對話Remix Api的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
適合后臺管理系統(tǒng)開發(fā)的12個前端框架(小結(jié))
當(dāng)你寫項目的時候,如何快速的完成一個項目的搭建,這個時候就需要借助到一些模板了,前端開發(fā)的一個好處就是,各類UI模板都是相當(dāng)?shù)凝R全的,本文就介紹幾個前端框架,感興趣的可以了解一下2021-06-06
Deepin20安裝開發(fā)環(huán)境的超詳細教程
這篇文章主要介紹了Deepin20安裝開發(fā)環(huán)境的步驟詳解,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-10-10
asp php 清空access mysql mssql數(shù)據(jù)庫的代碼
php清空mysql asp情況access或mssql2008-12-12
超實用Internet Download Manager(IDM)破解注冊碼,全版本通用
IDM下載器是一個十分好用的文件下載工具。IDM下載器它能夠幫助你提升5倍的下載速度,強大的續(xù)傳功能,讓你不再擔(dān)心因網(wǎng)絡(luò)問題、計算機宕機、停電等原因所造成的數(shù)據(jù)不全問題,下面小編給大家?guī)砹薎nternet Download Manager(IDM)破解注冊碼,感興趣的朋友參考下吧2023-01-01
Typora配置PicGo時提示Failed?to?fetch的問題解決(typora圖像問題)
這篇文章主要介紹了Typora配置PicGo時提示Failed?to?fetch的問題解決(typora圖像問題),本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-04-04

