地端與雲端串接概念

Part 3:AI API 串接

整合 OpenAI API
建立 /chat 對話端點

OpenAI /chat endpoint POST request
📂 對應 GitHub:2.4_打造AI對話API/階段一_建立AI對話功能/

🤔 什麼是 API 端點?

想像一家餐廳有不同的服務窗口:

點餐窗口
/order
取餐窗口
/pickup
詢問窗口
/info

在網頁應用中,API 端點就是這些不同的服務窗口:

首頁
/
對話功能
/chat
其他功能
/xxx
我們即將建立的 /chat 端點,專門處理 AI 對話請求!

📊 AI 對話的資料流程

👤 使用者
→
📝 發送訊息
→
🖥️ Flask /chat
🖥️ Flask
→
🌐 OpenAI API
→
🤖 AI 回應
🤖 AI 回應
→
🖥️ Flask
→
👤 使用者看到

【實作 1】修改 app.py

將 app.py 的內容替換為以下完整程式碼:

# 引入必要的套件
from flask import Flask, request, jsonify
from openai import OpenAI
from dotenv import load_dotenv
import os

# 載入環境變數
load_dotenv()

# 建立 Flask 應用程式和 OpenAI 客戶端
app = Flask(__name__)
client = OpenAI(api_key=os.getenv('OPENAI_API_KEY'))
💡 新增的套件:
request:取得使用者發送的資料
jsonify:回傳 JSON 格式的資料
OpenAI:呼叫 OpenAI API

【實作 1】程式碼(續)

繼續加入首頁路由和 /chat 端點:

# 首頁路由
@app.route('/')
def home():
    return '<h1>AI 對話 API 已啟動!</h1>'

# AI 對話端點
@app.route('/chat', methods=['POST'])
def chat():
    try:
        data = request.json
        user_message = data.get('message', '')

        if not user_message:
            return jsonify({'error': '訊息不能是空的'}), 400

【實作 1】程式碼(續)- 呼叫 OpenAI

        # 呼叫 OpenAI API
        response = client.chat.completions.create(
            model="gpt-5.6-terra",
            messages=[
                {"role": "system", "content": "你是一個友善的 AI 助手"},
                {"role": "user", "content": user_message}
            ],
            max_tokens=500
        )

        ai_message = response.choices[0].message.content

        return jsonify({'success': True, 'message': ai_message})

    except Exception as e:
        return jsonify({'error': str(e)}), 500

if __name__ == '__main__':
    app.run(debug=True)

【實作 2】理解程式碼結構

1️⃣ 套件引入與初始化(第 1-12 行)

  • load_dotenv():載入 .env 檔案中的 API Key
  • OpenAI(api_key=...):建立 OpenAI 客戶端

2️⃣ /chat 端點(第 20 行起)

  • methods=['POST']:只接受 POST 請求
  • request.json:取得使用者發送的 JSON 資料
  • data.get('message'):取得 message 欄位

3️⃣ 呼叫 OpenAI API

  • model="gpt-5.6-terra":使用 GPT-5.6 Terra 模型
  • max_tokens=500:限制回應長度(控制成本)

【實作 3】啟動伺服器準備測試

存檔後,在 CMD 執行:

(venv) C:\...\ch2_local_ai_app> python app.py

✅ 預期結果

 * Serving Flask app 'app'
 * Debug mode: on
 * Running on http://127.0.0.1:5000
⚠️ 重要:
1. 確認 .env 檔案中有正確的 API Key
2. 這個 CMD 視窗不要關閉!
🎉 成功!伺服器已啟動,接下來用 Postman 測試 /chat 端點!

✅ Part 3 完成確認

你學會了:

  • ☐ API 端點的概念
  • ☐ 整合 OpenAI SDK 到 Flask
  • ☐ 建立 POST 請求的 /chat 端點
  • ☐ 使用 request.json 取得資料
  • ☐ 使用 jsonify 回傳 JSON

目前專案結構:

ch2_local_ai_app/
├── venv/
├── app.py             ← 已加入 OpenAI 和 /chat 端點
├── .env               ← 包含 OPENAI_API_KEY
└── .gitignore
🎉 太棒了!進入 Part 4:使用 Postman 測試 API!

← 返回課程首頁