昨天儲值 10 美元購買 OpenAI API 的隨用隨付額度後, 今天適逢不連假的中秋節, 在家繼續玩 OpenAI API, 主要是參考今年三月菁菁用她的成年禮文化幣買給我的三本 ChatGPT 書以及我在年初買的 ChatGPT 開發手冊 (黃皮書) :
# ChatGPT開發手冊 (旗標, 2023, 施威銘研究室)
# ChatGPT 開發手冊 Turbo×Vision 進化版 (旗標, 2024, 施威銘研究室)
# ChatGPT 4 Turbo 萬用手冊 2024 春季號 (旗標, 2023, 施威銘研究室, 蔡宜坦)
# ChatGPT 4 萬用手冊 2023 秋季號 (旗標, 2023, 施威銘研究室, 蔡宜坦)
本系列之前的文章參考 :
在前面的測試中都是安裝 openai 套件後使用其中的 OpenAI 類別之物件來呼叫 API (方法), 其實也可以用具有處理 HTTP 協定能力的 requests 模組或命令列的 curl 指令來呼叫 API. 特別是對於跑 MicroPython 的嵌入式設備可能無法安裝 openai 套件, 這時就可以使用 requests 模組.
首先要安裝 requests 模組 :
pip install requests
然後匯入 requests 模組, 並呼叫其 post() 函式向 OpenAI 發出 POST 請求
>>> import requests
設定 OpenAI API 網址與金鑰變數 :
>>> openai_api_url='https://api.openai.com/v1/chat/completions'
>>> openai_api_key='輸入 API key'
設定提示詞變數 :
>>> prompt='甚麼是量子糾纏? 請以能讓小學生了解的程度簡述並以繁體中文 (zh_Hant) 回答'
呼叫 requests.post() 函式向 OpenAI API 發出 POST 請求 :
>>> response=requests.post(openai_api_url,
headers={'Content-Type': 'application/json',
'Authorization': f'Bearer {openai_api_key}'},
json={'model': 'gpt-4o-mini',
'messages': [{'role': 'user',
'content': prompt}]
}
)
回應為 JSON 格式字串, 呼叫回應物件的 json() 函式轉成 Python 字典 :
>>> reply=response.json()
>>> type(reply)
<class 'dict'>
列印字典內容 :
>>> reply
{'id': 'chatcmpl-A8N8PsXCHyfYdOiRkSQCmXaQmNdr6', 'object': 'chat.completion', 'created': 1726558917, 'model': 'gpt-4o-mini-2024-07-18', 'choices': [{'index': 0, 'message': {'role': 'assistant', 'content': '量子糾纏是一種很特別的現象,發生在微小的粒子之間,比如電子或光子。當兩個粒子糾纏在一起時,即使它們相隔很遠,一個粒子的狀態改變了,另一個粒子的狀態也會立刻改變。\n\n想像一下,如果你有兩顆神奇的球,這兩顆球是好朋友,無論它們有多遠,只要你對其中一顆球說一句話,另一顆球就能聽到並做出反應。比如,當你告訴第一顆球“變成紅色”時,第二顆球也會立刻變成紅色,無論它們隔了多遠。\n\n量子糾纏告訴我們,世界上有些東西是連在一起的,超越了我們平常的理解。這種現象非常重要,科學家們正在研究它,因為它可能幫助我們發展更好的電腦和通訊技術。', 'refusal': None}, 'logprobs': None, 'finish_reason': 'stop'}], 'usage': {'prompt_tokens': 42, 'completion_tokens': 243, 'total_tokens': 285, 'completion_tokens_details': {'reasoning_tokens': 0}}, 'system_fingerprint': 'fp_483d39d857'}
取得字典中的聊天回應內容 :
>>> print(reply['choices'][0]['message']['content'])
量子糾纏是一種很特別的現象,發生在微小的粒子之間,比如電子或光子。當兩個粒子糾纏在一起時,即使它們相隔很遠,一個粒子的狀態改變了,另一個粒子的狀態也會立刻改變。
想像一下,如果你有兩顆神奇的球,這兩顆球是好朋友,無論它們有多遠,只要你對其中一顆球說一句話,另一顆球就能聽到並做出反應。比如,當你告訴第一顆球“變成紅色”時,第二顆球也會立刻變成紅色,無論它們隔了多遠。
量子糾纏告訴我們,世界上有些東西是連在一起的,超越了我們平常的理解。這種現象非常重要,科學家們正在研究它,因為它可能幫助我們發展更好的電腦和通訊技術。
---------------------------------
可見跟使用 openai 套件一樣都能取得聊天回應.
我將上面程式碼寫成一個模組 ask_openai.py
# ask_openai.py
import requests
def query_text(prompt, api_key, model='gpt-4o-mini'):
url='https://api.openai.com/v1/chat/completions'
headers={'Content-Type': 'application/json',
'Authorization': f'Bearer {api_key}'}
json={'model': model,
'messages': [{'role': 'user', 'content': prompt}]}
response=requests.post(url=url,headers=headers, json=json)
reply=response.json()
return reply['choices'][0]['message']['content']
使用時先匯入 ask_openai 模組 :
>>> import ask_openai
>>> api_key='輸入 API key'
>>> prompt='甚麼是量子糾纏? 請以能讓小學生了解的程度簡述並以繁體中文 (zh_Hant) 回答'
>>> ask_openai.query_text(prompt, api_key)
'量子糾纏是一種特別的現象,發生在非常小的粒子(像電子或光子)之間。想像你有兩顆神奇的骰子,無論距離有多遠,當你擲出第一顆骰子,如果它顯示了「3」,那麼第二顆骰子也會立刻變成特定的數字,例如「5」。這種關聯是非常神奇的,因為即使兩顆骰子相隔很遠,第一顆的結果會立刻影響到第二顆的結果。\n\n在量子糾纏中,這兩個粒子是緊密相連的,即使它們在宇宙的兩端,它們也能互相影響。這種現象挑戰了我們對物理世界的理解,因為它告訴我們,粒子之間可以透過一些看不見的方式保持聯繫。就像好朋友之間的心靈相通,無論距離多遠,他們的感覺總是相互影響著。'
沒有留言:
張貼留言