使用 React、OpenAI 和服务器发送事件 (SSE) 流式传输实时结果:分步指南

在本指南中,我们将探讨如何使用 OpenAI 的 GPT-3 API 和服务器发送事件 (SSE) 在 React Web 应用程序中流式传输实时结果。随着人工智能和机器学习的兴起,OpenAI 的 GPT-3 已成为自然语言处理和文本生成领域最强大、最通用的工具之一。如何在 Windows 和 Mac OS 上查找计算机名称通过将其与 React 的简单性和性能以及 SSE 的实时功能相结合,您可以创建真正出色的 Web 应用程序。

在本分步指南中,我们将带您完成设置 React 环境、集成 OpenAI 的 GPT-3 API 以及使用 SSE 流式传输实时结果的过程。准备好增强您的 Web 应用程序开发技能并创建真正动态且引人入胜的用户体验。

我们要建造什么

让我们快速浏览一下我们将在本分步指南中构建的 Web 应用程序……

使用 React、OpenAI 和服务器发送事件 (SSE) 流式传输实时结果:分步指南_第1张图片

我们正在构建的应用程序将能够提供从 OpenAI 的 GPT-3 语言模型中检索到的实时文本响应。

为了构建这个 Web 应用程序,我们将使用以下技术:

  • Yarn:Yarn 是 JavaScript 的包管理器。它是广泛使用的 npm(节点包管理器)的替代品,并提供了许多优于它的好处。

  • Vite:Vite 是一种用于现代 Web 项目的快速、优化的构建工具和开发服务器。它的创建是为了解决传统构建工具面临的一些挑战,例如构建时间慢、包大小大以及设置开发环境的困难。

  • React:React 是 Facebook 开发的用于构建用户界面的最流行的 JavaScript 库之一。它非常适合构建复杂的动态用户界面。

  • Chakra UI:Chakra UI 是 React 的 UI 库,它提供了一组可重用和可访问的组件,用于构建现代用户界面。

  • OpenAI GPT-3 API:OpenAI GPT-3(Generative Pretrained Transformer 3)是OpenAI开发的一种高级语言处理AI模型。它是迄今为止最大、最强大的语言模型之一,能够为广泛的任务生成高质量的文本,包括语言翻译、问答和摘要。我们将使用 API 将模型的一些功能集成到我们的 React Web 应用程序中。

  • sse.js:是一个小型的 JavaScript 服务器发送事件库,我们可以很好地使用它以流模式与 OpenAI API 通信,并在我们的前端应用程序中接收服务器发送的事件。该库位于:https://github.com/mpetazzoni/sse.js

第 1 步:获取 OpenAI API 密钥

为了能够从您的 Python 脚本中访问 OpenAI API,我们需要使用 API 密钥。

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

使用 React、OpenAI 和服务器发送事件 (SSE) 流式传输实时结果:分步指南_第2张图片

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

第 2 步:使用 Yarn 和 Vite 创建 React 项目

现在让我们用 vite 创建一个新的 React 项目。在命令行中键入以下命令以启动创建过程:

$ yarn create vite

接下来系统会提示您输入新的项目名称:

使用 React、OpenAI 和服务器发送事件 (SSE) 流式传输实时结果:分步指南_第3张图片

输入 react-openai-sse 并回车继续。然后,Vite 将为您提供一个 JavaScript 框架列表,您可以从中进行选择。使用箭头键选择条目“React”并再次回车:

使用 React、OpenAI 和服务器发送事件 (SSE) 流式传输实时结果:分步指南_第4张图片

选择“React”后,系统会要求您指定 React 项目的变体。您有四个选项可供选择:

使用 React、OpenAI 和服务器发送事件 (SSE) 流式传输实时结果:分步指南_第5张图片
  • JavaScript

  • 打字稿

  • JavaScript + 软件组件

  • 打字稿 + SWC

因此,您可以决定创建一个仅使用普通 JavaScript 或也支持 Typescript 的 React 项目。此外,您可以选择使用 SWC,它是一种新的基于 Rust 的捆绑器,它声称比基于 JS 的捆绑器快得多。对于本文的示例,我们选择选项“JavaScript +SWC”。

选择后,项目设置完成:

使用 React、OpenAI 和服务器发送事件 (SSE) 流式传输实时结果:分步指南_第6张图片

您现在可以进入新的项目目录(使用您输入的项目名称:

$ cd react-openai-sse

接下来需要执行yarn命令:

$ yarn

这确保了项目所有需要的依赖项都被下载和安装:

使用 React、OpenAI 和服务器发送事件 (SSE) 流式传输实时结果:分步指南_第7张图片

第三步:安装依赖

下一步是安装所需的依赖项:Chakra UI 和 sse.js。让我们从 Chakra UI 开始。为了安装 UI 库,您需要在项目文件夹中执行以下命令:

$ yarn add @chakra-ui/react @emotion/react @emotion/styled framer-motion

其次确保使用以下命令将 sse.js 库安装到我们的项目中:

$ yarn add sse@https://github.com/mpetazzoni/sse.js

第 4 步:清理项目

在文件 src/App.js 中,您已经可以找到很多默认代码。让我们清理此代码,使其仅包含我们用作起点的 App 组件的空实现:

function App() {
  return (
  );
}

export default App;

第 5 步:实现用户界面 (UI)

为了为我们的 React 应用程序激活 Chakra UI,我们需要将主要应用程序组件嵌入到. 必须首先从 @chakra-ui/react 导入 ChakraProvider 组件。将 src/main.jsx 中的代码修改为以下内容:

import React from 'react'
import ReactDOM from 'react-dom/client'
import { ChakraProvider } from '@chakra-ui/react'
import App from './App'
import './index.css'

ReactDOM.createRoot(document.getElementById('root')).render(
  
    
      
    
  
)

接下来打开 src/App.jsx。首先让我们在文件顶部添加一个 import 语句,它导入我们将使用的所有 Chakra UI 组件:

import { Heading, Text, Box, Flex, Button, Textarea } from "@chakra-ui/react";

Flex现在通过以下方式将 Chakra UI 的组件添加到 App 组件的返回语句来开始实现用户界面:

  return (
    
    
);

此代码Flex使用 React 中的 Chakra UI 库创建一个组件。Flex 组件用于创建灵活且响应迅速的布局容器。

代码将Flex容器的宽度和高度分别设置为100vw和100vh。这意味着容器将占据视口的全部宽度和高度。

该alignContent属性设置为center,这会将内容沿容器中心的横轴(垂直)对齐。该justifyContent属性也设置为center,这会将内容沿容器中心的主轴(水平)对齐。

最后,bgGradient属性设置为linear(to-b, orange.100, purple.300)。这会将容器的背景渐变设置为线性渐变,该渐变以 color 开始orange.100并过渡到purple.300.

因此,简而言之,代码创建了一个整页容器,该容器具有居中布局和从橙色过渡到紫色的背景渐变。

在组件内部,Flex我们确实需要添加更多的 Chakra UI 元素,如下面的清单所示:

return (
    
      
        
          React & OpenAI
        
        
          With Server Sent Events (SSE)
        
        
          This is a React sample web application making use of OpenAI's GPT-3
          API to perform prompt completions. Results are received using Server
          Sent Events (SSE) in real-time.