手把手教你國內開發者如何呼叫openai的介面

程式設計師An發表於2023-04-17

ChatGPT最近幾個月可算是火爆了,但是在使用的時候你是否遇到以下問題:

1. 國內網路受限,無法直接訪問
2. 頁面停留幾分鐘後token就過期了,必須頻繁的重新整理頁面
3. 自己寫個後臺部署還得買個國外的伺服器

如果你也被以上問題困擾,不妨往下看,你現在面臨的正是我所經歷的,這篇文章或許能夠給你提供一些幫助。
針對以上問題有很多種解決方案,網路受限我們可以選擇購買vpn;token過期我們可以升級plus;後端調不通openai的介面,我們可以選擇國外的伺服器,或者伺服器上裝代理;那有沒有更完美的解決方案呢?今天給大家分享一個透過cloudflare實現最小成本代理openai的方案。

廢話不多說,上Demo,親測可用。傳送門

第一步:註冊cloudflare賬號

前往cloudflare官網註冊一個賬號
image.png

第二步:建立worker,進行請求中轉

image.png
image.png
image.png
image.png
將此js程式碼替換上圖左側部分的程式碼

export default {
  async fetch(request, env) {
    return await handleRequest(request)
  }
}


async function handleRequest(request) {
  // 定義目標伺服器的地址
  const url = new URL(request.url)
  const targetUrl = 'https://api.openai.com'

  // 構造新的請求物件
  const proxyRequest = new Request(targetUrl + url.pathname + url.search, {
    method: request.method,
    headers: request.headers,
    body: request.body
  })

  // 傳送請求到目標伺服器
  const response = await fetch(proxyRequest)

  // 構造新的響應物件
  const proxyResponse = new Response(response.body, {
    status: response.status,
    statusText: response.statusText,
    headers: response.headers
  })

  // 返回響應給客戶端
  return proxyResponse
}

點選儲存併發布,至此,域名轉發配置完成。但是workers.dev在國內依然無法訪問,這時我們需要一個國內可訪問的域名來轉發。

第三步:域名轉發

image.png
回到workers首頁,找到剛才新增的server,點選進入詳情。
image.png
image.png
此處需注意,如果已經有域名的直接填入即可,沒有的需要去註冊一個,國內平臺註冊域名需要備案才行,如果覺得備案麻煩,可以就在cloudflare上購買,大概一年30元左右,比起購買國外的伺服器和VPN來說實惠不少。
image.png
實際支付截圖
image.png

第四步:使用中轉域名

import openai
openai.api_base = '[剛才填寫的域名]/v1'  # 注意後面/v1不可省略
openai.api_key = '[你的openai key]'
openai.ChatCompletion.create(
        model='gpt-3.5-turbo-0301',
        messages=[messages],
        stream=stream
    )

最後,愉快的玩耍去吧~

相關文章