# 簡介 生成式AI正在快速改變軟體開發的樣貌。過去我們需要花時間設計複雜的規則、資料庫查詢才能完成自然語言相關的任務 而現在透過OpenAI API,只要幾行程式碼,就能讓應用程式具備「理解文字、回答問題、甚至維持對話」的能力。 #### 優點 --- 簡單易用:幾行程式碼即可呼叫模型 多種功能:文字生成、對話、程式碼輔助 彈性模型選擇:可依需求選擇 快速整合:容易嵌入現有專案 --- ### 注意事項 需申請 API Key,並注意金鑰保護 OPEN API 會依照所用到的功能收費![截圖 2025-08-19 下午4.43.34](https://hackmd.io/_uploads/HJVrKn-Kgl.png) 隱私保護:API 輸入資料不會用來訓練模型 ## OpenAI API 種類簡介 目前 OpenAI 提供五大主要 API,下面來說明他們的功能: ### Chat: 可以把它想像成 ChatGPT 的引擎。 你丟一句話 例如:「跟我說個笑話」,它就會回你一句話。 和 ChatGPT 網頁版不同的是,這裡是用程式呼叫,沒有網頁介面。 要注意:它不會自己「記住」你之前講過什麼。如果要聊天有連續感,你要把之前的對話內容也一併送給它。 ### Image: 讓 AI 幫你「畫圖」或「改圖」。 三種玩法: 第一種:根據給的敘述(prompt)產生出圖片。 第二種:給一段敘述(prompt)加上想被修改的圖片,AI會根據給的敘述去加工給的圖片。 第三種:只給圖片讓AI自己亂改。 ### Audio: 1.把聲音變文字。 2.將一段任意語言的語音翻譯成英文,目前就只支援翻譯成英文,沒有其他語言。 ### Embeddings: 把文字變成一組「數字代碼」,讓電腦懂文字的意思。 常用在搜尋或比對文字相似度 ### Fine-tuning: 讓 AI 照你的資料去學習。 例如你給它一堆範例,它就學會用你想要的風格回答。 ## 申請openAI的API key 1.先到openAI的[官網](https://openai.com/zh-Hant/index/openai-api/)登入,沒有帳號要先註冊,選擇API平台選項 ![截圖 2025-08-19 下午5.00.00](https://hackmd.io/_uploads/Syema2ZFxl.png) 2.登入成功之後選擇右上角的Dashboard ![截圖 2025-08-19 下午5.03.04](https://hackmd.io/_uploads/SJ2CT3-Kll.png) 3.先創建一個project ![截圖 2025-08-19 下午5.04.25](https://hackmd.io/_uploads/HJ97AhWYxx.png) 4.進來後點左邊選單的API keys![截圖 2025-08-19 下午5.01.55](https://hackmd.io/_uploads/SyN563bKxe.png) 之後選點選Create new secret key 取個名字之後按Create secret key ![截圖 2025-08-19 下午5.05.35](https://hackmd.io/_uploads/HJ2v03bFeg.png) ![截圖 2025-08-19 下午5.11.51](https://hackmd.io/_uploads/r1wkgabKee.png) 這樣就完成了 ![截圖 2025-08-20 凌晨12.20.55](https://hackmd.io/_uploads/SJE_4XGtex.png) ## 建立環境 ```python # 建議 Python 3.9以上,並啟動虛擬環境 python -m venv venv .\venv\Scripts\activate # window source venv/bin/activate # macOS ``` #### 安裝openai ``` pip install openai ``` 安裝好後我們建立一個python檔案連接API ```python import openai client = OpenAI(api_key="你的_API_KEY") # 在YOUR_API_KEY裡面放入你申請到的那串密鑰 ``` 連接好後我們試著先獲得到簡單的回應,來測試看看是不是可以使用。 ```python from openai import OpenAI import os client = OpenAI(api_key="YOUR_API_KEY") response = client.chat.completions.create( model="gpt-4o-mini", messages=[ {"role": "user", "content": "請跟我說一個笑話"} ], temperature=0.8, max_tokens=200 ) print(response.choices[0].message.content) ``` 執行程式之後 來看看他說了些甚麼吧 ![截圖 2025-08-19 晚上11.48.28](https://hackmd.io/_uploads/H1vA3zfYxg.png) 再來是上下文的部分 上下文就是AI記不記得你之前說的話。 OpenAI的Chat API本身不會自動記住對話。 你要它記住,就必須 手動把過去的訊息一起丟回去 第一個範例是沒有上下文的版本: ```python from openai import OpenAI client = OpenAI(api_key="你的_API_KEY") prompt1 = "誰是美國總統?" response1 = client.chat.completions.create( model="gpt-4o-mini", messages=[{"role": "user", "content": prompt1}] ) print("Q1:", prompt1) print("A1:", response1.choices[0].message.content) prompt2 = "他的老婆是誰?" response2 = client.chat.completions.create( model="gpt-4o-mini", messages=[{"role": "user", "content": prompt2}] ) print("\nQ2:", prompt2) print("A2:", response2.choices[0].message.content) ``` ![截圖 2025-08-20 凌晨1.50.09](https://hackmd.io/_uploads/r1RIFNztxe.png) 因為沒有帶入前面的對話,AI會搞不懂問題中的「他」是誰。 再來是有上下文的版本 ```python from openai import OpenAI client = OpenAI(api_key="你的_API_KEY") prompt1 = "誰是美國總統?" prompt2 = "他的老婆是誰?" messages = [ {"role": "user", "content": prompt1} ] response = client.chat.completions.create( model="gpt-4o-mini", messages=messages ) answer1 = response.choices[0].message.content messages.append({"role": "assistant", "content": answer1}) messages.append({"role": "user", "content": prompt2}) response = client.chat.completions.create( model="gpt-4o-mini", messages=messages ) answer2 = response.choices[0].message.content print("Q1:", prompt1) print("A1:", answer1) print("\nQ2:", prompt2) print("A2:", answer2) ``` ![截圖 2025-08-20 凌晨2.53.46](https://hackmd.io/_uploads/SyKBdrfFll.png)