欢迎阅读我们的初学者指南,了解如何使用 OpenAI API 构建 Next.js 应用程序。在本教程中,我们将引导您完成利用 OpenAI API 的功能创建功能强大且智能的 Next.js 应用程序的过程。
Next.js 是用于构建服务器呈现的 React 应用程序的流行框架,而 OpenAI API 是将高级人工智能功能整合到您的应用程序中的强大工具。通过结合这两种技术,您可以创建一个功能强大且动态的 Web 应用程序,该应用程序可以随着时间的推移进行调整和改进。
在本指南中,我们将介绍设置 Next.js 应用程序、集成 OpenAI API 以及使用它向您的应用程序添加高级功能的基础知识。如何在 Windows 11/10 中更新显卡驱动程序我们还将提供示例和代码片段,以帮助您理解概念并在您自己的项目中实现它们。
无论您是开发新手还是经验丰富的专业人士,本指南旨在帮助您了解 OpenAI API 的潜力以及如何使用它来增强您的 Next.js 应用程序。那么,让我们开始探索 AI 驱动的 Web 开发世界吧!
在深入研究之前,请确保您的计算机上安装了以下先决条件:
Node.js 和 npm(Node.js 包管理器):这些是构建 Next.js 和 React 应用程序所必需的。您可以从官方网站 (https://nodejs.org/) 或使用 Homebrew (https://brew.sh/) 等包管理器下载 Node.js。
Yarn 包管理器:我们将使用 Yarn 包管理器在 Next.js 项目中创建和管理依赖项。Yarn 的安装说明可在项目网站上找到:https://yarnpkg.com/getting-started/install。
要获取 OpenAI API 的 API 密钥,您需要在 OpenAI 网站 (https://openai.com/) 上注册一个免费的 OpenAI 帐户:
要注册一个帐户,请单击主页右上角的“注册”按钮,然后按照提示创建一个新帐户。创建帐户后,您可以通过访问帐户设置的“API”部分来获取 API 密钥。
在“API”部分,您会找到一个标有“生成 API 密钥”的按钮。单击此按钮可生成一个新的 API 密钥,然后您可以使用该密钥从您的 Node.js 应用程序向 OpenAI API 发出请求。请务必妥善保管您的 API 密钥,不要与其他任何人共享。
为了设置一个新的 Next.js 项目,我们将使用以下命令:
$ yarn create next-app
然后你会被要求回答几个关于项目设置的问题:
此外,您需要为新项目指定一个名称。对于我们的示例,我们将选择名称 next-openai-app。这同时也是为包含初始项目设置而创建的文件夹的名称。
安装项目正在安装所有默认项目依赖项,最后您应该能够看到一条成功消息:
接下来我们需要再次使用 Yarn 安装 OpenAI API 客户端库,方法如下:
$ yarn add openai
正在下载和安装软件包:
下一步是在我们的 Next.js 应用程序中创建一个能够保存 OpenAI API 密钥的环境变量。
在项目根目录新建文件 .env.local ,插入如下内容:
OPENAI_API_KEY=[INSERT YOUR OPENAI API KEY HERE]
[在此处插入您的 OPENAI API 密钥] 需要使用您之前从 OpenAI 仪表板检索到的 OpenAI API 密钥进行重放。
在我们的 Next.js 项目中,我们正在创建一个新的 API 端点,它能够使用 openai 包处理与 OpenAI API 的通信。
因此,我们正在创建一个新文件 pages/api/openai.js 并插入以下代码:
import { OpenAIApi, Configuration } from "openai";
const configuration = new Configuration({
apiKey: process.env.OPENAI_API_KEY,
});
const openai = new OpenAIApi(configuration);
export default async (req, res) => {
if (req.body.prompt !== undefined) {
const completion = await openai.createCompletion({
model: "text-davinci-003",
prompt: `${req.body.prompt}`,
});
res.status(200).json({ text: `${completion.data.choices[0].text}` });
} else {
res.status(400).json({ text: "No prompt provided." });
}
};
此代码从openai包中导入 OpenAIApi 和 Configuration 模块,创建一个 Configuration 对象,并使用它来创建 OpenAIApi 的实例。它导出处理传入 HTTP 请求和响应的异步函数。该函数首先检查请求主体是否包含名为“prompt”的属性,如果存在,则调用 OpenAI API 实例上的“createCompletion”方法,传递一个包含模型 ID text-davinci-003 的对象以及请求正文中的提示文本。然后它发送一个 JSON 响应,状态代码为 200,文本属性包含 OpenAI API 返回的完成的第一选择。如果请求正文不包含提示,该函数将发送一个状态代码为 400 的 JSON 响应和一个带有消息“未提供提示”的文本属性。让我们通过输入以开发模式启动Web服务器
$ yarn dev
服务器启动后,您可以切换到第二个终端实例并使用 curl 命令将 HTTP post 请求发送到 http://localhost:3000/api/openai 端点。该请求的 body 数据必须为 JSON 格式,并包含 prompt 属性:
$ curl -X POST -H "Content-Type: application/json" -d '{"prompt": "How are you"}' http://localhost:3000/api/openai
因此,您应该能够看到从 OpenAI 返回的消息,为您的输入提供答案。
接下来我们还需要在文件pages/index.js中添加前端代码来完成实现。首先添加以下代码行:
const [prompt, setPrompt] = useState("");
const [isLoading, setIsLoading] = useState(false);
const [response, setResponse] = useState("");
此代码使用名为“useState”的 React Hooks 功能来初始化三个状态变量:“prompt”、“isLoading”和“response”。使用每个变量的初始值调用“useState”函数,“prompt”和“response”为空字符串,“isLoading”为“false”。
“useState”函数返回一个包含两个元素的数组。第一个元素是当前状态值,第二个元素是更新状态值的函数。这些元素被解构为变量“prompt”、“isLoading”、“response”、“setPrompt”、“setIsLoading”和“setResponse”。
变量“prompt”、“isLoading”和“response”可用于访问每个状态变量的当前状态值,函数“setPrompt”、“setIsLoading”和“setResponse”可用于更新状态每个状态变量的值分别。
const getResponseFromOpenAI = async () => {
setResponse("");
console.log("Getting response from OpenAI...");
setIsLoading(true);
const response = await fetch("/api/openai", {
method: "POST",
headers: {
"Content-Type": "application/json",
},
body: JSON.stringify({ prompt: prompt }),
});
const data = await response.json();
setIsLoading(false);
console.log(data.text);
setResponse(data.text);
};
此代码定义了一个名为“getResponseFromOpenAI”的异步函数,用于从我们之前创建的名为“/api/openai”的 API 端点获取响应。
该函数首先使用“setResponse”函数将状态变量“response”重置为空字符串,然后将消息“Getting response from OpenAI…”记录到控制台。然后它使用“setIsLoading”函数将状态变量“isLoading”设置为 true,以指示请求正在进行中。
然后它使用 JavaScript Fetch API 向“/api/openai”端点发出 POST 请求,将“prompt”状态变量的当前值作为请求主体传递,并将“Content-Type”标头设置为“application” /json”。
等待来自 API 调用的响应,然后使用“json()”方法解析为 JSON。然后该函数使用“setIsLoading”函数将“isLoading”状态变量设置为 false,表示请求已完成。然后它使用“console.log(data.text);”将响应文本记录到控制台。最后,它使用“setResponse”函数用响应文本更新“response”状态变量。
此函数可能用于向 OpenAI API 发出请求,以根据“提示”状态变量的当前值获得响应,并将响应设置为“响应”状态变量,同时处理加载状态请求已发出并正在处理中。
让我们也调整 JSX 代码:
Next.js & OpenAI Sample Application
这段 JSX 代码渲染了我们前端用户界面的主要部分。它使用 className 属性将导入的 CSS 文件中的样式应用于各种元素。
它有一个主容器,类名是“styles.main”。在它的内部,有一个 div 容器,其 className 为“styles.description”,它在 h1 标签内包含一个标题,className 为“styles.title”,上面写着“Next.js & OpenAI Sample Application”。
然后它有另一个 div 容器,className 为“styles.center”,在其中,有一个 textarea 元素,className 为“styles.promptInput”,用于从用户那里获取占位符为“Enter a prompt”的输入。“onChange”属性设置为使用文本区域的当前值更新“提示”状态变量的函数。它还具有“row”和“cols”属性来设置行数和列数。
有一个按钮元素,类名是“styles.button”,还有一个“onClick”属性,点击时会触发“getResponseFromOpenAI”函数。按钮内的文本是“Get Response”。
最后,有一个类名为“styles.response”的 div 元素,用于显示响应消息。在其中,它使用三元运算符来检查“isLoading”状态变量是真还是假。如果为真,则显示文本“Waiting for response …”,否则显示“response”状态变量的值。
pages/index.js 的完整源代码应该如下所示:
import Head from "next/head";
import { useState, useEffect } from "react";
import styles from "@/styles/Home.module.css";
export default function Home() {
const [prompt, setPrompt] = useState("");
const [isLoading, setIsLoading] = useState(false);
const [response, setResponse] = useState("");
const getResponseFromOpenAI = async () => {
setResponse("");
console.log("Getting response from OpenAI...");
setIsLoading(true);
const response = await fetch("/api/openai", {
method: "POST",
headers: {
"Content-Type": "application/json",
},
body: JSON.stringify({ prompt: prompt }),
});
const data = await response.json();
setIsLoading(false);
console.log(data.text);
setResponse(data.text);
};
return (
<>
Next.js & OpenAI
Next.js & OpenAI Sample Application
>
);
}
现在是时候测试我们的应用程序了。在浏览器中打开 http://localhost:3000/,你应该能够看到类似于以下内容的前端:
开始在输入字段中输入您的问题:
单击“获取响应”按钮将输入发送到 OpenAI 的语言模型。然后你应该看到消息“等待响应......”:
一旦收到来自 OpenAI 的响应,就会显示 OpenAI 提供的文本:
总之,使用 OpenAI API 构建 Next.js 应用程序是一种向 Web 应用程序添加高级功能和智能的强大方法。按照本初学者指南中概述的步骤,您可以轻松地将 OpenAI API 集成到您的 Next.js 应用程序中并开始利用其功能。
我们已经介绍了设置 Next.js 应用程序、集成 OpenAI API 以及使用它向您的应用程序添加高级功能的基础知识。然而,这仅仅是开始。OpenAI API 提供了更多您可以在项目中探索和使用的功能。借助 OpenAI API,您可以构建能够理解自然语言、生成文本甚至进行预测的应用程序。
当您继续使用 OpenAI API 构建和改进 Next.js 应用程序时,请记住始终了解该领域的最新进展,并在新特性和功能可用时加以利用。借助 OpenAI API 的强大功能,您的 Next.js 应用程序可以变得更加强大和智能,从而脱颖而出。
感谢您阅读本指南,希望对您有所帮助。我们祝愿您在下一个 AI 驱动的 Next.js 项目中一切顺利。