如何在個人專案中整合 AI 功能:OpenAI API+Next.js+Vercel

更新於 發佈於 閱讀時間約 10 分鐘

簡介:

  • OpenAI:開發 ChatGPT 的公司。
  • Next.js:基於 React 的框架,支持伺服器端渲染(SSR)和靜態生成(SSG),適合構建高性能的現代網頁應用。
  • Vercel:一個部署和託管平台,專為前端框架(如 Next.js)設計,提供快速的全球部署和邊緣網絡支援。




準備階段

註冊 OpenAI 帳號並申請 API Key

自 2024 年 3 月起,OpenAI 已全面轉向預付款機制。用戶需要預先充值到 OpenAI 帳戶,每次 API 調用會從帳戶餘額中扣除。最低充值金額為 5 美元。
raw-image


建立專案

  • 新增 GitHub repo
  • 透過 npx create-next-app 創建新專案


綁定 Vercel

  • 註冊 Vercel 帳號
  • 將 GitHub repo 導入
raw-image




實作階段

API

  • 安裝套件:npm install openai
  • 在專案根目錄中新增檔案 .env.local ,並加入 OpenAI API key
  • 實作 API
// .env.local
OPENAI_API_KEY=paste_your_api_key
// src/app/api/grammar/route.js
import OpenAI from "openai";

const openai = new OpenAI({ apiKey: process.env.OPENAI_API_KEY });

export async function POST(request) {
try {
const body = await request.json();
const { sentence } = body;
if (!sentence) {
return new Response(JSON.stringify({ error: "sentence is required" }), {
status: 400,
headers: { "Content-Type": "application/json" },
});
}

const response = await openai.chat.completions.create({
model: "gpt-4o-mini",
messages: [
{
role: "user",
// 依個別專案需求,創建不同的提示詞(Prompt)
content: `${sentence}\n\n請詳細解釋以上英文句子中的文法`,
},
],
});

return new Response(
JSON.stringify({ result: response.choices[0].message.content }),
{
status: 200,
headers: { "Content-Type": "application/json" },
}
);
} catch (error) {
console.error(error);
return new Response(JSON.stringify({ error: "Something went wrong" }), {
status: 500,
headers: { "Content-Type": "application/json" },
});
}
}

ps. 範例使用 Next.js App Route,如果偏好使用 page route,可參考 reference 中的連結


前端

  • 依個別需求實作 UI 介面
"use client";
import { useState } from "react";
import styles from "./page.module.css";

export default function Home() {
const [sentence, setSentence] = useState("");
const [isLoading, setLoading] = useState(false);
const [response, setResponse] = useState("");

const handleSubmit = async (e) => {
e.preventDefault();
setLoading(true);
setResponse("");

try {
const res = await fetch("/api/grammar", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({ sentence }),
});

const data = await res.json();
setResponse(data.result);
} catch (error) {
console.error(error);
} finally {
setLoading(false);
}
};

return (
<div className={styles.container}>
<h1 className={styles.title}>英文文法解釋器</h1>
<form onSubmit={handleSubmit}>
<textarea
className={styles.input}
value={sentence}
onChange={(e) => setSentence(e.target.value)}
placeholder="貼入句子"
/>
<button type="submit" className={styles.button} disabled={isLoading}>
{isLoading ? "載入中..." : "送出"}
</button>
</form>
{response && (
<p className={styles.result}>
{response.split("\n").map((text, idx) => (<div key={idx}>{text}</div>))}
</p>
)}
</div>
);
}


網站部署

  • 在 Vercel 中,將 API key 設定成環境變數(Environment Variables)
raw-image
  • 將修改好的程式碼更新到 GitHub default branch(main or master)後,Vercel 就會自動進行部署。
  • 當部署 Status 顯示為 Ready 時,點擊 Visit button 即可開啟網站。
raw-image




補充:edge functions & region

Error: 403 Country, region, or territory not supported

使用 Vercel edge functions 可以提升 API 效能。由於 Vercel edge functions 離台灣最近的區域是香港,而 OpenAI 無法在香港使用,因此需要設定 regions 來避免錯誤。

App Route:

// src/app/api/grammar/route.js

// 使用 edge function
export const runtime = 'edge';
// 指定區域
const preferredRegion = ['iad1', 'hnd1'];

Page route:

export const config = {
runtime: 'edge',
regions: ['iad1', 'hnd1'],
};

可以設定的區域有:https://vercel.com/docs/edge-network/regions#region-list



Reference:

留言
avatar-img
留言分享你的想法!
avatar-img
前端轉職經驗談
5會員
41內容數
零基礎到成功轉職,一路上會遇到哪些挑戰、應該如何解決? - 猶豫階段:「這適合我嗎?薪水如何?...」 - 起步階段:「怎麼開始學?要不要做 side project?...」 - 成長階段:「如何優化開發效率?選擇框架?...」 - 面試階段:「怎麼準備技術和行為面試?...」
前端轉職經驗談的其他內容
2025/03/09
原文:HOW TO GET STARTUP IDEAS 原文是針對如何找出創業的題目,不過如果想做 side project 卻苦無想法的話,也可以參考看看。 獲得創業點子的方法不是刻意去想創業點子,而是尋找問題,最好是你自己面臨的問題。 最優秀的創業點子通常具有三個共同點: 這是創辦
2025/03/09
原文:HOW TO GET STARTUP IDEAS 原文是針對如何找出創業的題目,不過如果想做 side project 卻苦無想法的話,也可以參考看看。 獲得創業點子的方法不是刻意去想創業點子,而是尋找問題,最好是你自己面臨的問題。 最優秀的創業點子通常具有三個共同點: 這是創辦
2025/02/02
學習 JavaScript 時,理解語法和概念是一回事,實際應用又是另一回事。許多初學者會遇到「看得懂範例,但自己寫不出來」的困境。因此,本文從實際開發的常見情境中,簡化出了 10 個範例,讓你能夠逐步練習,慢慢熟悉寫程式的思考方式。
2025/02/02
學習 JavaScript 時,理解語法和概念是一回事,實際應用又是另一回事。許多初學者會遇到「看得懂範例,但自己寫不出來」的困境。因此,本文從實際開發的常見情境中,簡化出了 10 個範例,讓你能夠逐步練習,慢慢熟悉寫程式的思考方式。
2025/01/30
每年一次的 State of JS 問卷調查,不只是觀察前端技術趨勢的工具,更是檢視自身技能與學習方向的絕佳機會。透過這份調查,你可以了解前端生態的變化,確保自己沒有錯過重要資訊,並規劃未來的學習路線。
Thumbnail
2025/01/30
每年一次的 State of JS 問卷調查,不只是觀察前端技術趨勢的工具,更是檢視自身技能與學習方向的絕佳機會。透過這份調查,你可以了解前端生態的變化,確保自己沒有錯過重要資訊,並規劃未來的學習路線。
Thumbnail
看更多
你可能也想看
Thumbnail
「欸!這是在哪裡買的?求連結 🥺」 誰叫你太有品味,一發就讓大家跟著剁手手? 讓你回購再回購的生活好物,是時候該介紹出場了吧! 「開箱你的美好生活」現正召喚各路好物的開箱使者 🤩
Thumbnail
「欸!這是在哪裡買的?求連結 🥺」 誰叫你太有品味,一發就讓大家跟著剁手手? 讓你回購再回購的生活好物,是時候該介紹出場了吧! 「開箱你的美好生活」現正召喚各路好物的開箱使者 🤩
Thumbnail
探索 Flave.ai:您的个性化 AI 伴侣平台 在数字化时代,Flave.ai作为一个创新平台,允许用户创建并与个性化的 AI 伴侣互动。通过先进的人工智能技术,Flave.ai 提供了一系列功能,满足不同用户的需求。 角色 AI 通过 角色 AI,用户可以与理解并记住他们的 AI 角色
Thumbnail
探索 Flave.ai:您的个性化 AI 伴侣平台 在数字化时代,Flave.ai作为一个创新平台,允许用户创建并与个性化的 AI 伴侣互动。通过先进的人工智能技术,Flave.ai 提供了一系列功能,满足不同用户的需求。 角色 AI 通过 角色 AI,用户可以与理解并记住他们的 AI 角色
Thumbnail
這個專案是一個使用 Vue3、Vite、daisyUI 和 Google Gemini AI API 打造的雙 AI 對話模擬器。 使用者可以設定兩個 AI 角色的名稱和描述,然後讓它們自行對話。 這個專案旨在展示前端如何與 AI API 互動,以及如何建立具有互動性的 AI 應用程式。
Thumbnail
這個專案是一個使用 Vue3、Vite、daisyUI 和 Google Gemini AI API 打造的雙 AI 對話模擬器。 使用者可以設定兩個 AI 角色的名稱和描述,然後讓它們自行對話。 這個專案旨在展示前端如何與 AI API 互動,以及如何建立具有互動性的 AI 應用程式。
Thumbnail
要使用 ChatGPT 大致有兩種方式,一種就是直接進 ChatGPT 網頁進行對談,另外一種就是使用 API 的方式,串接使用。 這篇文章詳述了如何購買 OpenAI API 的使用額度。
Thumbnail
要使用 ChatGPT 大致有兩種方式,一種就是直接進 ChatGPT 網頁進行對談,另外一種就是使用 API 的方式,串接使用。 這篇文章詳述了如何購買 OpenAI API 的使用額度。
Thumbnail
這個地址可以讓我一鍵安裝目前所有的開源AI應用,包括: AI繪圖工具:Stable Diffusion的Web UI和comyUI 視訊換臉工具:Face Fusion 聲音課程工具:RVC和XTDS 記住這個地址,它可以讓你一鍵安裝目前所有的開源AI應用。不用管環境配置需要哪一個,直接點擊
Thumbnail
這個地址可以讓我一鍵安裝目前所有的開源AI應用,包括: AI繪圖工具:Stable Diffusion的Web UI和comyUI 視訊換臉工具:Face Fusion 聲音課程工具:RVC和XTDS 記住這個地址,它可以讓你一鍵安裝目前所有的開源AI應用。不用管環境配置需要哪一個,直接點擊
Thumbnail
AI 時代崛起,從聊天型 AI 到繪畫型 AI,再到統整型、文案型、語言型以及簡報型 AI,這些智能工具已經成為我們學習、生活和工作的日常幫手。面對如此多樣性的 AI,我們今天要和大家分享三個匯聚多元 AI 工具的網站,讓你一個地方能夠一次滿足我們所有對 AI的好奇心,讓你探索 AI 的無限可能性。
Thumbnail
AI 時代崛起,從聊天型 AI 到繪畫型 AI,再到統整型、文案型、語言型以及簡報型 AI,這些智能工具已經成為我們學習、生活和工作的日常幫手。面對如此多樣性的 AI,我們今天要和大家分享三個匯聚多元 AI 工具的網站,讓你一個地方能夠一次滿足我們所有對 AI的好奇心,讓你探索 AI 的無限可能性。
Thumbnail
在人工智慧蓬勃發展的時代,掌握 AI 就像擁有一支全能的高效團隊,能夠協助你初步建構思路,理清脈絡,讓你能更具創意地突破舒適圈,進一步演進現有的事物。AI 的應用範疇多不勝數,今天我們要分享的是從文字內容出發,探討人類如何與 AI 進行合作,以及現今已有哪些軟體能提供相應的功能。讓我們一起來了解吧!
Thumbnail
在人工智慧蓬勃發展的時代,掌握 AI 就像擁有一支全能的高效團隊,能夠協助你初步建構思路,理清脈絡,讓你能更具創意地突破舒適圈,進一步演進現有的事物。AI 的應用範疇多不勝數,今天我們要分享的是從文字內容出發,探討人類如何與 AI 進行合作,以及現今已有哪些軟體能提供相應的功能。讓我們一起來了解吧!
Thumbnail
1.創建您的 AI:http:// wnr.ai 2.會議摘要: http:// tldv.io 3.您的搜索助手:http:// perplexity.ai 4.輕鬆創建演示文稿: http:// presentations.ai
Thumbnail
1.創建您的 AI:http:// wnr.ai 2.會議摘要: http:// tldv.io 3.您的搜索助手:http:// perplexity.ai 4.輕鬆創建演示文稿: http:// presentations.ai
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News