OpenAI 推出用于下一代对话式 AI 开发的 ChatGPT 和 Whisper API

人工智能已经成为技术行业的推动力,使机器能够学习和执行以前被认为是人类独有的任务。领先的 AI 研究机构 OpenAI 一直走在这场革命的最前沿,开发可以处理自然语言并生成类似人类文本的强大模型。其中一个模型是 ChatGPT API,它可以对文本输入生成连贯且上下文相关的响应。

对于使用 Next.js(一种用于构建 Web 应用程序的流行 React 框架)的开发人员来说,集成 ChatGPT API 可以为对话式 AI 开启新的可能性。我的电脑在做什么提供了所有正在运行的程序的详细信息在本指南中,我们将探索 ChatGPT API 的强大功能,并向您展示如何将其与 Next.js 结合使用来构建更智能、更具吸引力的聊天机器人。无论您是经验丰富的开发人员还是刚刚开始使用 Next.js,本指南都将为您提供将对话式 AI 提升到新水平所需的知识和工具。因此,让我们开始并通过从头到尾集成 ChatGPT API 构建一个完整的 Web 应用程序来释放 ChatGPT API 的全部潜力。

检索 OpenAI API 密钥

为了能够在我们的 Next.js 应用程序中使用 OpenAI 的 API,我们需要先从 OpenAI 仪表板检索 API 密钥。

要检索您的 OpenAI API 密钥,您需要在 https://openai.com/ 创建一个用户帐户并访问 OpenAI 仪表板中的 API 密钥部分以创建一个新的 API 密钥。

此密钥是秘密的,不得与任何其他人共享。稍后在实现 Python 脚本以访问 OpenAI 的 API 时,我们将需要使用此密钥。

设置 Next.js 13 项目

接下来,我们需要创建一个新的 Next.js 13 项目来开始实施。使用以下命令:

$ npx create-next-app@latest --experimental-app

experimental -app标志指定我们要在 Next.js 项目中使用新的应用程序文件夹结构。

为了完成项目的创建过程,您需要在命令行中回答几个问题:

最后,您可以输入以下命令进入新创建的项目文件夹:

$ cd next13_chatgpt_api

由于我们想将 Chakra UI 用于 Web 应用程序的用户界面,因此我们需要安装更多依赖项:

$ npm i @chakra-ui/react @emotion/react @emotion/styled framer-motion @chakra-ui/next-js

成功安装 Chakra UI 依赖项后,我们需要通过打开文件 app/layout.js 激活 Chakra UI 在我们的应用程序中的使用,并将应用程序的页面嵌入到 CacheProvider 和 ChakraProvider 组件中,如下面的清单所示:

'use client'import { CacheProvider } from "@chakra-ui/next-js";
import { ChakraProvider } from "@chakra-ui/react";export default function RootLayout({ children }) {return (<html lang="en"><head /><body><CacheProvider><ChakraProvider>{children}</ChakraProvider></CacheProvider></body></html>);
}

实现路由处理器

接下来,在新文件夹app/api/chat中添加一个新的空文件route.js并使用新的 Next.js Route Handler 标准插入以下代码用于 API 路由实现:

export const runtime = "experimental-edge";if (!process.env.NEXT_PUBLIC_OPENAI_API_KEY) {throw new Error("Missing OpenAI API Key");
}export async function POST(request) {try {const { prompt } = await request.json();const response = await fetch("https://api.openai.com/v1/chat/completions", {method: "POST",headers: {"Content-Type": "application/json",Authorization: `Bearer ${process.env.NEXT_PUBLIC_OPENAI_API_KEY}`,},body: JSON.stringify({model: "gpt-3.5-turbo",messages: [{ role: "user", content: prompt }],temperature: 0.7,top_p: 1,frequency_penalty: 0,presence_penalty: 0,max_tokens: 200,stream: false,n: 1,}),});const json = await response.json();return new Response(json.choices[0].message.content);} catch (e) {return new Response("Request cannot be processed!", {status: 400,});}

此代码定义了响应 HTTP POST 请求的 Next.js 13 API 路由/api/chat,并用于从我们的前端访问 ChatGPT API 功能。

执行的前几行检查环境变量是否存在NEXT_PUBLIC_OPENAI_API_KEY。如果未设置此变量,它会抛出一个错误,指示缺少 OpenAI API 密钥。

如果密钥存在,代码将继续处理传入的 POST 请求。它需要一个包含单个字段的 JSON 对象prompt,该字段包含用户的输入。然后代码向端点的 OpenAI ChatGPT API 发出请求https://api.openai.com/v1/chat/completions,传递从用户收到的提示。该请求是使用该POST方法发出的,并包含一个 JSON 负载,其中包含各种参数,例如要使用的模型名称、温度、要生成的最大令牌数等。OpenAI API 密钥也作为授权标头包含在内。

如果请求成功,API 将返回一个包含字段 的 JSON 响应choices,该字段是 OpenAI 的 ChatGPT API 生成的可能响应的数组。API 以纯文本形式返回数组的第一个响应。

如果在处理请求时出现错误,API 将返回一个 400 状态代码和一条纯文本错误消息,指示无法处理该请求。

使用 Chakra UI 实现前端

在下一步中,我们准备继续并通过打开文件 app/page.js 来实现 Next.js Web 应用程序的前端部分。首先,清理并删除该文件中的现有代码,然后添加Home组件的以下实现:

'use client'
import { useState } from "react";
import { Heading, Text, Box, Flex, Button, Textarea } from "@chakra-ui/react";export default function Home() {let [prompt, setPrompt] = useState("");let [isLoading, setIsLoading] = useState(false);let [result, setResult] = useState("");return (// Insert UI Code Here);
}

Home是我们网络应用程序的主要 Next.js 页面组件。

useState该组件从 Chakra UI 库中导入钩子和各种 UI 组件。

该export default语句定义组件的默认导出。函数体使用useState钩子定义了三个状态变量:prompt、isLoading和result。

  • prompt最初是一个空字符串,用于保存用户的输入。

  • isLoading最初为 false,旨在跟踪应用程序当前是否正在处理请求。

  • result最初是一个空字符串,用于保存对 ChatGPT API 的请求的响应。

为了实现我们的 Web 应用程序的 UI,将以下 JSX 代码(使用 Chakra 的 UI 组件)添加到 return 语句中:

    <Flexwidth={"100vw"}height={"100vh"}alignContent={"center"}justifyContent={"center"}bgGradient="linear(to-b, #005C97, #0083B0)"><Box maxW="2xl" m="0 auto" p="20px"><Headingas="h1"textAlign="center"fontSize="5xl"mt="100px"bgGradient="linear(to-l, #C9FFBF, #FFAFBD)"bgClip="text">Next.js 13 & ChatGPT API</Heading><Heading as="h2" textAlign="center" fontSize="3xl" mt="20px">Get Started Guide</Heading><Text fontSize="xl" textAlign="center" mt="30px">This is a Next.js 13 sample web application making use of OpenAI`sbrand new ChatGPT API to perform text completions. Furthermore it usesNext.js 13 app directory together with Route Handlers.</Text><Textareavalue={prompt}onChange={handlePromptChange}placeholder="Insert your prompt here ..."mt="30px"size="lg"/><ButtonisLoading={isLoading}loadingText="Loading..."colorScheme="teal"size="lg"mt="30px"onClick={handleSubmitPromptBtnClicked}>Submit Prompt</Button><ButtoncolorScheme="teal"size="lg"mt="30px"ml="20px"onClick={handleClearBtnClicked}>Clear</Button>{result != "" && (<Box maxW="2xl" m="0 auto"><Heading as="h5" textAlign="left" fontSize="lg" mt="40px">Result:</Heading><Text fontSize="lg" textAlign="left" mt="20px">{result}</Text></Box>)}</Box></Flex>

此 JSX 代码使用 Chakra UI 库组件定义了一个 UI 组件。

该组件是一个Flex具有完整视口宽度和高度、居中内容和背景渐变的容器。

在Flex容器内,有一个Box组件的最大宽度为2xl,水平边距为 ,0 auto以使其在父容器内居中。

在 中Box,有Heading、Text和组件显示以下 UI 元素Textarea:Button

  • 显示 Web 应用程序标题的大标题

  • Web 应用程序副标题的较小标题

  • 显示应用程序描述的文本元素

  • Textarea用户输入组件

  • 用于提交输入的按钮

  • 用于清除输入的按钮

  • Box显示文本完成过程结果的组件(仅当状态result变量不为空时)。

UI 代码使用各种 Chakra UI 道具来控制组件的外观和布局,包括maxW、m、p、mt、bgGradient、bgClip、colorScheme和size。

总体而言,此 JSX 代码定义了 Next.js Web 应用程序的 UI 结构和样式,该应用程序利用 OpenAI ChatGPT API 来执行文本完成。

实施事件处理程序

为了进一步完成 page.js 中的实现,我们需要添加相应的事件处理函数。让我们从以下内容开始:

const handlePromptChange = (e) => {setPrompt(e.target.value);
};

此代码定义了一个事件处理函数handlePromptChange,当用户更改相应输入字段中的输入时触发该函数。该函数接收一个event对象作为参数,它表示用户与输入字段的交互。

该函数使用setPrompt使用钩子定义的函数,用输入字段的新值useState更新变量的状态检索输入字段的当前值,并使用 setPrompt 函数将其分配给状态变量。prompte.target.valueprompt

总之,每当用户在输入字段中键入内容时,handlePromptChange都会调用该函数并将状态设置为输入字段的值,从而导致组件使用更新后的状态值prompt重新呈现。prompt

接下来,让我们添加事件处理函数的实现handleClearBtnClicked:

  const handleClearBtnClicked = () => {setPrompt("");setResult("");};

该handleClearBtnClicked函数是一个事件处理程序,在用户单击清除按钮时触发。此函数将状态变量重置prompt为result它们的初始空字符串值,从而有效地从 UI 中清除任何先前的输入或输出数据。

在函数体中,语句用空字符串setPrompt("")更新状态变量,有效地清除输入字段。prompt该语句类似地用空字符串setResult("")更新状态变量,清除之前可能已显示的任何结果。result

最后,让我们添加handleSubmitPromptBtnClicked():

    const handleSubmitPromptBtnClicked = () => {setIsLoading(true);fetch("/api/chat", {method: "POST",headers: {"Content-Type": "application/json",},body: JSON.stringify({prompt: prompt,}),}).then((res) => res.text()).then((text) => {setResult(text);setIsLoading(false);});};

上面的代码定义了一个事件处理函数handleSubmitPromptBtnClicked(),在单击提交按钮时调用该函数。该函数执行以下操作:

  1. isLoading将状态设置true为指示正在发出请求。

  1. 调用函数以使用包含当前值的 JSON 负载fetch向端点发出 POST 请求。/api/chatprompt

  1. 收到响应后,将使用该text()方法将其转换为文本。

  1. 然后将生成的文本设置为result状态变量。

  1. 最后,isLoading状态被设置回false表示请求已经完成。

在下面的清单中,您可以再次看到Home组件的完整代码:

'use client'
import { useState } from "react";
import { Heading, Text, Box, Flex, Button, Textarea } from "@chakra-ui/react";export default function Home() {let [prompt, setPrompt] = useState("");let [isLoading, setIsLoading] = useState(false);let [result, setResult] = useState("");const handlePromptChange = (e) => {setPrompt(e.target.value);};const handleSubmitPromptBtnClicked = () => {setIsLoading(true);fetch("/api/chat", {method: "POST",headers: {"Content-Type": "application/json",},body: JSON.stringify({prompt: prompt,}),}).then((res) => res.text()).then((text) => {setResult(text);setIsLoading(false);});};const handleClearBtnClicked = () => {setPrompt("");setResult("");};return (<Flexwidth={"100vw"}height={"100vh"}alignContent={"center"}justifyContent={"center"}bgGradient="linear(to-b, #005C97, #0083B0)"><Box maxW="2xl" m="0 auto" p="20px"><Headingas="h1"textAlign="center"fontSize="5xl"mt="100px"bgGradient="linear(to-l, #C9FFBF, #FFAFBD)"bgClip="text">Next.js 13 & ChatGPT API</Heading><Heading as="h2" textAlign="center" fontSize="3xl" mt="20px">Get Started Guide</Heading><Text fontSize="xl" textAlign="center" mt="30px">This is a Next.js 13 sample web application making use of OpenAI`sbrand new ChatGPT API to perform text completions. Furthermore it usesNext.js 13 app directory together with Route Handlers.</Text><Textareavalue={prompt}onChange={handlePromptChange}placeholder="Insert your prompt here ..."mt="30px"size="lg"/><ButtonisLoading={isLoading}loadingText="Loading..."colorScheme="teal"size="lg"mt="30px"onClick={handleSubmitPromptBtnClicked}>Submit Prompt</Button><ButtoncolorScheme="teal"size="lg"mt="30px"ml="20px"onClick={handleClearBtnClicked}>Clear</Button>{result != "" && (<Box maxW="2xl" m="0 auto"><Heading as="h5" textAlign="left" fontSize="lg" mt="40px">Result:</Heading><Text fontSize="lg" textAlign="left" mt="20px">{result}</Text></Box>)}</Box></Flex>);
}

启动开发 Web 服务器

是时候启动 Next.js 开发 Web 服务器并通过键入以下命令来检查结果了:

$ npm run dev

服务器正在启动并使我们的应用程序在端口 3000 上可用:

您现在可以在浏览器中访问该应用程序。结果可以在以下屏幕截图中看到:

文本输入字段用于将您的请求输入到 ChatGPT 的 API。通过单击“提交提示”按钮提交请求。一旦来自 API 的答案可用,带有文本响应的结果区域就会变得可见。

恭喜,您的第一个 Next.js 13 Web 应用程序已成功使用 OpenAI 新的 ChatGPT API。

结论

OpenAI 的 ChatGPT API 是一项改变游戏规则的技术,可以帮助开发人员创建更像人类且更具吸引力的聊天机器人。通过将这个强大的 API 与 Next.js 集成,开发人员可以为对话式 AI 开启新的可能性,使他们的应用程序能够根据上下文智能地响应用户输入。

在本指南中,我们探讨了 ChatGPT API 的主要功能,并提供了将其与 Next.js 集成的分步说明。我们还讨论了使用该技术创建更有效的 AI 驱动的 Web 应用程序的最佳实践和技巧。

我们希望本指南对您有所帮助并有所帮助,我们鼓励您在自己的开发工作中继续探索 AI 的潜力。感谢您的阅读,祝您编码愉快!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/20497.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

乌合之众再次上演,打工人将被AI一键淘汰?

ChatGPT&#xff0c;是一场以硅谷为圆心&#xff0c;辐射至全球的人工智能竞赛&#xff0c;人们关于人工智能的担忧与思考从未停歇。一起来看看这篇文章&#xff0c;了解一下——大浪来袭&#xff0c;要怎么做才能保证自己不会溺水&#xff1f; 上个月底&#xff0c;千余名科技…

AI数字人定制热潮来袭,虚拟数字人引领企业数字化服务新趋势

2023年伊始&#xff0c;AIGC 强势爆发、类 ChatGPT 语言大模型横空出世&#xff0c;掀起了人工智能热潮。ChatGPT的强势崛起&#xff0c;也推动着同样火爆出圈的元宇宙驶入发展快车道。作为一个人工智能领域超大的语言模型&#xff0c;ChatGPT目前主要应用在交互式对话的领域中…

2022年度十大AI技术盘点:AIGC风暴来袭,自动驾驶后会无期?

“科学不能告诉我们应该做什么&#xff0c;只能告诉我们能做什么。” ——让-保罗萨特《存在与虚无》 这一年&#xff0c;AI又有哪些前沿技术突破呢&#xff1f;通过汇总梳理2022年10大AI技术&#xff0c;AI科技大本营发现&#xff0c;这些突破主要集中在图像、视频和语音语义领…

算网时代新思考,2023 移动云大会重磅来袭!

4 月 20 日&#xff0c;中国移动发起微博话题 #算力网络如何助力数字中国建设#并重磅预告“云擎未来 智信天下”2023移动云大会即将启幕。“为什么大家如此关注算力网络的发展”&#xff0c;今天我们就着这个话题聊起。 算力作为发展数字经济的关键支撑&#xff0c;正改变我们…

超炫酷项目来袭!DragGAN 火爆开源社区!

你在 Github 上见过一个空仓库在短短几天内就斩获 10K star 的项目吗&#xff1f; 今天树先生给大家介绍一款超炫酷的项目——DragGAN&#xff0c;来一起看看它为何如此火爆。 DragGAN 是什么&#xff1f; 不同于之前大火的 Stable Diffusion 与 Midjourney 使用的扩散模型&a…

Hotel booking酒店预订——数据分析与建模

Hotel booking酒店预订——数据分析与建模&#xff1a;https://zhuanlan.zhihu.com/p/196757364?utm_sourcewechat_session 写文章 Hotel booking酒店预订——数据分析与建模&#xff08;转载翻译自kaggle&#xff09; 海上泊舟 数据分析师 数据源&#xff1a; https://www.sc…

Android开发酒店预定预约管理系统

基于Android平台开发的名宿酒店管理系统 现代酒店组织日益庞大&#xff0c;服务项目多、信息量大已经成为酒店行业的一大特点。想要提高工作效率、提高服务质量、降低成本就必须借助现代计算机技术实现高效率的管理模式。作为一个现代化的酒店&#xff0c;要想在激烈的竞争中夺…

基于android的酒店客房预订客户端app

随着社会的脚步的加快&#xff0c;人们的生活节奏也变得越来越快&#xff0c;在这同一时代中盛行的产品便是手机&#xff0c;各种高端的手机的出现&#xff0c;为人们的生活增添了很大的乐趣&#xff0c;也为人们的日常生活带来了相当大的便利。各种在手机上出现的应用被大家所…

国内酒店预定接口

酒店预订&#xff0c;在线订房&#xff0c;酒店信息查询 一、接口介绍 通过用户输入的关键词对特定及周边酒店信息进行查询&#xff0c;获取酒店门头照片、地址、房价、入住时间等酒店信息&#xff0c;同时提供创建、取消、支付订单并输出订单详情信息等服务。广泛应用于在线订…

【转载】用 ChatGPT+LangChain 部署到服务器,打造专属 GPT知识库

原文链接&#xff1a;https://www.bilibili.com/read/cv23216734 本地部署 安装 python&#xff0c;小白自己去找安装教程 pip install llama-index&#xff0c;安装 llama-index 库 pip install langchain&#xff0c;安装 langchain 库 pip install gradio&#xff0c;安…

音视频技术开发周刊 | 283

每周一期&#xff0c;纵览音视频技术领域的干货。 新闻投稿&#xff1a;contributelivevideostack.com。 基于隐扩散模型的高分辨率图像合成 本文提出的隐扩散模型(LDM)在图像修补和类条件图像合成方面具有一定优势&#xff0c;并且在各种任务(包括文本到图像合成、无条件图像生…

智能摩尔定律?Sam Altman被Marcus怼了;再也不用学Excel了?自愿降薪 40% 的库克,要被“踢出”董事会?...

本周AI业界又有哪些新鲜事&#xff1f; ChatGPT 肯尼亚工人为ChatGPT标注数据&#xff0c;2美元/小时 作为近年来AI领域的爆炸技术&#xff0c;ChatGPT热度一直不减。然而&#xff0c;就和视频数据需要标注一样&#xff0c;ChatGPT在构建内容过滤器时也需要进行数据标注。这些数…

OpenAI 的外包数据标注员,时薪不足2美元,称工作是“精神创伤”

这是「进击的Coder」的第 810 篇技术分享 译者&#xff1a;核子可乐 策划&#xff1a;李冬梅 来源&#xff1a;infoQ “ 阅读本文大概需要 3 分钟。 ” ChatGPT 被视为近几年最具创新性的 AI 工具之一。这款强大的 AI 聊天机器人几乎可以生成任何问题的文本&#xff0c;从莎士…

ChatGPT用transformer算法在训练么

transformer算法是什么 Transformer 算法是一种用于序列处理的神经网络架构&#xff0c;首次在 2017 年的论文 "Attention is All You Need" 中提出。 它的主要特点是使用了注意力机制&#xff0c;能够自动学习到序列中重要的信息&#xff0c;并在计算时给予更多的…

推特营销引流入门指南

一、关注 当您关注另一个Twitter用户时&#xff0c;您进行订阅&#xff0c;即可立即阅读其内容分享。因此&#xff0c;请评估您关注的人&#xff0c;尤其是刚开始时。跟踪新用户的一种简单方法是找到他们的个人资料&#xff0c;然后单击“关注”按钮。 Twitter对于那些疯狂点…

亚马逊、阿里国际、Shopee、Temu等跨境电商平台测评自养号经验分享

对于亚马逊、temu、阿里国际等平台商家来说&#xff0c;流量非常重要。商家需要想办法提高流量。卖家店铺没有流量怎么办&#xff1f; 获取流量的第一点:自然搜索 自然搜索流量的来源实际上是通过站点的优化来提高排名的效果。站点优化有很多维度&#xff0c;如选择合适的关键…

跨境电商 | Facebook营销推广全攻略

Facebook 现已成为各种规模公司的强大营销工具&#xff0c;并提供不同的营销方式&#xff0c;包括 Facebook Business Page、群组和 Facebook 广告&#xff0c;帮助企业在目标受众中建立意识&#xff0c;与 客户并以有效且具有成本效益的方式推动销售。 本文将介绍营销策略、…

亚马逊、速卖通、temu、国际站卖家如何做自养号测评?干货分享

在跨境出口平台电商中&#xff0c;相信“刷单”是永远不会有消失的一天&#xff01; 珑哥突然想到&#xff0c;如果我们中国没有“某宝”&#xff0c;会不会改变下我们国人做电商走捷径的思维呢&#xff01;其实就算没有某宝&#xff0c;相信只要我们国人做&#xff0c;刷单的…

Google DeepMind掌舵人Demis Hassabis专访:合并后「超级单元」内幕,以及如何开展下一代模型研究...

导读 自2023年以来&#xff0c;Google旗下两大顶级人工智能研究团队 DeepMind 与 Google Brain 被不断推上风口浪尖&#xff0c;如何应对OpenAI与微软强强联合&#xff1f;如何组织不被看好的 DeepMind 与 Google Brain 团队合并&#xff1f;Google和OpenAI都没有护城河吗&…

Google DeepMind掌舵人Demis Hassabis专访:合并后「超级单元」内幕,以及如何开展下一代模型研究

Demis Hassabis&#xff1a;毕业于伦敦大学学院&#xff0c;DeepMind创始人。游戏开发者、神经学家和人工智能企业家&#xff0c;AlphaGo的创造者&#xff0c;帮助Google展开一场全新的人工智能革命。 DeepMind Google Brain 科学 工程 N 指代 Nilay Patel&#xff0c;Verg…