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

这篇具有很好参考价值的文章主要介绍了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 密钥。

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

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

设置 Next.js 13 项目

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

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

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

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

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

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

$ 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 语句中:

    <Flex
      width={"100vw"}
      height={"100vh"}
      alignContent={"center"}
      justifyContent={"center"}
      bgGradient="linear(to-b, #005C97, #0083B0)"
    >
      <Box maxW="2xl" m="0 auto" p="20px">
        <Heading
          as="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`s
          brand new ChatGPT API to perform text completions. Furthermore it uses
          Next.js 13 app directory together with Route Handlers.
        </Text>
        <Textarea
          value={prompt}
          onChange={handlePromptChange}
          placeholder="Insert your prompt here ..."
          mt="30px"
          size="lg"
        />
        <Button
          isLoading={isLoading}
          loadingText="Loading..."
          colorScheme="teal"
          size="lg"
          mt="30px"
          onClick={handleSubmitPromptBtnClicked}
        >
          Submit Prompt
        </Button>
        <Button
          colorScheme="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 (
    <Flex
      width={"100vw"}
      height={"100vh"}
      alignContent={"center"}
      justifyContent={"center"}
      bgGradient="linear(to-b, #005C97, #0083B0)"
    >
      <Box maxW="2xl" m="0 auto" p="20px">
        <Heading
          as="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`s
          brand new ChatGPT API to perform text completions. Furthermore it uses
          Next.js 13 app directory together with Route Handlers.
        </Text>
        <Textarea
          value={prompt}
          onChange={handlePromptChange}
          placeholder="Insert your prompt here ..."
          mt="30px"
          size="lg"
        />
        <Button
          isLoading={isLoading}
          loadingText="Loading..."
          colorScheme="teal"
          size="lg"
          mt="30px"
          onClick={handleSubmitPromptBtnClicked}
        >
          Submit Prompt
        </Button>
        <Button
          colorScheme="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 上可用:

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

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

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

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

结论

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

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

我们希望本指南对您有所帮助并有所帮助,我们鼓励您在自己的开发工作中继续探索 AI 的潜力。感谢您的阅读,祝您编码愉快!文章来源地址https://www.toymoban.com/news/detail-489843.html

到了这里,关于OpenAI 推出用于下一代对话式 AI 开发的 ChatGPT 和 Whisper API的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 下一代网络爬虫:AI agents

    下一代网络爬虫是爬虫级 AI agents。 由于现代网页的复杂性,现代爬虫都倾向于使用高性能分布式 RPA,完全和真人一样访问网页,采集数据。由于 AI 的成熟,RPA 工具也在升级为 AI agents。因此,网页爬虫的发展趋势是爬虫级智能体(AI agents),或者我喜欢称为 数字超人 。 互联

    2024年01月22日
    浏览(63)
  • 下一代Edge AI的应用初探

    如您所见,AI已不再只是科幻电影的经典主题,它正在以惊人的速度被应用到我们日常生活中的方方面面,并从个人关系到工作项目上,逐渐改变着我们的想法或行为。 其中,一个最为典型的领域当属NextGEN Edge AI(下一代边缘人工智能)应用。它能够通过诸如:排名、分类、

    2024年02月21日
    浏览(68)
  • 详解FPGA —— 下一代AI算力芯片(上)

    本文将详细介绍FPGA芯片。 微信搜索关注《Java学研大本营》 CPU为一般计算提供了一套通用的计算指令,要修改或优化应用程序,我们更改代码,但硬件是固定的。然而,这种通用化是以硬件的复杂性为代价的。如果没有复杂的硬件优化,如投机执行,它就会损害性能。但是,

    2024年02月04日
    浏览(49)
  • 下一代计算:嵌入AI的云/雾/边缘/量子计算

    计算系统在过去几十年中推动了计算机科学的发展,现在已成为企业世界的核心,提供基于云计算、雾计算、边缘计算、无服务器计算和量子计算的服务。 现代计算系统解决了现实世界中许多需要低延迟和低响应时间的问题。这有助于全球各地的青年才俊创办初创企业,利用

    2024年02月12日
    浏览(53)
  • 下一代智能合约开发语言(一)

    背景 过去的三个月可能是我过去几年离一百万最近的一次,错过了aptos的空投,几分钟就可以做一个任务,最后空投了150APT代币,最高时价值4W。。。真的是真金白银的教训。不过作为一个开发者,看到的更多是区块链未来的价值,所以开始真正投入到智能合约开发的学习中

    2024年02月02日
    浏览(79)
  • Microsoft 365 Copilot:下一代 AI 生产力技术

    微软已经向部分商业用户开放 Microsoft 365 Copilot,这是一个基于大语言模型的 AI 生产力技术,由 OpenAI 的 GPT-4 技术驱动。Copilot 可以在 Microsoft 365 应用中辅助用户生成文档、电子邮件、演示文稿等。它出现在 Microsoft 365 应用的侧边栏,像一个聊天机器人,让用户可以随时召唤它

    2024年02月08日
    浏览(60)
  • 试图替代 Python 的下一代AI编程语言:Mojo

    Mojo 是一种创新的编程语言,结合了 Python 的可用性和 C 的性能。它旨在成为人工智能 (AI) 开发的首选语言,因为它允许开发人员编写既快速又易于阅读的代码。 这里有一些关键点, Modular 是一种新的编程语言,旨在应对整个 AI 堆栈的编程挑战。 Mojo 旨在成为一种创新且可扩

    2024年02月09日
    浏览(51)
  • 【人工智能】下一代 AI 编程语言:Mojo 编程手册

    目录 Why Mojo🔥 为什么选择Mojo 魔术🔥 ? Mojo as a member of the Python familyMojo 作为 Python 家族的一员 

    2024年02月09日
    浏览(73)
  • AI智能助手的未来:与人类互动的下一代人工智能技术

    智能助手是一种基于人工智能技术的应用程序或设备,旨在帮助用户完成各种任务、提供信息和服务。智能助手通常具备 语音识别 、 自然语言处理 和 机器学习 等技术,使其能够 理解和解释用户的指令 、 问题或请求 ,并以相应的方式 作出回应 。 智能助手可以运行在智能

    2024年02月11日
    浏览(63)
  • 【AI智能助手的未来】与人类互动的下一代人工智能技术

    智能助手是一种基于人工智能技术的应用程序或设备,旨在帮助用户完成各种任务、提供信息和服务。智能助手通常具备 语音识别 、 自然语言处理 和 机器学习 等技术,使其能够 理解和解释用户的指令 、 问题或请求 ,并以相应的方式 作出回应 。 智能助手可以运行在智能

    2024年02月07日
    浏览(72)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包