大家好,我們是 AI . FREE Team - 人工智慧自由團隊,這一次的鐵人賽,自由團隊將從0到1 手把手教各位讀者學會 (1)Python基礎語法 (2)Python Web 網頁開發框架 – Django (3)Python網頁爬蟲 – 周易解夢網 (4)Tensorflow AI語言模型基礎與訓練 – LSTM (5)實際部屬AI解夢模型到Web框架上。
自由團隊的成立宗旨為開發AI/新科技的學習資源,提供各領域的學習者能夠跨域學習資料科學,並透過自主學習發展協槓職涯,結合智能應用到各式領域,無論是文、法、商、管、醫領域的朋友,都可以自由的學習AI技術。
AI . FREE Team 讀者專屬福利 → Python Basics 免費學習資源
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 連結是完整版,大家可以在開發過程中參考喔。
from google.colab import drive
drive.mount("/content/drive")
在 Google Colab Notebook 當中同樣也具備 Command Line/ Terminal 的功能,我們可以在上面利用 shell command 建立資料夾、切換路徑等等,所以在分別執行以下 cells 之後,我們將可以建立資料夾,然後將專案放入目標位置。
%cd
是用來切換路徑的,下方的教學只有這個 command 會用到 %
;另外 !cd
不會切換路徑,只能用來判斷該路徑是否存在,本教學不會使用到此 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
!wget
下載壓縮檔之後,再利用 !unzip
解壓縮。ngrok http 8050
將 8050 port 打開,我們將會把 service run 在 8050 port (並非之前預設的 8000 port)! curl ...
取得對應的 Public IP。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/
文章同步發布於:自由團隊部落格
(想看更多文章?學習更多AI知識?敬請鎖定自由團隊的頻道!)