2023-05-19|閱讀時間 ‧ 約 6 分鐘

我的第一個 ChatGPT 聊天機器人

由于 ChatGPT 的出現讓我們看到了聊天機器人的新可能性,我們這篇文章的目的,就是要來製作第一個屬於自己的聊天機器人。
我們先來準備範例的程式碼,並且稍後會再跟大家介紹要設計自己的 ChatGPT 聊天機器人的重要概念。

初始專案與環境設定

下載程式碼
請先使用下面這一段指令下載我們的範例程式碼。
git clone https://github.com/u8621011/HelloGPT.git

設定API key
程式碼下載完後,到【命令列視窗】輸入下方指令來複製 .env 設定檔,複製完後,修改 .env 檔裏面的OPENAI_API_KEY 變數,設定為你個人的 OpenAI API key。
cd HelloGPT
copy .env.example .env

準備 python 執行環境
#確認目前正在 HelloGPT目錄下
virtualenv env
env/bin/activate
pip install -r requirements.txt
以上環境準備好了後,請使用 Visual Studio Code 來開啟專案內的 my-first-bot.ipynb 檔。
開啟檔案後,請先選擇 vscode 的執行環境。
執行環境選擇完後,你就可以依序在 Juypter notebook Cell 上按【執行按鈕】執行 Cell了。

基本概念

要以程式碼製作自己的對話機器人,最重要的核心程式如下:
首先我們先準備好呼叫 chat api 的工具,如下:
def get_completion_from_messages(messages, model="gpt-3.5-turbo", temperature=0):
  # 呼叫 OpenAI chat completion API
  response = openai.ChatCompletion.create(
    model=model,
    messages=messages,
    temperature=temperature, # 這個參數決定了模型輸出的隨機程度
  )

  # print(str(response.choices[0].message))
  # 回傳模型生成的回應
  return response.choices[0].message["content"]
然後再準備我們要傳給 chat api 的訊息結構。
messages =  [
  {'role':'system', 'content':'你就像唐朝大詩人李白一樣,請使用四言絕句來跟我做回應。'},
  {'role':'user', 'content':'你好'},
  {'role':'assistant', 'content':'兄臺別來無恙'},
  {'role':'user', 'content':'我很好,今天你打算去哪裏?'}  
]

response = get_completion_from_messages(messages, temperature=1)
print(response)
chat completion 的 messages 資料結構,其實就是儲存使用者和機器人的對話記錄,chat api 在收到我們如上的訊息資料後,它就可以知道和使用這對話的前後文。
下方則是實際自行後的結果。
大家有沒有注意到 chat api 竟然會以文言文回覆我們?會有這樣的效果則是因為我們在 message 裏面加上了 system 這個角色的設定。

角色定義
messages 這資料結構的功能不只是保存了機器人和使用者對話記錄,它也可以讓我在正式對話前,設定機器人該扮演的角色跟它對話的背景材料。
我們可以使用的角色共有三個(system/assistant/user),他們之間的關係如下:
system 角色定義了你期待對話機器人的整體行為準則。
assistant 的部分,則是記錄對話機器人的回應。
user 的部分,則是使用者的對話。
所以 messages 裏面我們通常在第一則放 system 的系統設定,而後續則是存放著 user 跟 assistant 之間互相來來往往的訊息。
最後,我們再來多看幾個範例,大家應該會更好理解 messages 訊息的使用方法。

對話範例

範例一
我們從機器人的回應可以看出來,因為沒有其他的對話記錄,所以機器人對我們是一無所知的。

範例二
如以下的 messages,由於我們在對話過程中已經提到我們自己名字,所以在稍後我們詢問機器人我們的名字時,它就會知道怎麼回覆。

接單機器人
最後一個 messages 定檔範例,我們在 system 裏面提示了機器人它的任務,作業流程以及我們的菜單,如下:
有了這些設定後,大家可以看到機器人與我們的對話就會更有目標性,而且很讓人驚訝的是,它也記得我們 system 設定內提到的很多的細節。回覆記錄如下:
以上希望能幫助大家理解如何開始設計自己的第一個聊天機器人,當然目前這樣的設計還無法盡善盡美,其他的技巧我們日後會再陸續跟大家介紹。

分享至
成為作者繼續創作的動力吧!
© 2024 vocus All rights reserved.