本文作者:Eric
作者 Github : https://github.com/Ratherman
自由團隊將從0到1 手把手教各位讀者學會(1)Python基礎語法、(2)Python Web 網頁開發框架 – Django 、(3)Python網頁爬蟲 – 周易解夢網、(4)Tensorflow AI語言模型基礎與訓練 – LSTM、(5)實際部屬AI解夢模型到Web框架上。
AI . FREE Team 讀者專屬福利 → Python Basics 免費學習資源
將 Django Chatterbot Run 在雲端環境 Google Colab 上!
Note: 今天在教學提到的所有內容,可以參考此 Google Colab Notebook 連結。
Google Colab Notebook 是一個很像是 Jupyter Notebook 的工具,不過它是 Run 在雲端環境上面的,相信現在的每個人都有一個 Google Account,每個 Account 都會有對應的雲端硬碟(Google Drive),我們能夠在 Google Drive 上面建立並開啟 Google Colab Notebook 的,開啟 Notebook 之後我們就可以將 python 程式碼以及對應的筆記內容寫在上面了,會像是下圖這樣:
在今日目標有提到,今天的所有內容大家都可以直接使用這個 Google Colab Notebook 連結,這是我們幫大家寫好做為示範使用的 Notebook。不過如果要自己真的建立一個 Google Colab Notebook,那要如何建立呢?
在這邊大家如果點擊左方的 folder icon 會看到一開始 Google 就送給我們的 sample_data,我們可以在不連動到自己 Google Drive 檔案的情況下就可以有一些資料可以操作,不過我們待會會需要 clone 之前提過的 Django Chatterbot 專案,所以勢必要連結到 Google Account 的,我們繼續往下走!
Note:以下內容會從頭一個cell一個cell和大家一起走過,在上方提到的 Google Colab Notebook 連結是完整版,大家可以在開發過程中參考喔。
首先點擊右上角 Connect > Connect to hosted runtime 藉以使用 Google 的機器
然後將下方的程式碼寫入 Cell
from google.colab import drive drive.mount("/content/drive")
在這邊選擇要連結的 Google Account
然後將一長串類似於 token 的亂碼複製並貼在 textbot 內
完成後將會發現左方資料夾內容和 Google Drive 的內容同步了(如果沒有的話,點選上方 Refresh Folder Icon)
在 Google Colab Notebook 當中同樣也具備 Command Line/ Terminal 的功能,我們可以在上面利用 shell command 建立資料夾、切換路徑等等,所以在分別執行以下 cells 之後,我們將可以建立資料夾,然後將專案放入目標位置。
%cd
是用來切換路徑的,下方的教學只有這個 command 會用到 %
;另外 !cd
不會切換路徑,只能用來判斷該路徑是否存在,本教學不會使用到此 command。
其他常見的 shell command 有: ! python test.py
,! mkdir New_Folder
,! ls
, ...
%cd "./drive/My Drive" !mkdir django_chatterbot # 只有第一次執行此 cell 會需要此行,第二次之後就可以把這一行註解掉了 %cd django_chatterbot
首先,我們先將自己的路徑切入 My Drive/
目錄底下,然後建立一個 django_chatterbot/
目錄,然後再切入。這個時候因為我們已經連動了 Google Drive 和 Google Colab Notebook,所以大家可以在 Google Drive/My Drive(我的雲端硬碟)當中看到有多一個名為django_chatterbot
的資料夾。
# 只有第一次執行此 cell 會需要此行,第二次之後就可以把這一行註解掉了 !git clone https://github.com/gunthercox/ChatterBot.git
%cd "./ChatterBot/examples/django_app" !ls
這邊利用 !ls
會列出目前路徑底下所有的檔案和目錄。在這裡會看到一個 requirements.txt
的檔案,這個檔案是用來告訴新的開發者們應該要 install 什麼特定版本的特定套件,我們下面就要利用它來安裝套件。
requirements.txt
內容原本的 requirements.txt
其第二行(關於 chatterbot 套件的版本描述)是被註解掉的,不過我們會等等會需要將 chatterbot 這個套件一起安奘,所以這邊要記得把註解拿掉,變成以下這樣。
django>=2.2,<2.3 chatterbot>=0.8,<1.1
ctrl + s
Note: 開啟 requirements.txt 需要依序點選左側的目錄,其詳細的路徑是: drive/ My Drive/ django_chatterbot/ ChatterBot/ examples/ django_app/ requirements.txt ,如同下圖顯示
!pip3 install -r requirements.txt
之前有發現 settings.py 裡面的 MIDDLEWARE_CLASSES
需要置換成 MIDDLEWARE
,然後要將其中的一行設定註解掉。
MIDDLEWARE = ( 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.common.CommonMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', # 'django.contrib.auth.middleware.SessionAuthenticationMiddleware', 記得註解 'django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware', 'django.middleware.security.SecurityMiddleware', )
! python manage.py migrate
我們在這邊是已經和 manage.py 存在於同一個路徑底下了,所以可以直接這樣用。
! python manage.py runserver
在這邊可以看到 cell 成功的執行了,但是它跳出來的連結(i.e. http://127.0.0.1:8000/ )並不是我們可以 access 的到的連結,因為我們是遠端使用 Google的機器,所以真的要透過連結看到服務,也得從那台機器才能做到,所以我們會需要想辦法將這個服務 expose 在 Public IP 上!
下面的程式碼有參考了 Stack Overflow 上面的這篇文章(Is there a general way to run Web Applications on Google Colab?),大家有興趣可以點進去了解喔!
### 安裝 Ngrok !wget https://bin.equinox.io/c/4VmDzA7iaHb/ngrok-stable-linux-amd64.zip !unzip ngrok-stable-linux-amd64.zip ### Run ngrok to tunnel Django app port 8050 to the outside world. ### This command runs in the background. get_ipython().system_raw('./ngrok http 8050 &') ### Get the public URL where you can access the Django app. Copy this URL. ! curl -s http://localhost:4040/api/tunnels | python3 -c \ "import sys, json; print(json.load(sys.stdin)['tunnels'][0]['public_url'])" # 在這邊,將會得到類似於 https://c1fed6636b67.ngrok.io 這樣子的網址,這就是我們要用的 Public IP # 請大家將其中的 c1fed6636b67.ngrok.io 加入到 ChatterBot/examples/django_app/example_app/settings.py 內的 ALLOWED_HOSTS 裡面。 # 接著就可以進到 https://c1fed6636b67.ngrok.io 使用 chatbot 服務了! # 利用 manage.py 將服務 run 在 port = 8050,因為上面的方法就是將 8050這個 port expose 在網路世界當中。 ! python manage.py runserver 8050
我們在這邊是使用到昨天也有用到 Ngrok: 先是透過 !wget
下載壓縮檔之後,再利用 !unzip
解壓縮。
接著使用 ngrok http 8050
將 8050 port 打開,我們將會把 service run 在 8050 port (並非之前預設的 8000 port)
使用 ! curl ...
取得對應的 Public IP。
取得 url 之後要到 settings.py 調整 ALLOWED_HOSTS 的設定,見上方說明。
最後利用 python manage.py runserver 8050
讓服務 run 在 8050 port。
大家點進被 assign 到的連結之後,都有看到 Django Chatterbot 好好的運作了嗎? 有的話,就可以開始和它聊天囉!
我們在今天在雲端上面跑 Django Chatterbot APP,從第一天開始,到今天的內容,都算是在為未來的解夢服務鋪路,從明天開始進入 AI 處理的範疇,我們將會進入資料面的處理,同時會介紹爬蟲的應用。
自由團隊 官方網站:https://aifreeblog.herokuapp.com/
自由團隊 Github:https://github.com/AI-FREE-Team/
自由團隊 粉絲專頁:https://www.facebook.com/AI.Free.Team/
自由團隊 IG:https://www.instagram.com/aifreeteam/
自由團隊 Youtube:https://www.youtube.com/channel/UCjw6Kuw3kwM_il39NTBJVTg/
文章同步發布於:第十二屆 IT 挑戰賽部落格