如何解決本地開發調用OpenAI介面的問題

来源:https://www.cnblogs.com/xfishup/archive/2023/11/20/17844477.html
-Advertisement-
Play Games

在開發過程中,如果需要在本地調用openAI介面進行開發調試,一般主要是通過以下兩種方式:直連和代理轉發。歡迎私信交流。 1. 直連 1.簡單粗暴,懂的都懂 2. 代理轉發 代理轉發又有兩種類型,使用第三方代理和自建代理兩種,下麵將分別舉例說明 2.1. 第三方AI網關 1.註冊Cloudflare ...


在開發過程中,如果需要在本地調用openAI介面進行開發調試,一般主要是通過以下兩種方式:直連和代理轉發。歡迎私信交流。

1. 直連

  • 1.簡單粗暴,懂的都懂file

2. 代理轉發

代理轉發又有兩種類型,使用第三方代理和自建代理兩種,下麵將分別舉例說明

2.1. 第三方AI網關

  • 1.註冊Cloudflare,開通AI網關功能(Beta功能,目前免費)file
  • 2.使用AI網關地址替換官方介面地址,即可本地調用file
  • 3.在AI網關管理界面,還可以看到介面調用、tokens消耗、以及日誌等情況,非常好用file

2.2. 自建Nginx

  • 1.查看Nginx版本和是否已配置stream模塊(Nginx版本需要在1.9.0以上,如果已安裝stream模塊,直接跳到步驟7):/usr/sbin/nginx -V | grep with-streamfile
  • 2.重新下載已安裝版本的Nginx源碼包(上一步我查到已安裝的是版本號1.18.0):wget https://nginx.org/download/nginx-1.18.0.tar.gz
  • 3.在原有配置基礎上增加配置stream模塊
# 在原有配置基礎上,追加--with-stream --with-stream_realip_module,切記不要漏掉原有配置
./configure --with-cc-opt='-g -O2 -ffile-prefix-map=/build/nginx-d8gVax/nginx-1.18.0=. -flto=auto -ffat-lto-objects -flto=auto -ffat-lto-objects -fstack-protector-strong -Wformat -Werror=format-security -fPIC -Wdate-time -D_FORTIFY_SOURCE=2' --with-ld-opt='-Wl,-Bsymbolic-functions -flto=auto -ffat-lto-objects -flto=auto -Wl,-z,relro -Wl,-z,now -fPIC' --prefix=/usr/share/nginx --conf-path=/etc/nginx/nginx.conf --http-log-path=/var/log/nginx/access.log --error-log-path=/var/log/nginx/error.log --lock-path=/var/lock/nginx.lock --pid-path=/run/nginx.pid --modules-path=/usr/lib/nginx/modules --http-client-body-temp-path=/var/lib/nginx/body --http-fastcgi-temp-path=/var/lib/nginx/fastcgi --http-proxy-temp-path=/var/lib/nginx/proxy --http-scgi-temp-path=/var/lib/nginx/scgi --http-uwsgi-temp-path=/var/lib/nginx/uwsgi --with-compat --with-debug --with-pcre-jit --with-http_ssl_module --with-http_stub_status_module --with-http_realip_module --with-http_auth_request_module --with-http_v2_module --with-http_dav_module --with-http_slice_module --with-threads --add-dynamic-module=/build/nginx-d8gVax/nginx-1.18.0/debian/modules/http-geoip2 --with-http_addition_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_sub_module --with-http_ssl_module --with-stream --with-stream_realip_module
  • 4.編譯,千萬不要安裝
# 千萬不要執行make install
make
  • 5.備份sbin目錄下原來的nginx文件:mv nginx nginx.bak
  • 6.將新編譯的nginx文件拷貝到Nginx的sbin目錄下
  • 7.配置OpenAI介面location(功能變數名稱和ssl配置請自行設置好)
location /gpt {
	proxy_pass  https://api.openai.com/v1/;
	proxy_ssl_server_name on;
	proxy_set_header Host api.openai.com;
	proxy_set_header Connection '';
	proxy_http_version 1.1;
	# 不緩存,支持流式輸出,打字機效果
	proxy_cache off;  # 關閉緩存
	proxy_buffering off;  # 關閉代理緩衝
	chunked_transfer_encoding on;  # 開啟分塊傳輸編碼
	tcp_nopush on;  # 開啟TCP NOPUSH選項,禁止Nagle演算法
	tcp_nodelay on;  # 開啟TCP NODELAY選項,禁止延遲ACK演算法
	keepalive_timeout 120s;  # 設定keep-alive超時時間
	proxy_set_header X-Forwarded-For $remote_addr;
	proxy_set_header X-Forwarded-Proto $scheme;
}
  • 8.重新載入Nginx配置:/usr/sbin/nginx -s reload
  • 9.本地訪問,驗證介面調用成功file

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • Callable介面和Future介面 創建線程的方式 1.繼承Thread類2.實現Runnable介面3.Callable介面4.線程池方式 Callable介面 在繼承Thread類和實現Runnable介面的方式創建線程時,線程執行的run方法中,返回值是void,即無法返回線程的執行結果, ...
  • 十二、指針和引用(二) 1、指針和數組的關係 1)思考 ​ 假設你要設計一種編程語言,你要如何實現數組呢?思考之前請先牢記:數組在記憶體中是連續的,維度由低到高(大部分操作系統下)。 2)彙編分析數組如何實現 //C++代碼 #include <iostream> int main() { int a ...
  • 主要涵蓋了Spring與持久層技術的整合,以及Spring與MyBatis的整合。第一章介紹了為什麼需要將Spring與持久層技術整合,以及Spring可以與哪些持久層技術進行整合。第二章詳細介紹了Spring與MyBatis的整合思路、開發步驟和編碼實例,並解決了MyBatis開發過程中存在的問題... ...
  • 背景 公司產品部收到了一些重要客戶的需求,他們希望能夠依賴獨立的資料庫存儲來支持他們的業務數據。與此同時,仍有許多中小客戶,可以繼續使用公共庫以滿足其需求。技術實現方面,此前持久層框架使用的Mybatis-plus,部分業務場景使用到了Sharding-JDBC用於分表,另外,我們的資料庫版本控制工 ...
  • 近年來,車輛保險成為廣大車主必須購買的一項重要保障。然而,如何查詢車輛保險狀態及保單信息卻是許多車主面臨的難題。隨著技術的不斷發展,API的出現為我們提供了一條便捷的解決之路。本文介紹的《車輛保險查詢API——查詢車輛保險狀態及保單信息》便是一款實用的API工具。 一、API的介紹 挖數據平臺車輛保 ...
  • hello,大家好!新手小白踏入 Python 的大門有點像冒險,但別擔心,我已經整理了一個超實用的入門指南,幫你規避學習過程中的十大雷區。這裡有關於 Python 的錯誤你應該註意的建議,一起來看看吧! 1. 拼寫錯誤 小心 prin 和 print 的奇妙之旅! # 錯誤示例 prin("Hel ...
  • 通俗解釋:單例模式 > 單:唯一 > > 例:實例 > > 單例設計模式,即某個類在整個系統中只能有一個實例對象可被獲取和使用的代碼模式 > > 例如:代表JVM運行環境的Runtime類 ...
  • 接上一隨筆,這次學習針對圖像數據的訪問(Numpy.array) 在OpenCV中,使用 imread() 方法可以訪問圖像,其返回值是一個數組,而根據傳入的不同圖像,將會返回不同維度的數組。 針對返回的圖像數據,即數組,我們是可以進行操作的: 1 import cv2 2 3 # MyPic.pn ...
一周排行
    -Advertisement-
    Play Games
  • 當使用Autofac處理一個介面有多個實現的情況時,通常會使用鍵(key)進行區分或者通過IIndex索引註入,也可以通過IEnumerable集合獲取所有實例,以下是一個具體的例子,演示如何在Autofac中註冊多個實現,並通過構造函數註入獲取指定實現。 首先,確保你已經安裝了Autofac Nu ...
  • 本篇將分享Prometheus+Grafana的監控平臺搭建,並監控之前文章所搭建的主機&服務,分享日常使用的一些使用經驗本篇將配置常用服務的監控與面板配置:包括 MySQL,MongoDB,CLickHouse,Redis,RabbitMQ,Linux,Windows,Nginx,站點訪問監控,已... ...
  • 使用Aspirate可以將Aspire程式部署到Kubernetes 集群 工具安裝 dotnet tool install -g aspirate --prerelease 註意:Aspirate 正在開發中,該軟體包將作為預覽版進行版本控制,--prelease 選項將獲得最新的預覽版。 容器註 ...
  • 前言 本文要說的這種開發模式,這種模式並不是只有blazor支持,js中有一樣的方案next.js nuxt.js;blazor還有很多其它內容,本文近關註漸進式開發模式。 是的,前後端是主流,不過以下情況也許前後端分離並不是最好的選擇: 小公司,人員不多,利潤不高,創業階段能省則省 個人開發者,接 ...
  • 在.NET中,Microsoft.Extensions.Logging是一個靈活的日誌庫,它允許你將日誌信息記錄到各種不同的目標,包括資料庫。在這個示例中,我將詳細介紹如何使用Microsoft.Extensions.Logging將日誌保存到MySQL資料庫。我們將使用Entity Framewo ...
  • chatgpt介面開發筆記3: 語音識別介面 1.文本轉語音 1、瞭解介面參數 介面地址: POST https://api.openai.com/v1/audio/speech 下麵是介面文檔描述內容: 參數: { "model": "tts-1", "input": "你好,我是饒坤,我是ter ...
  • 前面兩篇文章主要是介紹瞭如何解決高併發情況下資源爭奪的問題。但是現實的應用場景中除了要解決資源爭奪問題,高併發的情況還需要解決更多問題,比如快速處理業務數據等, 本篇文章簡要羅列一下與之相關的更多技術細節。 1、非同步編程:使用async和await關鍵字進行非同步編程,這可以避免阻塞線程,提高程式的響 ...
  • 大家好,我是棧長。 Nacos 2.3.0 前幾天正式發佈了,新增了不少實用性的新功能,真是史上最強版本。 Nacos 2.3.0 還真是一個比較重要的大版本,因為它涉及了太多重大更新,今天棧長給大家來解讀下。 Nacos 先掃個盲: Nacos 一個用於構建雲原生應用的動態服務發現、配置管理和服務 ...
  • IDEA的遠程開發功能,可以將本地的編譯、構建、調試、運行等工作都放在遠程伺服器上執行,而本地僅運行客戶端軟體進行常規的開發操作即可,舊版本IDEA目前不支持該功能.,本例使用的是IDEA2023.2.5版本 下麵介紹如何在IDEA中設置遠程連接伺服器開發環境並結合Cpolar內網穿透工具實現無公網 ...
  • 本文解釋為啥會有響應式編程,為什麼它在開發者中不太受歡迎,以及引入 Java 虛擬線程後它可能最終會消失。 命令式風格編程一直深受開發者喜愛,如 if-then-else、while 迴圈、函數和代碼塊等結構使代碼易理解、調試,異常易追蹤。然而,像所有好的東西一樣,通常也有問題。這種編程風格導致線程 ...