---
# System prepended metadata

title: 簡介

---

# 簡介
生成式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)
