如何在電腦上寫 Python 程式來使用 ChatGPT
本文介紹如何在電腦上寫 Python 程式,透過 OpenAI 的 API 來使用 ChatGPT 的對話問答功能。
材料與準備
- 首先必需要有一個 OpenAI 的 API key,可以到 OpenAI platform 購買。
- 電腦的作業系統裡,要安裝 Python。本文是在 Ubuntu 20.04 作業系統中,用 Python 3.8 實作。
- 參考 OpenAI 官網的 Developer quickstart 的介紹和例子。
方法與步驟
第一次寫程式前的準備
1. 建立虛擬環境 (virtual environment)
為了讓測試 Python 的環境可以單純,建議建立一個新的虛擬環境,使用虛擬環境裡的 Python 並用 pip
安裝所需要的套件,這樣可以避免干擾原來系統裡的套件,也較不會發生版本相依所產生的問題。
在終端機的工作目錄中,執行以下指令以新建一個虛擬環境:
python -m venv myenv
指令中的 myenv 是自取的名字,讀者可以依喜好取別的名字。建立好之後可以看到多了一個名為 myenv 的目錄。
接著,要啟動進入這個虛擬環境,可以執行:
source myenv/bin/activate
可以看到指令行出現
(myenv) $
就代表已進入 myenv 這個虛擬環境。
2. 安裝 OpenAI Python 函式庫
在 (myenv) 中執行以下指令,以安裝 openai 這個函式庫:
pip install --upgrade openai
安裝好以後,可以查看所安裝的 openai 版本:
pip show openai
這裡看到我所安裝的 openai 是 1.35.15 版本。
3. 設定 API key
在系統中設定 API key,這麼一來,未來用這台電腦寫程式,就可以讀到 API key,不需要在程式碼中明示。
用文字編輯器 nano
編輯根目錄的 .bash_profile
這個檔案:
nano ~/.bash_profile
在檔案中加上一行字:
export OPENAI_API_KEY='your-api-key-here'
其中 your-api-key-here
要用自己的 API key 來替代。
存檔退出後,執行以下指令,以重新匯入設定檔,使它生效:
source ~/.bash_profile
此時要查看是否設定成功,可以用以下指令查看 API key 的內容:
echo $OPENAI_API_KEY
做好了上述的準備工作,往後我們就可以開始來寫 Python 程式來呼叫 ChatGPT 了。
結果
建立一個 Python 程式來使用 API key
參考 OpenAI 官網的例子,寫一個 Python 程式,例如取名為 mycode.py
,並且在 (myenv) 虛擬環境裡輸入以下指令來執行這個程式:
python mycode.py
程式碼和執行的結果如下:
from openai import OpenAI
client = OpenAI()
completion = client.chat.completions.create(
model="gpt-4o-mini",
messages=[
{"role": "system", "content": "你是一位專長寫抒情詩的 AI 詩人。"},
{"role": "user", "content": "請寫一首十行的新詩歌頌淡水河的日落美景。"}
]
)
print(completion.choices[0].message)
ChatCompletionMessage(content='淡水河畔,夕陽低垂, \n金光灑落,輕柔如絮。 \n水波微漾,輕唱著歌, \n夢似的彩霞,染紅了天。\n\n岸邊的垂柳,隨風輕舞, \n倒影中閃爍,似星辰喜喀。 \n船隻輕行,劃過寧靜, \n時光在此,悄然停留。\n\n遠方的山影,沉醉於此, \n在這黃昏,心靈獲釋。', role='assistant', function_call=None, tool_calls=None, refusal=None)
很興奮地,我們得到了 ChatGPT 傳回的詩。代表程式成功了。
傳回的訊息,是 OpenAI 傳回的原始文字,除了訊息的內容外,也包括了格式和程式設定碼。
我們可以把 Python 程式碼修飾一下,讓這首詩看起來更整齊:
from openai import OpenAI
client = OpenAI()
completion = client.chat.completions.create(
model="gpt-4o-mini",
messages=[
{"role": "system", "content": "你是一位專長寫詩的 AI 詩人。"},
{"role": "user", "content": "請寫一首十行的新詩歌頌淡水河的自然美景。"}
]
)
# 格式化輸出
poem = completion.choices[0].message.content
formatted_poem = poem.replace("\\n", "\n").strip()
print(formatted_poem)
在淡水河的懷抱中,
水面輕波,似夢幻的絲,
夕陽斜下,染紅了天際,
白鷺翩翩,奏出自然的歌。
岸邊柳垂,柔影搖曳,
微風攪動,帶來花香的消息,
小舟悠悠,釣者靜謐,
心隨水流,化作無聲的潮汐。
這裡的每一瞬,
都藏著生命的純粹與和諧。
可以看到 ChatGPT 又做了一首新詩。
現在,您也可以按照自己的意思,去編輯程式碼中 sytem message 的提示詞內容,以指定 ChatGPT 扮演的角色;並且編輯 user message 的提示詞,來告訴 ChatGPT 要執行的任務。
OpenAI 的官網 Prompt examples 提供了常用提示詞 (prompt) 的例子可供參考,提示詞就是我們對 ChatGPT 下的文字指令或提的問題。
討論
在電腦裡寫 Python 程式,透過 OpenAI 的 API Key 來呼叫 ChatGPT,可以提供更高的靈活性和控制力,在更大型的程式或網站中,可以更客製化且更有彈性地運用 ChatGPT 這個人工智慧工具。