我的第一個 ChatGPT 聊天機器人

更新於 發佈於 閱讀時間約 6 分鐘

由于 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 檔。

raw-image

開啟檔案後,請先選擇 vscode 的執行環境。

raw-image
raw-image

執行環境選擇完後,你就可以依序在 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 在收到我們如上的訊息資料後,它就可以知道和使用這對話的前後文。

下方則是實際自行後的結果。

raw-image

大家有沒有注意到 chat api 竟然會以文言文回覆我們?會有這樣的效果則是因為我們在 message 裏面加上了 system 這個角色的設定。

角色定義

messages 這資料結構的功能不只是保存了機器人和使用者對話記錄,它也可以讓我在正式對話前,設定機器人該扮演的角色跟它對話的背景材料。

我們可以使用的角色共有三個(system/assistant/user),他們之間的關係如下:

raw-image

system 角色定義了你期待對話機器人的整體行為準則。

assistant 的部分,則是記錄對話機器人的回應。

user 的部分,則是使用者的對話。

所以 messages 裏面我們通常在第一則放 system 的系統設定,而後續則是存放著 user 跟 assistant 之間互相來來往往的訊息。

最後,我們再來多看幾個範例,大家應該會更好理解 messages 訊息的使用方法。

對話範例

範例一

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

raw-image

範例二

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

raw-image

接單機器人

最後一個 messages 定檔範例,我們在 system 裏面提示了機器人它的任務,作業流程以及我們的菜單,如下:

raw-image

有了這些設定後,大家可以看到機器人與我們的對話就會更有目標性,而且很讓人驚訝的是,它也記得我們 system 設定內提到的很多的細節。回覆記錄如下:

raw-image

以上希望能幫助大家理解如何開始設計自己的第一個聊天機器人,當然目前這樣的設計還無法盡善盡美,其他的技巧我們日後會再陸續跟大家介紹。

留言
avatar-img
留言分享你的想法!
avatar-img
Ted Chen的沙龍
18會員
19內容數
Ted Chen的沙龍的其他內容
2023/08/04
本篇文章深入探討了如何評估模糊訊息在對話系統開發中的它的品質驗證方式,並且使用了類似Rubic評分準則的方法來評估回覆訊息。也介紹了專家回覆與實際回覆比較的評估方式。文章最終目的希望能讓讀者具備開發自己的對話機器人的知識。
Thumbnail
2023/08/04
本篇文章深入探討了如何評估模糊訊息在對話系統開發中的它的品質驗證方式,並且使用了類似Rubic評分準則的方法來評估回覆訊息。也介紹了專家回覆與實際回覆比較的評估方式。文章最終目的希望能讓讀者具備開發自己的對話機器人的知識。
Thumbnail
2023/07/28
此文針對對話系統的持續開發和改進過程進行詳細解說,尤其在提示訊息的設計與驗證方面。以大賣場的銷售助理為例,我們設計了提示訊息,進行多次測試與調整,確保回應結果符合預期。透過建立測試集和評估函式,我們實現了批次驗證,確保所有測試項目的有效性。
Thumbnail
2023/07/28
此文針對對話系統的持續開發和改進過程進行詳細解說,尤其在提示訊息的設計與驗證方面。以大賣場的銷售助理為例,我們設計了提示訊息,進行多次測試與調整,確保回應結果符合預期。透過建立測試集和評估函式,我們實現了批次驗證,確保所有測試項目的有效性。
Thumbnail
2023/07/21
本篇文章探討如何整合大型語言模型與外部程式與資源來生成回應訊息。我們使用OpenAI的Moderation API來確認內容的合適性,並使用新的提示來評估是否真正解答了使用者的疑問。整體流程的匯整讓我們一覽全貌。我們將在下一篇文章中分享更多有關回應訊息評估的細節。
Thumbnail
2023/07/21
本篇文章探討如何整合大型語言模型與外部程式與資源來生成回應訊息。我們使用OpenAI的Moderation API來確認內容的合適性,並使用新的提示來評估是否真正解答了使用者的疑問。整體流程的匯整讓我們一覽全貌。我們將在下一篇文章中分享更多有關回應訊息評估的細節。
Thumbnail
看更多
你可能也想看
Thumbnail
「欸!這是在哪裡買的?求連結 🥺」 誰叫你太有品味,一發就讓大家跟著剁手手? 讓你回購再回購的生活好物,是時候該介紹出場了吧! 「開箱你的美好生活」現正召喚各路好物的開箱使者 🤩
Thumbnail
「欸!這是在哪裡買的?求連結 🥺」 誰叫你太有品味,一發就讓大家跟著剁手手? 讓你回購再回購的生活好物,是時候該介紹出場了吧! 「開箱你的美好生活」現正召喚各路好物的開箱使者 🤩
Thumbnail
Hi,我是茶桁。 在过去的两讲中,我们已经使用 OpenAI 提供的 Embedding 接口完成了文本分类的功能。现在,我们回到 Completion 接口,这一讲将带你更深入地了解该接口的使用。除此之外,我们还将快速搭建一个有界面的聊天机器人,这将让你更好地理解 Completion 接口的应
Thumbnail
Hi,我是茶桁。 在过去的两讲中,我们已经使用 OpenAI 提供的 Embedding 接口完成了文本分类的功能。现在,我们回到 Completion 接口,这一讲将带你更深入地了解该接口的使用。除此之外,我们还将快速搭建一个有界面的聊天机器人,这将让你更好地理解 Completion 接口的应
Thumbnail
大家好,我是茶桁。 在本次讲座中,我们将研究 OpenAI 提供的 Completion API 接口。你可能已经体验过与 ChatGPT 进行聊天的乐趣,或是利用它帮我们编写各种文本材料的便利。现在,我们可以从这个需求出发,进一步探索 Completion API 的具体用法,以及如何利用它来生
Thumbnail
大家好,我是茶桁。 在本次讲座中,我们将研究 OpenAI 提供的 Completion API 接口。你可能已经体验过与 ChatGPT 进行聊天的乐趣,或是利用它帮我们编写各种文本材料的便利。现在,我们可以从这个需求出发,进一步探索 Completion API 的具体用法,以及如何利用它来生
Thumbnail
不用问我都知道,你们一定是被ChatGPT的火热出圈导致的开始关注人工智能,也是由于此才看到我这篇文章。 放心,大家想要的我一定会给予,既然大家都想先认识ChatGPT,那么我们就从这个主题开始。 接下来,我们学学如何利用openAI的API来和其沟通。在整个使用过程中,我们都使用的是GPT-3
Thumbnail
不用问我都知道,你们一定是被ChatGPT的火热出圈导致的开始关注人工智能,也是由于此才看到我这篇文章。 放心,大家想要的我一定会给予,既然大家都想先认识ChatGPT,那么我们就从这个主题开始。 接下来,我们学学如何利用openAI的API来和其沟通。在整个使用过程中,我们都使用的是GPT-3
Thumbnail
你是否曾經想過,如果有一個AI助手可以幫助你完成日常的工作,學習新的知識,甚至陪你聊天,那會是什麼樣的體驗?然而,有一種人工智慧的應用,可能你還不太熟悉,那就是AI聊天機器人。今天,我們要來談談一款由OpenAI開發的AI聊天機器人——ChatGPT。
Thumbnail
你是否曾經想過,如果有一個AI助手可以幫助你完成日常的工作,學習新的知識,甚至陪你聊天,那會是什麼樣的體驗?然而,有一種人工智慧的應用,可能你還不太熟悉,那就是AI聊天機器人。今天,我們要來談談一款由OpenAI開發的AI聊天機器人——ChatGPT。
Thumbnail
由于 ChatGPT 的出現讓我們看到了聊天機器人的新可能性,我們這篇文章的目的,就是要來製作第一個屬於自己的聊天機器人。 我們先來準備範例的程式碼,並且稍後會再跟大家介紹要設計自己的 ChatGPT 聊天機器人的重要概念。 初始專案與環境設定 下載程式碼 請先使用下面這一段指令下載我們的範例程式碼
Thumbnail
由于 ChatGPT 的出現讓我們看到了聊天機器人的新可能性,我們這篇文章的目的,就是要來製作第一個屬於自己的聊天機器人。 我們先來準備範例的程式碼,並且稍後會再跟大家介紹要設計自己的 ChatGPT 聊天機器人的重要概念。 初始專案與環境設定 下載程式碼 請先使用下面這一段指令下載我們的範例程式碼
Thumbnail
前言 ChatGPT 的熱門程度早已想當然而,企業們爭相開始導入 OpenAI 技術的應用,好比進入了 AI 群雄割據的年代,不過 Microsoft Copilot 的主權宣示,這個重視高生產力時代,將會暫時遠離一場腥風血雨的爭鬥。 回歸本次的主角「AI 客服機器人」,筆者將他應用於課程回覆的狀況
Thumbnail
前言 ChatGPT 的熱門程度早已想當然而,企業們爭相開始導入 OpenAI 技術的應用,好比進入了 AI 群雄割據的年代,不過 Microsoft Copilot 的主權宣示,這個重視高生產力時代,將會暫時遠離一場腥風血雨的爭鬥。 回歸本次的主角「AI 客服機器人」,筆者將他應用於課程回覆的狀況
Thumbnail
今天終於可以揮別那些假的ChatGPT串接教學了! 在今天(2023/03/02)之後,終於可以串接真正的ChatGPT API了! 這是真正的GPT 3.5 API官方版本,內文提供簡介與python 串接教學。
Thumbnail
今天終於可以揮別那些假的ChatGPT串接教學了! 在今天(2023/03/02)之後,終於可以串接真正的ChatGPT API了! 這是真正的GPT 3.5 API官方版本,內文提供簡介與python 串接教學。
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News