2024年9月5日 星期四

使用ChatGPT API快速實作翻譯機


許嘉仁 Jerry hsu

  • 恆逸教育訓練中心-資深講師
  • 技術分類:程式設計

 




本篇文章的內容會需要使用者先註冊OpenAI帳戶,並且需要登記信用卡資訊以及儲值才能使用,相關的註冊方式可以參考網路上的影片。另外透過官網的操作介面建立並取得呼叫API所需要的API Key,這樣才能開始使用喔。

撰寫這個練習的主因是有時出國在外需要與人溝通,雖然現行的翻譯應用程式很多,但自己寫的比較自嗨,這個範例雖然使用Windows Form展示,但實際上筆者有改用Xamarin寫成app並安裝到android手機,網路穩定的狀況下速度尚可但不滿意。

開始吧!簡單整理一下步驟:
1、 建立Windows Form專案並放置需要的使用者畫面,如下:


2、 透過Nuget Package Manager安裝OpenAI的套件,如下圖:


3、 先using三個名稱空間:

using OpenAI_API;
using OpenAI_API.Chat;
using OpenAI_API.Models;    

然後在Form Load事件先建立好呼叫API的物件,以及建立新的對話群,也可以設定要使用的模組,然後給定事先取得的API Key,也就是下列程式的"API KEY"的位置,需要自行替換喔。

OpenAIAPI? api = null;
Conversation? conversation = null;

private void Form1_Load(object sender, EventArgs e)
{
    api = new OpenAIAPI("API KEY");

    conversation = api.Chat.CreateConversation();
    conversation.Model = Model.ChatGPTTurbo;
}     

4、 然後中翻日按鈕的點選事件撰寫程式,透過適當的情境描述以及對話描述,讓ChatGPT給予適當的日文結果,程式如下:

private async void button1_Click(object sender, EventArgs e)
{
    textBox1.Text= string.Empty;
    conversation.AppendSystemMessage("你是個來日本旅遊的遊客,希望能跟日本人溝通");
    conversation.AppendUserInput($"請幫我把下列這段話翻譯成適當的日文,翻譯內容:「{textBox2.Text}」");
    await conversation.StreamResponseFromChatbotAsync(x =>
    {
        textBox1.Text += x;
    });
}        

也在日翻中按鈕的點選事件撰寫程式,一樣透過適當的情境描述以及對話描述,讓ChatGPT給予適當的中文結果,程式如下:

private async void button2_Click(object sender, EventArgs e)
{
    textBox2.Text = string.Empty;
    conversation.AppendSystemMessage("你是個日本人");
    conversation.AppendUserInput($"請幫我把下列這段話翻譯成適當的中文,翻譯內容:「{textBox1.Text}」");
    await conversation.StreamResponseFromChatbotAsync(x =>
    {
        textBox2.Text += x;
    });
}           

接下來就測試看看翻譯成日文的狀況如何,如下圖:


再來看看日文翻譯成中文的狀況如何,如下圖:


測試結果如果不滿意,大家可以調整情境設定跟對話設定來修正,而這就是跟坊間翻譯軟體不一樣的地方,透過隨時替換情境能得到不同的結果回覆;然後再透過對話內容也能翻譯成各種文字,這個範例只是個入門小練習,請大家發揮創意來測試吧!



您可在下列課程中了解更多技巧喔!

0 意見:

張貼留言