:::

實作相容OpenAI API,但背後不是OpenAI的API服務 / Implementing OpenAI API-Compatible Services, But Not Powered by OpenAI

8月 04, 2025 , , 0 Comments Edit Copy Download

2025-0212-193808.png

我們上次談到了不是背後說用到OpenAI模型的API不見得能相容OpenAI API,那我們這次就來做個能夠相容於OpenAI API的服務,但只會回答「喵」的「喵型語言模型」。

Last time we talked about how not all APIs that claim to use OpenAI models are necessarily compatible with the OpenAI API. This time, let's create a service compatible with the OpenAI API, but it only responds with "Meow." We'll call it the "Meow Language Model."


系統架構 / System Architecture

20250212_BLOG_OpenAI_API.note.note.pptx_1_-cropped.png

整個架構會由五個元件所組成:

  1. Python程式碼:不管你傳送什麼資訊,它只會回「喵」。
  2. Dify:AI應用程式框架的Dify裡面,可以用Code節點讓我們執行這段Python程式碼,然後把它包裝成Chatflow API。
  3. dify2openai:fatwang2開發的dify2openai將Dify的API模擬成OpenAI API格式。
  4. Cloudflare Tunnel:將運作在本地的API服務連接到Cloudflare提供的臨時網址上。
  5. FastGPT:使用自製的OpenAI API。

程式碼 / Source Code

https://github.com/pulipulichen/practice-Dify-OpenAI-API-2025.git

https://github.com/pulipulichen/practice-Dify-OpenAI-API-2025.git 

相關程式碼放在「practice-Dify-OpenAI-API-2025」保存庫裡面。這些程式碼是以Linux作業系統為主要環境,需要搭配Docker才能運作。這些程式碼並非給普通使用者執行,而是給開發者作為參考的資料。如果環境設置正確的話,執行 startup.sh 就能完成整個設定。

以下概述整個系統中需要設定的關鍵部分。


1. Python: Dify裡面的聊天流 / Python: The Chatflow in Dify

2025-0212-173558.png

首先,我們在Dify中建立一個Chatflow,用來實作「喵型語言模型」。你可以用我事先準備好的DSL檔案來建立。DSL檔案的下載網址如下:

https://pulipulichen.github.io/practice-Dify-OpenAI-API-2025/dify-dsl/Cat_LLM.yml 

2025-0212-173843.png

我們可以看到應用程式裡面的「Code」揭露了「喵型語言模型」的秘密。

2. Dify:API的發佈 / Dify: Publish API Service

2025-0212-174052.png

我們從「Publish」保存建立好的聊天流(chatflow)。

2025-0212-174133.png

從左邊的「Monitoring」找到Backend Service API的「API Key」按鈕。

2025-0212-174224.png

按下「Create new Secret key」,然後Dify會建立一個隨機的API Key,例如:「app-wUJxFJBqbPhZLUwkxGoI2qJQ」。我們複製它即可。

3. Dify2OpenAI:API轉換 / Dify2OpenAI: API Adapter

2025-0212-174425.png

https://github.com/pulipulichen/practice-Dify-OpenAI-API-2025/blob/main/dify2openai/docker-compose.yml

dify2openai的設定我已經在docker-compose.yml設定完成。它會連結Dify的服務(主要是Dify用來對外顯示網頁的nginx),只要輸入正確的API Key就能順利呼叫。在我預設的設定下,dify2openai會模擬成OpenAI的o1模型。如果需要修改的話,可以在 .env 環境變數裡面宣告。

2025-0212-174531.png

如果在瀏覽器輸入dify2openai預設的網址: http://localhost:18081 ,就會看到正常顯示的樣子。

4. Cloudflare Tunnel:將API轉換成公開網址 / Cloudflare Tunnel: Converting API into Public URL

2025-0212-174835.png

我在startup.sh腳本裡面使用了Cloudflare Tunnel將dify2openai的網址連接到了Cloudflare上。Cloudflare Tunnel會隨機分配一個網址,例如「 https://exam-therapist-disclaimer-compromise.trycloudflare.com  」。每次連接所獲得的網址都不一樣。

5. FastGPT:使用API / FastGPT: Using the API

2025-0212-175134.png

https://cloud.tryfastgpt.ai/account/thirdParty

接著我們到FastGPT裡面。FastGPT的Third Pary account可以讓我們設定OpenAI/OneAPI account,而在這之中我們可以設定API Key跟BaseUrl。API Key就是從Dify取得的API Key,而BaseUrl則是剛剛連接到Cloudflare Tunnel的網址,並在路徑上加上「/v1」,例如「https://exam-therapist-disclaimer-compromise.trycloudflare.com/v1」。

2025-0212-175536.png

接著便可到Studio建立應用程式,模型選用OpenAI的o1。此時使用的o1模型其實是連接到Dify的「喵型語言模型」,因此不管使用者講什麼內容,模型一律都只會回「喵」。

2025-0212-180839.png

如此一來,我們製作的相容於OpenAI API的「喵型語言模型」就打造完成了。這應該比花50美元打造蒸餾模型還要便宜喔?(誤)


結語 / Conclusion

2025-0212-193455.png

這篇的做法的重點並不是在「喵型語言模型」,而是「能夠跟OpenAI API相容」的這一個特性。只要能將你的服務封裝成OpenAI API的相容格式,那麼就能將它跟目前大多數主流系統相互整合。

舉例來說,以為我們雖然可以用LightRAG打造更先進的RAG架構,但打造出來的結果卻難以跟其他系統整合。現在我們有這一套Dify跟Dify2OpenAI轉換的做法,那就可以利用Dify的靈活性,將LightRAG結合到Dify的Chatflow裡面,最後就能整合到任何支援OpenAI API的系統上。

當然,Dify2OpenAI實際上只實作了OpenAI API的大型語言模型接口,並沒有實作全部的功能,它也不能完全替代OpenAI API。儘管如此,能將我們製作的「喵型語言模型」整合在其他系統上,其實就有很多應用價值了。


這篇介紹如何打造OpenAI API相容服務的文章就到此為止了。文章的最後要來問大家的是,這個OpenAI API你認為還有什麼值得注意的價值呢?

  • 1. 蒐集與記錄使用者的對談記錄。
  • 2. 可以加上一些自訂的規則。
  • 3. 跟客製化的RAG整合。
  • 4. 背後介接Google Gemini模型。這難道是AI界的NTR?
  • 5. 開發「汪型語言模型」。
  • 6. 其他:歡迎在下面留言,分享你的看法吧!