Python & AI:
做出自己的 AI 產品
全端最值錢的能力:把 AI 包進你的網站。這章從 Python 基礎開始, 走完 numpy / pandas / 機器學習 / PyTorch 深度學習,最後串 OpenAI 和 Claude API 做出真正的 AI 產品。學完你能自己寫 RAG、做 chatbot、訓練分類模型。
- 看得懂、寫得出 Python(資料科學的官方語言)
- 會用 numpy / pandas 處理資料
- 會做機器學習:分類、回歸、訓練、評估
- 會用 PyTorch 訓練深度學習模型
- 會串 OpenAI / Claude / Gemini API
- 會做 RAG(讓 AI 讀你的資料回答問題)
- 能把 AI 產品上架賣錢
為什麼是 Python?
因為所有 AI / ML 的工具都用 Python 寫。PyTorch、TensorFlow、Hugging Face、OpenAI SDK、LangChain、scikit-learn — 全部 Python first。
不是 Python 比 JS 強,是 AI 圈用 Python 太久了,生態系全在這邊。你要做 AI 就得會。
JS 是會議室語言(網站上線前的所有事),Python 是實驗室語言(研究、訓練、資料分析)。全端工程師兩個都要懂一點。
環境裝起來
# macOS / Linux
brew install python@3.12
# 用 uv(比 pip 快 100 倍的新工具,2024 火起來)
curl -LsSf https://astral.sh/uv/install.sh | sh
# 開個專案
uv init my-ai-app
cd my-ai-app
uv add numpy pandas torch openai anthropic
2025 年起 uv 已經是新標準,比 pip + venv 快又乾淨。直接學 uv,省下你以後跟 Python 環境奮戰的所有時間。
Python 速通:JS 工程師看 30 分鐘
你會 JS 了,Python 只是換個語法。
# 變數:沒有 let / const,直接寫
name = "Luffysky"
age = 25
# 字串:f-string(像 JS 的 template literal)
greeting = f"Hello {name}, you are {age}"
# List = JS 的 array
fruits = ["apple", "banana"]
fruits.append("cherry")
# Dict = JS 的 object
user = {"name": "Yuki", "age": 20}
# 函式
def greet(name: str) -> str:
return f"Hi {name}"
# If / for(用縮排,沒有 {})
for fruit in fruits:
if len(fruit) > 5:
print(fruit)
# List comprehension(超強,JS 沒有)
upper_fruits = [f.upper() for f in fruits if len(f) > 5]
類別
class Cat:
def __init__(self, name: str):
self.name = name
def meow(self):
print(f"{self.name} says meow")
cat = Cat("凜空")
cat.meow()
numpy & pandas:資料科學雙神器
numpy:高速數學運算,所有 ML 函式庫底層都是它。pandas:表格資料處理(像 Excel + SQL)。
import numpy as np
import pandas as pd
# numpy 陣列:比 Python list 快 100 倍
arr = np.array([1, 2, 3, 4])
print(arr * 2) # [2, 4, 6, 8]
print(arr.mean()) # 2.5
# 矩陣(神經網路就是一堆矩陣相乘)
m = np.array([[1, 2], [3, 4]])
print(m @ m) # 矩陣乘法
# pandas 讀 CSV
df = pd.read_csv("sales.csv")
print(df.head()) # 前 5 筆
print(df.describe()) # 統計摘要
# 篩選 + 分組(像 SQL)
result = df[df["price"] > 100].groupby("category")["price"].sum()
很多接案需求是「幫我分析這個 Excel」,pandas 一行 pd.read_excel() 就讀進來,後續 SQL 邏輯全部一行解決。客戶看到你 5 分鐘做完他一週的工作會傻眼。
機器學習:用 scikit-learn 做分類器
機器學習 = 給一堆「輸入 → 答案」,讓電腦自己找規律。例如:
- 輸入:信件文字 → 答案:垃圾信 / 正常信
- 輸入:客戶資料 → 答案:會買 / 不會買
- 輸入:照片 → 答案:貓 / 狗
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import accuracy_score
# 1. 載入資料(鳶尾花分類經典資料集)
iris = load_iris()
X, y = iris.data, iris.target
# 2. 分訓練 / 測試(80% / 20%)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)
# 3. 訓練模型
model = RandomForestClassifier(n_estimators=100)
model.fit(X_train, y_train)
# 4. 預測 + 評估
preds = model.predict(X_test)
print(f"準確率:{accuracy_score(y_test, preds):.2%}")
# 通常 95% 以上
就這樣,30 行 code 你已經做了一個機器學習模型。重點不是寫 code,是懂流程:
- 準備資料(最花時間,80% 工作在這)
- 切訓練/測試
- 選模型
- 訓練
- 評估
- 調參數重來
深度學習:PyTorch 的世界
機器學習 vs 深度學習的差別:
- 傳統 ML:你告訴模型該看哪些「特徵」。資料少(幾千筆)就行
- 深度學習:模型自己學特徵。要資料多(幾十萬筆以上),但能解決圖像、語音、文字這種複雜任務
PyTorch 是現在主流框架(Meta 出的,2024 年起完全打贏 TensorFlow)。
import torch
import torch.nn as nn
# 一個最簡單的神經網路(分類器)
class Net(nn.Module):
def __init__(self):
super().__init__()
self.fc1 = nn.Linear(784, 128) # 輸入 784,隱藏層 128
self.fc2 = nn.Linear(128, 10) # 輸出 10 類
def forward(self, x):
x = torch.relu(self.fc1(x))
x = self.fc2(x)
return x
model = Net()
optimizer = torch.optim.Adam(model.parameters(), lr=0.001)
loss_fn = nn.CrossEntropyLoss()
# 訓練迴圈(核心邏輯)
for epoch in range(10):
for X, y in dataloader:
pred = model(X)
loss = loss_fn(pred, y)
optimizer.zero_grad()
loss.backward() # 反向傳播
optimizer.step() # 更新權重
訓練 = 學生考試 → 對答案 → 看錯哪邊 → 調整 → 再考一次。重複到考好為止。
2026 年不要從零訓練模型,用 Hugging Face 的 pre-trained 模型 fine-tune。例如要做中文情緒分析,下載 BERT-base-chinese 加一層分類器,fine-tune 30 分鐘準確率 95%。
串 OpenAI / Claude API:5 分鐘做 AI 產品
現實是 — 自己訓練 LLM 要 GPU 集群燒幾百萬美金。正確做法是串 API。
from openai import OpenAI
client = OpenAI(api_key="sk-...") # 從環境變數讀
response = client.chat.completions.create(
model="gpt-4o-mini",
messages=[
{"role": "system", "content": "你是熱心的客服"},
{"role": "user", "content": "我想退貨"}
]
)
print(response.choices[0].message.content)
Anthropic Claude(思考力強,工程任務首選):
from anthropic import Anthropic
client = Anthropic() # 自動讀 ANTHROPIC_API_KEY
msg = client.messages.create(
model="claude-opus-4-7",
max_tokens=1024,
messages=[
{"role": "user", "content": "幫我寫一首關於招財的詩"}
]
)
print(msg.content[0].text)
選哪個 API?
| 場景 | 推薦 | 原因 |
|---|---|---|
| 創意寫作 | Claude | 文筆最好 |
| 程式輔助 | Claude | 架構思維強 |
| 大量便宜呼叫 | Gemini Flash / GPT-4o-mini | 夠便宜 |
| 多模態(圖片) | GPT-4o / Gemini | 視覺好 |
| 本地部署 | Ollama + Llama / Qwen | 免費,但要 GPU |
API key 絕不可以放前端 JS!不然爬蟲一看就偷走。永遠從你的後端代呼叫,前端只接觸你的 API。
RAG:讓 AI 讀你的資料
使用者問「我們公司的退貨政策是什麼?」— GPT 不知道,你內部文件才有。RAG(Retrieval-Augmented Generation)就是:
- 把文件切塊,每塊轉成 embedding(向量)
- 存到向量資料庫
- 使用者問問題時,把問題也轉 embedding,找最相似的幾塊文件
- 把那幾塊塞進 prompt 給 LLM 回答
from openai import OpenAI
import numpy as np
client = OpenAI()
# 1. 把文件變成向量
def embed(text: str):
r = client.embeddings.create(
model="text-embedding-3-small",
input=text
)
return np.array(r.data[0].embedding)
docs = [
"退貨政策:7 天內可退",
"運費:滿 1000 免運",
"發票:購買後 3 天內寄出",
]
doc_vecs = [embed(d) for d in docs]
# 2. 使用者問問題,找最相似
def ask(question: str):
q_vec = embed(question)
sims = [np.dot(q_vec, dv) for dv in doc_vecs]
best = docs[np.argmax(sims)]
# 3. 塞進 prompt
r = client.chat.completions.create(
model="gpt-4o-mini",
messages=[{
"role": "user",
"content": f"根據資料:{best}\n\n問題:{question}"
}]
)
return r.choices[0].message.content
print(ask("我可以退貨嗎"))
實戰用 Pinecone、Weaviate、Chroma 或 Postgres 的 pgvector。
把 AI 包成 Web App:FastAPI 上線
把上面的 RAG 包成 API,前端就能用:
from fastapi import FastAPI
from pydantic import BaseModel
app = FastAPI()
class Question(BaseModel):
text: str
@app.post("/ask")
async def ask_endpoint(q: Question):
answer = ask(q.text)
return {"answer": answer}
# 跑:uvicorn main:app --reload
# 部署:Zeabur / Railway 一鍵
前端 React 那邊:
async function ask(text) {
const r = await fetch('/api/ask', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ text })
});
return (await r.json()).answer;
}
AI 產品的賺錢模式
學會了之後該做什麼?這幾個方向 2026 年都還在賺錢:
- 垂直 RAG:法律 / 醫療 / 教育,把專業知識做成 AI 助手
- 內容生成 SaaS:自動生 SEO 文章、商品描述、社群文案
- AI Agent / 自動化:把繁瑣流程交給 AI 跑(這在 Ch19 Vibe Coding 會深入講)
- 翻譯 / 改寫工具:垂直市場(電商、論文、字幕)
- 聲音 / 影像 AI:用 ElevenLabs、Suno、Runway 包二次產品
不要做「ChatGPT wrapper」——使用者直接用 ChatGPT 就好。要做「ChatGPT 做不到的事」:你公司獨家資料 + AI、特殊工作流、整合特定工具。差異化才有價值。
🔨 動手練習:做你自己的 AI 客服
- 準備一個假公司的 FAQ(10 條),存成
faq.json - 用 OpenAI embedding API 算每條的向量
- 用 FastAPI 開一個
/askendpoint,接受問題回答 - 用 Next.js 寫一個簡單聊天介面串它
- 部署到 Zeabur,丟給朋友測
- 進階:把對話歷史存 Supabase,做 session 記憶
常見卡關 FAQ
Q1. 學 AI 一定要會數學?
做應用不用,串 API 連微積分都用不到。要做研究員 / 訓練自己模型才需要線性代數、機率、微積分。先做應用賺錢,有興趣再補。
Q2. 我電腦沒 GPU 能學深度學習?
能。Google Colab 免費送 T4 GPU,Kaggle 也送。訓練小模型完全夠。要訓練大模型才需要租 RunPod / Lambda(每小時幾美金)。
Q3. OpenAI 跟 Claude 我該學哪個?
都學。API 介面 90% 一樣,多串幾個你產品才有議價權(哪個便宜用哪個)。實務上很多產品同時用 GPT-4o + Claude + Gemini,根據任務 routing。
Q4. RAG vs Fine-tuning 怎麼選?
RAG:資料常更新、要答得有依據(醫療、法律)。Fine-tuning:要學特定風格、減少 prompt 長度。9 成情況選 RAG,工程簡單成本低。
Q5. AI 產品要怎麼省 token 錢?
(1) 短的用便宜模型(gpt-4o-mini、Haiku)。(2) 開 prompt caching(Anthropic 重複 prompt 90% 折扣)。(3) 自己快取常見問題答案。(4) 流量大用 batch API(半價)。