編輯嚴選
AI工具怎麼幫助我們學習程式-ChatGPT的實踐與範例

閱讀時間約 13 分鐘
raw-image

在生成式AI與大型語言模型(Large Language Model, LLM)蓬勃發展下,有許多工具可以幫助我們學習與撰寫程式,例如ChatGPTCopilot,ChatGPT有免費的GPT-3.5可以使用,或付費使用GPT-4;Copilot則是有30天試用期,試用完可選擇付月費或年費。以下列舉兩個我使用ChatGPT學習程式語言的情境,這邊使用的都是免費的GPT-3.5,因此不能用GPT-4 Code Interpreter 的功能,以下將提出一些範例與使用上的建議。

在開始之前,先說明一下LLM常用的術語,首先是「指令」、「提示」或「詠唱詞」,其實就是用戶的請求和問題,英文為Prompt;模型根據給定的Prompt生成的回應,英文則是Completion

一、諮詢學習方向/路徑

因為程式語言充滿各種模組及套件,要實現同一個功能,可能有好幾種方式,因此,在學習或想要實現某種功能時,先詢問ChatGPT有哪些方法/模組可以完成,能夠省去探索的時間,並讓ChatGPT給出範例程式碼,更是可以事半功倍。

以下提供一個指令(Prompt)的範例,如果我想要學自然語言處理的內容,並且想做情緒分析,我可以這樣詢問:如何用python作文本情緒分析,請給我作業流程與範例程式碼

raw-image

結果發現,他的確給出了流程與範例程式碼,但我們想用不同方法實現,因此,換一個問法:如何用python作文本情緒分析,請給我至少三種不同的作業流程與範例程式碼。給出的結果如下:

1.基於情感詞典的情緒分析:這種方法使用情感詞典來對文本進行情感分析,如VADER情感詞典。這是一種快速且容易實現的方法。
2.使用機器學習模型進行情緒分析:這種方法使用機器學習模型,如支持向量機(SVM)或隨機森林(Random Forest)等,將文本分類為正面、負面或中性。
3.使用深度學習模型進行情緒分析:這種方法使用深度學習模型,如循環神經網絡(RNN)或轉former,通常需要更大的數據集來獲得更好的效果。

可以看到,ChatGPT給出了深度學習以外的另外兩種方法,如此一來,對於用Python進行文本情緒分析便有基礎的概念,可以進一步追問或者去google相關領域的知識,並用其提供的範例程式碼進行操作,以此來加快學習的步伐。

總之,用ChatGPT諮詢學習方向/路徑,可以歸結成以下問法:

如何用 [某個程式語言] 作 [某個任務] , [詳細說明或者針對資料的敘述] ,請給我 [__種] 不同的作業流程與範例程式碼。

二、直接叫AI幫忙寫程式

第二個我最常用的情境,就是直接叫AI幫忙寫程式了,只要跟ChatGPT講程式語言、具體任務、預期結果,通常都能夠得到很不錯的結果,以下為兩個例子的呈現。

範例一:機器學習建模

我下的Prompt是我想要用python跑decision tree和random forest兩個模型,做的是分類的任務,並畫圖呈現訓練集跟測試集的學習曲線,X軸使用epoch

結果呈現如下,的確給了我用scikit-learn實現的程式碼,也能夠運行。

尚未套用自己資料的completion

尚未套用自己資料的completion

上面給出的程式碼,是生成一個範例的資料集,接著,我試圖敘述自己的資料集,請ChatGPT生成code:我有三個資料,avg_df、knn_df、linear_df,分別是用平均數、knn、linear三種方式填補空缺值處理完的資料。 想要用'pm2.5', 'o3'當作X,'status'當作Y,Y是一個類別變數,有0、1、2、3四種類別。 我要訓練一個分類模型,分別套用以下五個模型:Decision Tree、Random Forest、SVC、Logistic Regression、K-Nearest Neighbors 最終的結果是想畫圖,每張圖代表一個模型,X軸為不同參數,並且有三條線分別表示套用三個資料下的預測準確率。 超參數的部分,Decision Tree用ccp_alpha,Random Forest用min_df,SVC用kernel,Logistic Regression用C,K-Nearest Neighbors用n_neighbors。 請給我python的code,註解請用繁體中文。

raw-image

這樣的問法,的確成功生成了我想要的結果,而且完全沒有錯誤,非常厲害!

範例二:即時爬取公司財報資訊

第二個範例,是想做一個查詢財報資訊的程式,用到的技術是網路爬蟲。網路爬蟲本來就是GPT比較難實踐的一個任務,因此,我試圖用各種方式不斷修正,最終成功獲得可以運行的程式碼。

首先,我的任務是,有一些券商的網站可以找到上市櫃公司的年報/季報,因此我想要把有興趣的財務指標抓下來,作為投資決策參考。

此時,我下的prompt為:
元大證券網站中,台積電(2330)的各年財務報表,網址為http://jdata.yuanta.com.tw/z/zc/zcr/zcr0.djhtm?b=Y&a=2330 我想要抓取每年的「每股盈餘」、「營業毛利率」,抓取的時候用「科目名稱」進行抓取,撰寫環境是Google colab,請給我程式碼

ChatGPT給了我一段程式與說明,說明如下:

這個程式碼使用requests模組從元大證券網站獲取台積電的財務報表網頁資料。然後,使用BeautifulSoup模組對網頁資料進行解析,找到表格並抓取每年的每股盈餘和營業毛利率資料。根據表格標題的科目名稱進行索引,找到對應的欄位資料。最後,使用pandas模組將資料轉換成DataFrame,並印出結果。
請注意,網站的結構可能會有所更改,導致程式碼無法正確運行。如果發生這種情況,您可能需要根據網站的新結構調整程式碼。

結果貼到Python環境運行,發現無法運行。於是我把網頁原始碼(程式中變數soup)的內容貼給他看,裡面包括我要抓的財報資訊,目的是讓模型知道要抓的資訊在網頁結構中的哪個位置,並打上prompt如下:
請依據以上原始碼,抓取每年的「每股盈餘」、「營業毛利率」,抓取的時候用「科目名稱」進行抓取,撰寫環境是Google colab,請給我程式碼

prompt中給了部分原始碼的內容(裡面包括我要抓的財報資訊)

prompt中給了部分原始碼的內容(裡面包括我要抓的財報資訊)

給了原始碼內容,果然就有成功生成表格了,但抓到的內容只有兩年,網頁中卻有八年,因此仍不完整。

prompt提供原始碼後,程式跑出的結果

prompt提供原始碼後,程式跑出的結果

因此,我給了ChatGPT更明確的修正指令:
抓到資料了,但資料有點錯誤,
1. 「每股盈餘」、「營業毛利率」,應該是出現在最左邊的column,因此要用最左邊的column進行篩選
2. 原始資料的每個row代表期別,這邊只抓了期別為2022、2021,我要完整的資料共9個row,欄位名稱應該包括['期別','2022','2021','2020','2019','2018','2017','2016','2015'],以上,請幫我修正

修正結果果然成功了,接著,再用修正好的程式碼,請ChatGPT幫我寫一個查詢功能。我下的prompt,是把修正好的程式碼貼給他,並且也給他看輸出的資料框(Data Frame)格式,這邊要將表格轉成ChatGPT看得懂的格式,在GPT-3.5不能傳檔案的情況下也是可以達成的,只要把Table轉成Markdown就可以,因此,我下的Prompt如下:
以下是我目前的程式碼:.........。
抓下來的dataframe(df)前幾行如下:.........。
其中,抓取的網站只要更改公司代碼,就可以查詢其他公司,例如,想抓取台積電(2330),網址為http://jdata.yuanta.com.tw/z/zc/zcr/zcr0.djhtm?b=Y&a=2330;想抓取鴻海(2317),網址為http://jdata.yuanta.com.tw/z/zc/zcr/zcr0.djhtm?b=Y&a=2317
抓下來的dataframe中,第一個欄位是科目名稱,請幫我改寫上面程式碼,改寫成我可以輸入多個我想要查詢的公司代碼、科目名稱,並呈現結果。

最終,也成功得到結果了,結果如下所示。

最終成功得到的結果

最終成功得到的結果

最後,分享給大家這個完全由ChatGPT(GPT-3.5)寫出來的爬蟲程式,可以丟到Google Colab上面玩玩喔。

# 輸入多個公司代碼和科目名稱
companies = {'台積電': '2330', '鴻海': '2317'}
subjects = ['每股盈餘', '營業毛利率']

# 載入必要模組​
import requests
import pandas as pd
from bs4 import BeautifulSoup

# 定義取得財報的函式​
def get_financial_data(company_code, subject_names):
url = f'http://jdata.yuanta.com.tw/z/zc/zcr/zcr0.djhtm?b=Y&a={company_code}'
response = requests.get(url)
soup = BeautifulSoup(response.content, 'html.parser')
table = soup.find('table', id='oMainTable')
headers = ['期別','2022','2021','2020','2019','2018','2017','2016','2015']
data = []
rows = table.select('div.table-row')
for row in rows:
cells = row.select('span.table-cell')
subject = cells[0].text.strip()
if subject in subject_names:
values = [cell.text.strip() for cell in cells[1:]]
data.append([subject] + values)
df = pd.DataFrame(data, columns=headers)
return df

# 取得不同公司的資料並合併
dfs = []
for company_name, company_code in companies.items():
df_company = get_financial_data(company_code, subjects)
dfs.append(df_company)

result_df = pd.concat(dfs, keys=companies.keys(), names=['公司名稱'])

# 印出結果
result_df

結論

目前的LLM真的日新月異,除了付費版GPT-4提供了可以上傳檔案,甚至用Python導出結果的功能外,還有優勢在於完全免費的最大競爭者Claude 2,未來必定還會推出更多免費與開源的AI工具,我們再拭目以待。

另外,使用這些工具時,我發現其實怎麼下指令(prompt)是最重要的,盡量說清楚情境、關鍵字,並且給範例、線索,最後明確表明想要的結果、成品的樣態。基本上都可以達到不錯的效果,在網路上也找得到許多指令的下達方式,例如這篇,提供了許多用ChatGPT寫程式的指令,可以參考。

最後,在現在工具如此發達的時代,正是所有人踏入資料科學、程式設計、流程自動化領域的最佳時機,因此,快握緊手把,一起飛快學習吧!

善用AI,可以跳過很多學習程式的障礙,用對方法,從入門到寫一個可用的功能,其實只需要不到一個禮拜的時間!




60會員
6內容數
公務員是我的第一份正職,從高考榜首到離開公務員,跨領域轉職到資料科學家,公務員的經歷、所學、轉職的心路歷程等,在「關於公務員,我想說的是」專題中,一一跟大家分享
留言0
查看全部
發表第一個留言支持創作者!
你可能也想看
使用AI工具,將文字和圖片生成影片 在數位時代,影片成為了許多人分享和傳達訊息的有力工具。影片擁有強大的傳達能力,結合了文字、圖片、音效和動態元素,比閱讀純文字和圖片更有吸引力。 但現在,借助人工智慧(AI)工具的幫助,除了可以根據使用者輸入的提示(Prompt)來生成文字,圖片,音樂等等,甚至還可以生成影片!
Thumbnail
avatar
書中小屋
2023-07-18
AI工具的使用:人工智慧如何通過機器學習為我們服務你有沒有想過一個機器可以像人類一樣學習和做出決定的世界?隨著人工智慧(AI)的出現,這不再是一個遙遠的夢想。人工智慧工具是指可以複製人類智慧並執行各種任務的智能機器。
Thumbnail
avatar
AI筆者
2023-07-06
AI 工具如何輔助寫出好筆記今年是AI元年,各行各業不管想要不想要都「被迫」與AI同行。到底是同行還是反行?有的人擔心工作被取代,有的人樂見其成讓AI成為生活或工作上的輔助,無論你想不想,不可否認的是AI已經改變我們的生活了。每天AI都有新玩法誕生,社群網路上也有許多應用AI的祕笈或社團,看很多人在文字上的玩法,不如實際自己走
Thumbnail
avatar
愛美麗
2023-06-28
如何用AI工具ChatGPT學習程式和設計?ChatGPT增加學習效率,該怎麼輸入能產生好的效果呢? 本篇實作範例教大家輸入合適的Prompt來產生好的結果
Thumbnail
avatar
JayLinXR
2023-05-19
駕馭AI工具的關鍵能力這兩週我帶領高中生進行AI輔助設計思考的觀察,國高中生使用ChatGPT,有三大門檻影響他們對於AI工具的掌控能力: 語意表達力 為了完成老師的作業,想使用ChatGDP提供資訊素材,首先他們得先知道作業的目標與其學習的目的,才有辦法用自己的與會請AI提供有用的資訊。 而這個部分也充分考驗老師出題的
Thumbnail
avatar
Winny Wang
2023-03-05
如何用 AI 工具讓一天多出8小時,Tesla投資者日與Airbnb逆轉關鍵AI的實用工具玲瑯滿目,我現在打算看到有趣和實用的,都直接去試用並介紹給大家。現在一些AI工具是真的能夠大幅提升生產力,讓你一天可以多出好幾個小時,舉例來說,特斯拉的投資者日全長有4個小時,要怎麼樣最快抓到重點呢?
Thumbnail
avatar
IEObserve 國際經濟觀察
2023-03-05
一定要去理解AI工具,不要排斥。跟大家說件事情,那就是AI,一定要去理解,才不會被世界淘汰。 現在工具真的太多元。 好比以下這部影片,看的出來是我嘗試製作影片僅一週,而這僅是我一個晚上就產出的實驗性作品嗎? AI腳本、AI剪輯、AI配音、AI字幕AI配樂。 我要做的只是素材的選用、更換、加入音效、配樂、特效的調整。 而我使
Thumbnail
avatar
方小小
2023-03-02
用ChatGPT與AI工具輔助創作是甚麼感覺? 太棒了!本篇文章在分享親身體驗使用AI輔助創作的過程。文章中可以看到作者第一手的經驗與描述,如何運用ChatGPT、Midjourney、Speech to Text、Autotag等眾多工具來進行輔助,以及最終的成果
Thumbnail
avatar
Thomas Fan
2023-02-25