方格精選

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,可以跳過很多學習程式的障礙,用對方法,從入門到寫一個可用的功能,其實只需要不到一個禮拜的時間!




avatar-img
66會員
6內容數
公務員是我的第一份正職,從高考榜首到離開公務員,跨領域轉職到資料科學家,公務員的經歷、所學、轉職的心路歷程等,在「關於公務員,我想說的是」專題中,一一跟大家分享
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
Fann的沙龍 的其他內容
資料分析工具百百種,有容易操作資料、視覺化的BI工具、常用於各領域的分析模型套裝軟體等等,但對於想做資料分析、資料科學的人,「程式語言」可以說是現今不可或缺的能力,而R與Python則可以稱為資料科學領域最熱門的兩個程式語言,這篇文章主要想分享R與Python的使用情境,以及分享網路上一些資源。
  在之前的文章中,分享了我從公務員轉職到資料科學家的歷程,其中大大增加我履歷亮點的,就是大量的專案經驗,也就是大家稱的Side Project。這篇文章,想要分享Side Project為何、規模應該多大、方向怎麼找、在職期間怎麼找時間規劃完成自己的專案......等,希望可以給讀者一些更具體的想
大學讀會計系,雙主修社會系,研究所讀農業經濟,課餘時經營程式接案工作,畢業後,踏上了將近1年半的公務員生活,之後毅然辭職,離開公務界,即將成為一名資料科學家 (Data Scientest)。這篇文章想簡短分享跨領域之路,主要著重在這段旅程是怎麼開始的,當中經歷了什麼,而我又學到了什麼。
資料分析工具百百種,有容易操作資料、視覺化的BI工具、常用於各領域的分析模型套裝軟體等等,但對於想做資料分析、資料科學的人,「程式語言」可以說是現今不可或缺的能力,而R與Python則可以稱為資料科學領域最熱門的兩個程式語言,這篇文章主要想分享R與Python的使用情境,以及分享網路上一些資源。
  在之前的文章中,分享了我從公務員轉職到資料科學家的歷程,其中大大增加我履歷亮點的,就是大量的專案經驗,也就是大家稱的Side Project。這篇文章,想要分享Side Project為何、規模應該多大、方向怎麼找、在職期間怎麼找時間規劃完成自己的專案......等,希望可以給讀者一些更具體的想
大學讀會計系,雙主修社會系,研究所讀農業經濟,課餘時經營程式接案工作,畢業後,踏上了將近1年半的公務員生活,之後毅然辭職,離開公務界,即將成為一名資料科學家 (Data Scientest)。這篇文章想簡短分享跨領域之路,主要著重在這段旅程是怎麼開始的,當中經歷了什麼,而我又學到了什麼。
本篇參與的主題活動
在生成式AI與大型語言模型(Large Language Model, LLM)蓬勃發展下,有許多工具可以幫助我們學習與撰寫程式,這篇文章提供了實作範例與一些經驗,分享如何使用ChatGPT(免費的GPT-3.5)協助程式語言的學習,並且完成屬於自己的程式。
前幾個禮拜,AWS 舉行 Startup Day Taiwan。想當然爾,最熱門的主題非生成式 AI (Generative AI) 莫屬。既然 AWS 有現成的工具,身為一名工程師,自然看看無妨,這篇文章算是新手開箱文,會說明如何部署一套基礎模型,並使用 AWS SDK 與其互動。
前言 我在工作中沒有什麼機會接觸到機器學習,學生時期也沒有學習過相關知識。 作為一個業餘小白,我對機器學習非常感興趣。在自學的過程中,我逐漸意識到利用機器學習可以做很多有趣的事情。 因此,我決定嘗試使用 AWS SageMaker JumpStart 來實驗文字生成式繪圖 AI ,以了解機
最近玩到了一個我覺得很新奇有趣的軟體,叫做SillyTavern。 SillyTavern是專用於創建虛擬角色的AI聊天軟體,SillyTavern是TavernAI的分支,但SillyTavern走上了自己的路,加進了許多額外功能,並且仍在積極的持續更新中。 然後,可以色色!
「Prompt」這個詞是提示的意思,但為什麼需要提示呢? 當AI不理解我們的時候,勢必給出的回應並非準確的為我們解答,因此一個好的提示是非常重要的,就如同我們人與人之間的溝通一樣,如何將自己心裡的疑惑轉化成好的問題來提問對方,讓對方理解,進而給出一個明確的答案,這就是提示(Prompt)的重要性,對
在生成式AI與大型語言模型(Large Language Model, LLM)蓬勃發展下,有許多工具可以幫助我們學習與撰寫程式,這篇文章提供了實作範例與一些經驗,分享如何使用ChatGPT(免費的GPT-3.5)協助程式語言的學習,並且完成屬於自己的程式。
前幾個禮拜,AWS 舉行 Startup Day Taiwan。想當然爾,最熱門的主題非生成式 AI (Generative AI) 莫屬。既然 AWS 有現成的工具,身為一名工程師,自然看看無妨,這篇文章算是新手開箱文,會說明如何部署一套基礎模型,並使用 AWS SDK 與其互動。
前言 我在工作中沒有什麼機會接觸到機器學習,學生時期也沒有學習過相關知識。 作為一個業餘小白,我對機器學習非常感興趣。在自學的過程中,我逐漸意識到利用機器學習可以做很多有趣的事情。 因此,我決定嘗試使用 AWS SageMaker JumpStart 來實驗文字生成式繪圖 AI ,以了解機
最近玩到了一個我覺得很新奇有趣的軟體,叫做SillyTavern。 SillyTavern是專用於創建虛擬角色的AI聊天軟體,SillyTavern是TavernAI的分支,但SillyTavern走上了自己的路,加進了許多額外功能,並且仍在積極的持續更新中。 然後,可以色色!
「Prompt」這個詞是提示的意思,但為什麼需要提示呢? 當AI不理解我們的時候,勢必給出的回應並非準確的為我們解答,因此一個好的提示是非常重要的,就如同我們人與人之間的溝通一樣,如何將自己心裡的疑惑轉化成好的問題來提問對方,讓對方理解,進而給出一個明確的答案,這就是提示(Prompt)的重要性,對
你可能也想看
Google News 追蹤
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
我們人類和ChatGPT的對話技巧也是需要學習的,有鑑於此,我想要一天分享一點「和ChatGPT對話的技術」,並且每篇文章長度控制在三分鐘以內,讓大家不會壓力太大,但是又能夠每天成長一點。 今天我們以 Scenario Based 模擬為基礎,來進行 Prompt 撰寫 模擬戰略討論
我們人類和ChatGPT的對話技巧也是需要學習的,有鑑於此,我想要一天分享一點「和ChatGPT對話的技術」,並且每篇文章長度控制在三分鐘以內,讓大家不會壓力太大,但是又能夠每天成長一點。 Prompt Template 是在眾多應用程式中塑造人工智慧產生回應的結構基礎,它們代表了Prompt
我們人類和ChatGPT的對話技巧也是需要學習的,有鑑於此,我想要一天分享一點「和ChatGPT對話的技術」,並且每篇文章長度控制在三分鐘以內,讓大家不會壓力太大,但是又能夠每天成長一點。 當我們從基礎 Prompt 過渡到進階 Prompt 時,我們開始釋放人工智慧的潛在潛力,這個階段被稱為
我們人類和ChatGPT的對話技巧也是需要學習的,有鑑於此,我想要一天分享一點「和ChatGPT對話的技術」,並且每篇文章長度控制在三分鐘以內,讓大家不會壓力太大,但是又能夠每天成長一點。 GPT-4 展現了對人類動機和情感(社交智慧的重要面向)的敏銳理解,擅長產生考慮提示情緒背景的反應。這種
我們人類和ChatGPT的對話技巧也是需要學習的,有鑑於此,我想要一天分享一點「和ChatGPT對話的技術」,並且每篇文章長度控制在三分鐘以內,讓大家不會壓力太大,但是又能夠每天成長一點。 ChatGPT縱然成功,但是仍有一些任務處理得不好,例如: 需要邏輯推論的任務 多步驟的任務
我們人類和ChatGPT的對話技巧也是需要學習的,有鑑於此,我想要一天分享一點「和ChatGPT對話的技術」,並且每篇文章長度控制在三分鐘以內,讓大家不會壓力太大,但是又能夠每天成長一點。 生成式AI (Generative AI)是一種人工智慧,它調度機器學習方式來產生新的或者是原創的文字、
Thumbnail
ChatGPT(全名:聊天生成預訓練轉換器)是一個由 OpenAI 開發的人工智慧聊天機器人程式。它於 2022 年 11 月推出,使用了基於 GPT-3.5、GPT-4 和 GPT-4o 架構的大型語言模型,並以強化學習進行訓練。
Thumbnail
ChatGPT 是 OpenAI 開發的大型語言模型,以其強大的生成能力和對話能力而聞名。 ChatGPT 的訓練過程主要分為兩個階段:預訓練和微調。 微調使用了 RLHF(Reinforcement Learning from Human Feedback)技術,可以有效地提高模型生成內容的質量。
Thumbnail
給出好的指令也是一門學問! 我們在業界稱為「指令工程」(Prompt Engineering),OpenAI 官方也有公布指令工程的操作資訊,但是今天我們只要學會這樣的操作方式,你可以贏過現在多數的AI使用者。
Thumbnail
本文章介紹瞭如何使用AutoGPT, 一種可以自主蒐集資料生成訴求,幫你與ChatGPT在互動中提出一連串的問題,來解決你的問題。對於安裝時的常見問題也進行了解答,並提供了使用的步驟以及目前的解決方式。
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
我們人類和ChatGPT的對話技巧也是需要學習的,有鑑於此,我想要一天分享一點「和ChatGPT對話的技術」,並且每篇文章長度控制在三分鐘以內,讓大家不會壓力太大,但是又能夠每天成長一點。 今天我們以 Scenario Based 模擬為基礎,來進行 Prompt 撰寫 模擬戰略討論
我們人類和ChatGPT的對話技巧也是需要學習的,有鑑於此,我想要一天分享一點「和ChatGPT對話的技術」,並且每篇文章長度控制在三分鐘以內,讓大家不會壓力太大,但是又能夠每天成長一點。 Prompt Template 是在眾多應用程式中塑造人工智慧產生回應的結構基礎,它們代表了Prompt
我們人類和ChatGPT的對話技巧也是需要學習的,有鑑於此,我想要一天分享一點「和ChatGPT對話的技術」,並且每篇文章長度控制在三分鐘以內,讓大家不會壓力太大,但是又能夠每天成長一點。 當我們從基礎 Prompt 過渡到進階 Prompt 時,我們開始釋放人工智慧的潛在潛力,這個階段被稱為
我們人類和ChatGPT的對話技巧也是需要學習的,有鑑於此,我想要一天分享一點「和ChatGPT對話的技術」,並且每篇文章長度控制在三分鐘以內,讓大家不會壓力太大,但是又能夠每天成長一點。 GPT-4 展現了對人類動機和情感(社交智慧的重要面向)的敏銳理解,擅長產生考慮提示情緒背景的反應。這種
我們人類和ChatGPT的對話技巧也是需要學習的,有鑑於此,我想要一天分享一點「和ChatGPT對話的技術」,並且每篇文章長度控制在三分鐘以內,讓大家不會壓力太大,但是又能夠每天成長一點。 ChatGPT縱然成功,但是仍有一些任務處理得不好,例如: 需要邏輯推論的任務 多步驟的任務
我們人類和ChatGPT的對話技巧也是需要學習的,有鑑於此,我想要一天分享一點「和ChatGPT對話的技術」,並且每篇文章長度控制在三分鐘以內,讓大家不會壓力太大,但是又能夠每天成長一點。 生成式AI (Generative AI)是一種人工智慧,它調度機器學習方式來產生新的或者是原創的文字、
Thumbnail
ChatGPT(全名:聊天生成預訓練轉換器)是一個由 OpenAI 開發的人工智慧聊天機器人程式。它於 2022 年 11 月推出,使用了基於 GPT-3.5、GPT-4 和 GPT-4o 架構的大型語言模型,並以強化學習進行訓練。
Thumbnail
ChatGPT 是 OpenAI 開發的大型語言模型,以其強大的生成能力和對話能力而聞名。 ChatGPT 的訓練過程主要分為兩個階段:預訓練和微調。 微調使用了 RLHF(Reinforcement Learning from Human Feedback)技術,可以有效地提高模型生成內容的質量。
Thumbnail
給出好的指令也是一門學問! 我們在業界稱為「指令工程」(Prompt Engineering),OpenAI 官方也有公布指令工程的操作資訊,但是今天我們只要學會這樣的操作方式,你可以贏過現在多數的AI使用者。
Thumbnail
本文章介紹瞭如何使用AutoGPT, 一種可以自主蒐集資料生成訴求,幫你與ChatGPT在互動中提出一連串的問題,來解決你的問題。對於安裝時的常見問題也進行了解答,並提供了使用的步驟以及目前的解決方式。