最近大範圍的研究 ChatGPT 能應用跟結合哪些既有服務,這篇文章是用來紀錄將 ChatGPT 應用在電子書翻譯的狀況。

代碼解析

首先我使用 Bilingual Book Maker 這個專案協助進行與 ChatGPT 的溝通,它這邊就是作兩個主要動作,呼叫 OpenAI API 和處理一些細節文本轉換,具體可以看以下片段代碼:

GPT-3.5-turbo model

# 調用 openai pkg 的方法
completion = openai.ChatCompletion.create(
    model="gpt-3.5-turbo",
    messages=[
        {
            "role": "user",
            # english prompt here to save tokens
            # prompt 告訴 OpenAI 請協助文本翻譯到 target language,並且回文內容不要包含原本的文本
            "content": f"Please help me to translate,`{text}` to {self.language}, please return only translated content not include the origin text",
        }
    ],
)
...

如果是使用 GPT-3 model 則是以下:

# 指定 model 和 token 長度
self.data = {
    "prompt": "",
    "model": "text-davinci-003",
    "max_tokens": 1024,
    "temperature": 1,
    "top_p": 1,
}
...
# prompt 告訴 openAI 請協助文本翻譯到 target language
self.data["prompt"] = f"Please help me to translate,`{text}` to {self.language}"

應用情境

有一份 PDF 書籍資料想要進行翻譯,需要作以下步驟處理

  1. 將 PDF 轉為 epub 電子書文本模式 目前僅支持 text
  2. 依照 readme 文本配置 這邊需要注意是 OpenAI Api 流量計費方式 https://platform.openai.com/account/usage

  1. script 將 epub read 取出後開始進行迭代呼叫 OpenAI Api 詳細可以看一下它 api payload 的空間限制

  2. 執行時間會依據你文本複雜度時間會有所變化,舉例來說我的檔案變化如下 花費約 1.5~2 小時執行時間,期間 terminal 不能進行背景執行與中斷處理

    Format Amount Size
    PDF 269 23.1MB
    epub - original 531 14.3MB
    epub - translated 671 14.4MB
  3. 可以看到它是將限制內文本打入 OpenAI Api 後 response 後進行產生插入:

  4. 頁數之所以會呈現高度上升是因為他的翻譯是基於原文底下進行插入指定語言文字,如下:

關注點

  1. 費用計算
  2. 以我的情境來說一本書 269 pages 字節數未計 A4格式 總花費 $5.95
  3. python 執行腳本期間會較為花費效能處理,原因是發送請求後需要等待 OpenAI 回應並寫入檔案
  4. 檔案會產生出全新的一份,而不是覆蓋原本檔案
  5. 這兩天有消息說 GPT-4 在下禮拜釋出 採用 multimodal 有個部分可以關注一下

the technology has come so far that it basically “works in all languages”: You can ask a question in German and get an answer in Italian.