如何使用ChatGPT搭建AI网站

1.概述

ChatGPT是一款基于GPT-3.5架构的大型语言模型,它能够进行自然语言处理和生成对话等任务。作为一款智能化的聊天机器人,ChatGPT有着广泛的应用场景,如在线客服、智能助手、个性化推荐等。今天笔者给大家分享一下如何使用ChatGPT的API模型快速搭建一个AI网站。

2.内容

在实战中,我发现ChatGPT的最大优势在于其自然流畅的对话交互能力。ChatGPT能够自动理解用户的意图和提出的问题,并针对性地给出回答和建议。同时,它还可以基于已有的上下文信息生成更加丰富的回复,从而实现更加自然和贴近人类的交互效果。

下面我将分享一些关于如何使用ChatGPT的实战经验,大概流程如下所示:

在使用ChatGPT前,我们需要对数据进行预处理。预处理的目的是将原始文本转换为模型可以理解的格式。具体来说,需要进行的预处理步骤包括:分词、标记化、向量化等。这些步骤都可以使用常见的NLP工具库来实现,如NLTK、spaCy、transformers等。在预处理完数据后,我们需要使用训练数据来训练ChatGPT模型。通常情况下,我们会使用一些优秀的深度学习框架来实现模型的训练,如PyTorch、TensorFlow等。在模型训练过程中,我们需要设置一些超参数,如学习率、批量大小、模型深度等。在模型训练完成后,我们需要对模型进行评估。评估的目的是了解模型的性能和表现,从而决定是否需要进行进一步的调整和优化。常见的模型评估指标包括:准确率、召回率、F1值等。在完成模型训练和评估后,我们需要将ChatGPT应用到实际场景中。通常情况下,我们需要将ChatGPT集成到我们的应用程序中,如在线客服、智能助手等。在部署过程中,我们需要考虑一些问题,如性能、可靠性、安全性等。

3.如何使用ChatGPT快速实现一个AI网站呢?

使用ChatGPT实现一个AI网站,大概步骤如下所示:

首先,您需要确定您的AI网站将用于哪些目的和哪些受众。您的目标可能是提供在线客服、智能问答、语音识别、自动翻译等功能。您的受众可能是您的客户、读者、访问者等。通过明确您的目标和受众,您可以更好地规划您的网站架构和设计。要构建一个AI网站,您需要选择一个Web开发框架。常用的Web开发框架包括Django、Flask、Express等。这些框架提供了许多常见的功能和模板,可以帮助您更快速地开发网站,并提高开发效率。集成ChatGPT是实现AI网站的关键步骤。您可以使用Python或JavaScript等编程语言来调用ChatGPT API并将其嵌入到您的Web应用程序中。这样,您的网站就可以通过ChatGPT提供更好的用户体验和服务。例如,用户可以通过与ChatGPT交互来获取问题的答案、进行语音交互等。

为了让用户能够更好地与ChatGPT交互,您需要创建一个用户友好的界面。您可以使用HTML、CSS、JavaScript等技术来设计和创建您的用户界面。您需要考虑到用户的需求和体验,并确保您的界面简洁、易用、美观等。为了让ChatGPT能够准确地回答用户的问题,您需要对ChatGPT进行训练。您可以使用自然语言处理技术来训练ChatGPT,以便它能够理解和响应用户的问题。您可以使用开源的数据集和算法来训练ChatGPT,并优化模型以提高精度和效率。

在将您的网站部署到生产环境之前,您需要对它进行测试和优化。您应该检查所有功能并确保它们能够正常运行,同时还应该优化性能和用户体验,以提高用户满意度。您可以使用自动化测试工具来测试您的网站,并使用性能分析工具来识别瓶颈和优化点。您可以收集用户反馈并进行改进,以不断改善您的网站。

当您准备好将您的网站部署到生产环境时,您需要选择一个合适的Web服务器和数据库。常用的Web服务器包括Apache、Nginx等,常用的数据库包括MySQL、PostgreSQL等。您还需要选择一个合适的云服务提供商,如AWS、Google Cloud等,并将您的应用程序部署到云服务器上。一旦您的网站部署到生产环境,您需要进行定期的维护和升级。您应该定期备份您的数据并更新您的应用程序以确保安全性和稳定性。您还应该持续地优化您的用户体验和功能,以满足用户的需求和期望。

4.基于promptable快速实现

如果你不懂算法,那么可以通过在promptable 快速建立prompt,然后部署生成一个PromptID,通过这个PromptID直接调用OpenAI的接口得到模型输出的结果。操作如下:

4.1 编写一个hook模块

用来调用OpenAI的接口,获取输出结果,实现代码如下所示:

import { addMessage, getHistoryString } from "@/utils/chatHistory";
import React, { useEffect } from "react";

export const useChatGpt = (message, promptId, chatHistory) => {
  // Send user meesage to api, meesage and prompt in body
  // then update state value with response
  //   console.log("Hook api call", message, promptId);
  const [data, setData] = React.useState("");
  const [isLoading, setIsLoading] = React.useState(false);
  const [isError, setIsError] = React.useState(false);
  const [history, setHistory] = React.useState(chatHistory);
  const [isSuccess, setIsSuccess] = React.useState(false);

  const fetchData = async () => {
    setIsLoading(true);
    try {
      const response = await fetch("/api/chatgpt", {
        method: "POST",
        headers: {
          "Content-Type": "application/json",
        },
        body: JSON.stringify({
          message,
          promptId,
          chatHistory: getHistoryString(chatHistory),
        }),
      }).then((res) => res.json());
      if (response.reply) {
        console.log("Hook api call response", response.reply);
        setData(response.reply);
        setIsSuccess(true);
        setHistory(addMessage(chatHistory, response.reply, "agent"));
      } else {
        setIsError(true);
      }
    } catch (error) {
      setIsError(true);
    }
    setIsLoading(false);
  };

  useEffect(() => {
    setIsError(false);
    setIsSuccess(false);
    if (message) {
      fetchData();
    }
  }, [message]);

  useEffect(() => {
    setHistory(chatHistory);
  }, [chatHistory]);

  useEffect(() => {
    if (promptId) {
      setIsError(false);
      setIsSuccess(false);
      setHistory([]);
    }
  }, [promptId]);

  return {
    data,
    isLoading,
    isError,
    history,
    isSuccess,
  };
};

通过编写一个页面组件,用来实现与后台接口服务交互使用,该模块用来调用模型并得到输出结果,实现代码如下所示:

import { useChatGpt } from "@/hook/useChatGpt";
import { addMessage } from "@/utils/chatHistory";
import { Button, TextField } from "@mui/material";
import React, { useEffect } from "react";
import { ChatHistoryFrame } from "./ChatHistoryFrame";

const promptId = "xxxxxx"; // 通过Prompt自动生成获取ID

export const ChatContainer = () => {
  const [pendingMessage, setPendingMessage] = React.useState("");
  const [message, setMessage] = React.useState("");
  const [chatHistory, setChatHistory] = React.useState([]);
  const { isLoading, history, isSuccess, isError } = useChatGpt(
    message,
    promptId,
    chatHistory
  );

  useEffect(() => {
    if (isSuccess || isError) {
      setMessage("");
    }
  }, [isSuccess, isError]);

  return (
    <div>
        <h1>MOVIE to emoji</h1>
      </a>
      <ChatHistoryFrame chatHistory={chatHistory} isLoading={isLoading} />
      <div>
        <TextField
          type="text"
          onChange={(e) => {
            setPendingMessage(e.target.value);
          }}
        />
        <Button
          style={{
            backgroundColor: "black",
            width: "80px",
          }}
          variant="contained"
          onClick={() => {
            setMessage(pendingMessage);
            setChatHistory(addMessage(history || [], pendingMessage, "user"));
          }}
        >
          Send
        </Button>
        <Button
          style={{
            color: "black",
            width: "80px",
            borderColor: "black",
          }}
          variant="outlined"
          onClick={() => {
            setMessage("");
            setChatHistory([]);
          }}
        >
          Clear
        </Button>
      </div>
    </div>
  );
};

编写一个调用ChatGPT接口逻辑的核心模块,用来与API交互得到输出结果,具体实现细节如下:

import { PromptableApi } from "promptable";
import { Configuration, OpenAIApi } from "openai";
import GPT3Tokenizer from "gpt3-tokenizer";

const configuration = new Configuration({
  apiKey: process.env.OPENAI_API_KEY,
});
const openai = new OpenAIApi(configuration);
const tokenizer = new GPT3Tokenizer({ type: "gpt3" });

const chatgpt = async (req, res) => {
  const { message, promptId, chatHistory } = req.body;
  console.log("api call entry", message, promptId);
  if (!message) {
    res.status(400).json({ error: "Message is required" });
    return;
  }
  if (!promptId) {
    res.status(400).json({ error: "Prompt ID is required" });
    return;
  }
  // call prompt ai api and openai api
  const reply = await getReply(message, promptId, chatHistory || "");
  res.status(200).json({ reply });
  return;
};

const getReply = async (message, promptId, chatHistory) => {
  // get prompt from prompt ai api based on promptId
  if (!promptId) {
    throw new Error("Prompt ID is required");
  }
  const promptDeployment = await PromptableApi.getActiveDeployment({
    promptId: promptId,
  });
  console.log("prompt deployment", promptDeployment);
  if (!promptDeployment) {
    throw new Error("Prompt deployment not found");
  }
  // replace prompt with message

  const beforeChatHistory = promptDeployment.text.replace("{{input}}", message);

  const numTokens = countBPETokens(beforeChatHistory);
  const afterChatHistory = beforeChatHistory.replace(
    "{{chat history}}",
    chatHistory
  );

  const finalPromptText = leftTruncateTranscript(
    afterChatHistory,
    4000 - numTokens
  );

  const revisedPrompt = {
    ...promptDeployment,
    text: finalPromptText,
  };

  console.log("revised prompt", revisedPrompt);
  // call openai api
  const response = await openai.createCompletion({
    model: revisedPrompt.config.model,
    prompt: revisedPrompt.text,
    temperature: revisedPrompt.config.temperature,
    max_tokens: revisedPrompt.config.max_tokens,
    top_p: 1.0,
    frequency_penalty: 0.0,
    presence_penalty: 0.0,
    stop: revisedPrompt.config.stop,
  });
  console.log("openai response", response.data);
  if (response.data.choices && response.data.choices.length > 0) {
    return response.data.choices[0].text;
  } else {
    return "I'm sorry, I don't understand.";
  }
};

function countBPETokens(text) {
  const encoded = tokenizer.encode(text);
  return encoded.bpe.length;
}

function leftTruncateTranscript(text, maxTokens) {
  const encoded = tokenizer.encode(text);
  const numTokens = encoded.bpe.length;
  const truncated = encoded.bpe.slice(numTokens - maxTokens);
  const decoded = tokenizer.decode(truncated);
  return decoded;
}

export default chatgpt;

最后,我们工程所使用的依赖包,如下所示:

"dependencies": {
    "@emotion/react": "^11.10.5",
    "@emotion/styled": "^11.10.5",
    "@mui/material": "^5.11.6",
    "@next/font": "13.1.6",
    "eslint": "8.32.0",
    "eslint-config-next": "13.1.6",
    "gpt3-tokenizer": "^1.1.5",
    "next": "13.1.6",
    "openai": "^3.2.1",
    "promptable": "^0.0.5",
    "react": "18.2.0",
    "react-dom": "18.2.0"
  }

在完成核心模块的后台逻辑编写后,可以访问Prompt后台,通过编写Prompt来获取ID,操作如下:

4.2 部署Prompt

完成Prompt编写后,我们就可以部署Prompt了,部署成功后会生成一个PromptID,如下图所示:

这里,在部署Prompt里面有参考代码实现,具体如下:

import axios from 'axios'

// 这里面的xxxxxxx是部署Prompt自动生成的ID,这里我用xxxxxxx替换了
const { data } = await axios.get('https://promptable.ai/api/prompt/xxxxxxx/deployment/active')

const prompt = data.inputs?.reduce((acc, input) => {
  // Replace input.value with your value!
  return acc.replaceAll(`{{${input.name}}}, ${input.value}`)
}, data.text)

const res = await axios.get('https://openai.com/v1/completions', {
  data: {
    // your prompt
    prompt,

    // your model configs from promptable
    config: {
      ...data.config,
      // add any other configs here
    }
  }
})

// Your completion!
console.log(res.data.choices[0].text)

最后,我们基于OpenAI最新的gpt-3.5-turbo模型,开发一个AI网站,效果如下:

这里为了节省token费用,通过点击“停止对话”按钮暂时输出了。因为使用OpenAI的接口是按照token来算费用的,英文字母算一个token,一个汉字算两个token,收费明细如下:

5.总结

本文介绍了如何使用ChatGPT来实现一个AI网站。通过选择合适的Web开发框架、集成ChatGPT、创建用户界面、训练ChatGPT、测试和优化、部署到生产环境以及进行维护和升级等步骤,您可以构建一个功能强大的AI网站,并提供更好的用户体验和服务。

通过本文的介绍,读者可以了解如何使用ChatGPT搭建AI网站,为自己的网站增加智能化的功能。随着人工智能技术的不断发展,ChatGPT等聊天机器人将会越来越普及,成为网站开发的重要工具之一。

到此这篇关于如何使用ChatGPT搭建AI网站的文章就介绍到这了,更多相关ChatGPT搭建AI网站内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • 手把手教你在Python里使用ChatGPT

    目录 前言 知识点 实现 代码 后话 前言 近来chatGPT挺火的,也试玩了一下,确实挺有意思.这里记录一下在Python中如何去使用chatGPT. 本篇文章的实现100%基于 chatGPT,我是搬运工无疑了!!! 本片文章比较简单. 知识点 pip install openai 看看 chatGPT的表现: 使用python编写一段发送网络请求的代码 python如何md5 也有抽风的表现: 小明妈妈大小明20岁,20年后小明妈妈大小明多少岁? 一个蛋糕切成8块我吃不完,切成4块刚刚好?

  • chatGPT本地部署、运行和接口调用的详细步骤

    目录 从 github 下载 环境配置 conda 创建虚拟环境 官方步骤配置环境 安装 revChatGPT 更改 config.json.example -> config.json 将 config.json 移动到 revChatGPT 路径下 cookie 信息写入 config.json 运行 main.py 从 github 下载 https://github.com/acheong08/ChatGPT 环境配置 conda 创建虚拟环境 我选择用 anaconda 先配一个专属的

  • vscode使用chatGPT 的方法

    目录 vscode使用chatGPT 一.下载chatPGT 二.使用 三.现在来看看它写的怎样 vscode使用chatGPT 一.下载chatPGT 在拓展中找到chatGPT,我这里下载的是中文版 二.使用 1.使用快捷键 ctrl+shift+p进行查找 chatGPT 2.点击请输入问题 3.输入你的问题,回车,这样它就会进行代码的编写 4.等一会儿就会给你结果啦 三.现在来看看它写的怎样 生成的代码 import smtplib # 设置发送方的邮件服务器和端口号 smtp_serv

  • 半小时实现基于ChatGPT搭建微信机器人

    目录 ChatGPT刷屏了 流程 注册 运行机器人程序 思考 ChatGPT刷屏了 相信大家最近被 ChatGPT 刷屏了,其实在差不多一个月前就火过一次,不会那会好像只在程序员的圈子里面火起来了,并没有被大众认知到,不知道最近是因为什么又火起来了,而且这次搞的人尽皆知. 想着这么火的 AI 完全可以好好玩一玩呀,于是就尝试着将 ChatGPT 接入到了个人微信中,实现在微信中调戏 AI. 先看几个聊天截图 还可以拉入到一个群,进行群聊,可以看到 ChatGPT 的训练数据相当还是比较旧的,有些

  • 如何调用chatGPT实现代码机器人

    目录 获取chatGPT登录Token信息 一.通过Httpclient实现调用chatGPT 二.通过hutool实现调用chatGPT 最近chatGPT也是非常的火爆,相信大家都看到了,现在提供一种Java调用chatGPT的方法,我们主要通过两个工具来实现,一就是httpclient,二就是hutool,你觉得那种好理解你就用那种即可! 获取chatGPT登录Token信息 1.需要拥有chatGPT账号,进入官网需要科学上网自行解决! 官网:ChatGPT 注册需使用国外手机号! 视频

  • ChatGpt无法访问或错误码1020的几种解决方案

    最近ChatGpt异常火热,访问网站经常会出现1020的错误代码,或无法访问. 大概率是因为服务器压力大,网关返回的1020错误码,只能等待官方修复,以下几种解决方案仅供参考. 1. 更换浏览器 2. 删除浏览器Cookie chrome浏览器: 右上角三点 - 设置 - 隐私和安全 - Cookie 和其他站点数据 Edge浏览器: 右上角三点 - 设置 - Cookie 和站点权限 Firefox浏览器: 右上角三横 - 设置 - 隐私和安全 - Cookie和站点数据 3. 启用.更换代理

  • SpringBoot3.0整合chatGPT的完整步骤

    目录 导读 新建父项目 1.快速新建父项目 2.在pom.xml中引入SpringBoot3.0 3.删除父项目的src文件夹 新建openai-spring-boot-starter模块 1.新增模块 2.在模块中引入相关依赖 3.定义模块外部属性有那些 4.实现核心业务逻辑 5.配置自动装配 新建openai-starter-test模块 新增模块 导入依赖 创建启动类 配置属性 编写测试类 运行报错 总结 导读 12月总体来说互联网的技术圈是非常热闹的,chatGPT爆火,SpringBo

  • Nginx+SSL搭建 HTTPS 网站

    一.HTTPS 是什么? 根据维基百科的解释: 复制代码 代码如下: 超文本传输安全协议(缩写:HTTPS,英语:Hypertext Transfer Protocol Secure)是超文本传输协议和SSL/TLS的组合,用以提供加密通讯及对网络服务器身份的鉴定.HTTPS连接经常被用于万维网上的交易支付和企业信息系统中敏感信息的传输.HTTPS不应与在RFC 2660中定义的安全超文本传输协议(S-HTTP)相混. HTTPS 目前已经是所有注重隐私和安全的网站的首选,随着技术的不断发展,H

  • 详解基于centos7搭建Nginx网站服务器(包含虚拟web主机的配置)

    一 .Nginx服务基础 Nginx (engine x)专为性能优化而开发,其特点是占有内存少,它的稳定性和低系统资源消耗,以及对并发连接的高处理能力,(单台物理服务器可支持5000个并发请求).事实上nginx的并发能力确实在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:百度.京东.新浪.网易.腾讯.淘宝等.同时也提供了IMAP/POP3/SMTP服务. Nginx的优点: *** 可以高并发连接** 官方测试Nginx能够支撑5万并发连接,实际生产环境中可以支撑2~4万并

  • ChatGPT Notion AI 从注册到体验及免费使用过程

    目录 1. Notion AI 介绍 1.1 Notion AI 简介 1.2 Notion AI 的核心能力 1.3 Notion AI 与 ChatGPT 的比较 2. Notion AI 国内用户注册 2.1 PC 端用户注册 2.2 移动端用户注册 3. Notion AI 快速体验 3.1 Notion AI 的基本功能 3.2 体验 Notion AI 写作 3.3 写作中调用 AI 的方法 4. AI 面板的功能与使用 4.1 AI 面板的功能 4.2 AI 面板选项 4.3 内容

  • win2008 R2搭建php网站环境分析

    Windows 2008 R2下IIS7.5+PHP+Mysql+Zend+Fastcgi+Xcache+phpmyadminp+帝国备份完全配置简明版教程 前言 其实windows Server 2008和windows Server 2008 R2自带有环境搭配软件(通过这个软件可以选择自己需要搭配的环境,比如PHP网站环境), 鉴于目前php5.3.1还不能完美的支持主流php系统,不建议大家使用. windows2008 Server R2下面环境搭建分三种情况,大家可以根据自己的运行需

  • win2003 配置DNS、NAT及搭建IIS网站的方法

    一.实验介绍 公司内部架设了一台DNS服务器,现在公司内部的员工想要访问公网上的网站, 必须通过公司内部的DNS服务器进行解析,请试图搭出一个这样的环境. 二.实验的网络拓扑图 注:以上所有虚拟机的操作系统均为WINDOWS Server 2003 R2 注:以上所有虚拟机的操作系统均为WINDOWS Server 2003 R2 三.实验的具体要求        ◆ 使用VMware或者Hyper-V搭建好如上图的实验环境.         ◆ 客户端能够正常访问公网上的ibm.com.   

  • 基于Linux搭建Apache网站服务配置详解

    Apache作为一款开源软件,是广泛应用的web应用之一,Apache有两个主要版本1.X和2.X,一般我们使用2.X版本,比起1.X版本它支持很多新的功能,下载Apache源码包的地址为:https://httpd.apache.org ,下载到源码包后开始准备安装: 1.为避免发生端口冲突,程序冲突等问题,如果有rpm方式安装的httpd服务,建议将其卸载. 2.挂载系统镜像,切换至系统盘中的Packages目录,安装相关依赖包(注意,最好一个一个的依次安装,因为如果有些安装包已经安装了,一

  • CentOS6使用nginx搭建web网站服务的方法

    利用CentOS6搭建简易的web服务 提示: 其中没有涉及到MySQl.MongoDB的安装和使用,包括docker容器等,使用nginx反向代理静态服务 centOS服务器 可以选用国外或者国内的服务器,这里只展示centOS系统配置,本人实在window系统下完成下列操作 选购一台合适的云服务器,系统为centOS 在window系统下安装xshell和xftp, 保证可以系统访问centOS系统 使用xshell连接上云服务器,使用超级管理员root登录 登录完成之后安装nginx 下面

  • Python+ChatGPT制作一个AI实用百宝箱

    目录 注册OpenAI 搭建网站及其框架 AI聊天机器人 AI绘画机器人 ChatGPT最近在互联网掀起了一阵热潮,其高度智能化的功能能够给我们现实生活带来诸多的便利,可以帮助你写文章.写报告.写周报.做表格.做策划甚至还会写代码.只要与文字相关的工作,它几乎都能给出一份满意的答卷. 小编趁着有空上去玩了一下,也发现了其中的强大 那么本篇文章小编就通过streamlit框架来搭建一个AI百宝箱的网页,其中里面集成了一系列功能包括智能聊天机器儿.智能绘画师,大家有兴趣还可以另外添加例如配音等功能,

  • 流量触顶时代下如何看待 AI 和 ChatGPT

    目录 引言 1.ChatGPT 2.谁将被 AI 取代? 3.AI 即未来 4.参与 AI 总结 引言 当下互联网和移动互联网的流量已经触顶,虽然偶尔还会出现一些爆款的产品,但是流量总量摆在那里,各个产品之间流量只是此消彼长而已.就互联网技术而言,现在大厂们出的互联网技术,基本是那种花很大力气但是收效并不大.在这种情况下,ChatGPT 或者 AI 会是下一个引爆点吗? 1.ChatGPT 首先,让我们来了解下 ChatGPT. ChatGPT 刚出来那会儿我就用了几次.当时我还调侃了一下, 客

随机推荐