ChatGPT搭建AI网站实战

2023-05-16

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,
  };
};

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

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 id="chat-container">
        <h1>MOVIE to emoji</h1>
      </a>
      <ChatHistoryFrame chatHistory={chatHistory} isLoading={isLoading} />
      <div id="chat-input">
        <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>
  );
};

4.3 ChatGPT核心模块
编写一个调用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;

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

"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"
  }

4.5 编写Prompt
在完成核心模块的后台逻辑编写后,可以访问Prompt后台,通过编写Prompt来获取ID,操作如下:
在这里插入图片描述

4.6 部署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)

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

在这里插入图片描述

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

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ChatGPT搭建AI网站实战 的相关文章

  • DHT11 温湿度传感器

    文章目录 产品概述 产品概述 DHT11数字温湿度传感器是一款含有已校准数字信号输出的温湿度复合传感器 xff0c 应用领域 xff1a 暖通空调 xff1b 汽车 xff1b 消费品 xff1b 气象站 xff1b 湿度调节器 xff1b
  • C++ 常见问题集合大汇总

    1 什么是多态 xff0c C 43 43 的多态如何实现 多态就是同一函数名的不同形态 xff0c 提供具有不同行为的接口 xff0c C 43 43 的多态又分为静态多态和动态多态 静态多态 xff08 编译时多态 xff09 通过重载
  • vue使用Antd,FormModel,赋值没有重新验证

    Antd xff0c FormModel xff0c 赋值没有重新验证 vue使用Antd xff0c FormModel xff0c 赋值没有重新验证 vue使用Antd xff0c FormModel xff0c 赋值没有重新验证 习惯
  • 【无标题】

    ZED2标定 一 ZED2相机标定1 首先是安装camera calibration xff0c 直接运行安装命令即可2 运行ZED2相机 xff08 会发布zed2话题 xff09 3 运行 camera calibration4 标定
  • 直播相关讲解 -- 分辨率的解释

    1 分辨率的含义 目前手机普遍一种分辨率为1920 1080 xff0c 即1920像素 1080像素 其中1920 1080的像素 61 2073600 xff0c 即分辨率为2073600 xff0c 即大约200万像素 因为水平方向含
  • C++ 动态内存分配和智能指针 share_ptr/unique_ptr

    目录 1 动态对象以及new delete 2 智能指针 1 动态对象以及new delete C 43 43 除了在代码编译时创建的自动 xff08 auto xff09 和静态 xff08 static xff09 对象外 xff0c
  • C51单片机的LCD1602屏幕显示字符串

    目录 1 器件介绍 1 LCD1602简介 2 引脚及应用电路 3 内部结构单元 2 驱动代码 1 写操作时序 2 显示屏初始化函数 3 DDRAM地址映射 1 器件介绍 1 LCD1602简介 LCD1602液晶显示屏是一种字符型液晶显示
  • NetworkX_使用

    import networkx as nx 用于构建和操作复杂的图结构 xff0c 提供分析图的算法 G 61 nx Graph 构建无向图 点的操作 G add node 1 name 61 A weight 61 1 添加节点时除了可以
  • Python 杂录

    Python index and python find Python index 方法检测字符串中是否包含子字符串 str xff0c 如果指定 beg xff08 开始 xff09 和 end xff08 结束 xff09 范围 xff
  • SDN框架漏洞

    1 数据平面 数据平面交换机 数据平面由启用了OpenFlow的交换机组成 xff0c 使其容易受到流表修改 拓扑欺骗和DDoS攻击等几种安全威胁 在流表修改攻击中 xff0c 恶意节点插入或修改流表规则 xff0c 以嗅探网络中正在发生的
  • SDN 中 DDoS 攻击问题(论文方法总结)

    SDN 中 DDoS 攻击类型 1 数据平面DDoS攻击 数据平面由多个启用OpenFlow的转发设备组成 这些设备被称为OpenFlow交换机 每个交换机都有一个有限的流表大小来存储规则和有限的处理能力来处理不匹配的数据包 xff0c 因
  • k8s集群异常排查思路

    要解决和了解节点状态为何会发生异常需要先了解k8s体系组件的基本知识与原理 在k8s容器集群运行过程 xff0c 时长遇到节点运行状态异常的问题和因为组件异常 系统内核死锁 资源不足等原因引起节点状态不可知 该问题可能的原因有 xff1a
  • 死锁的产生原因以及解决方案

    目录 1 什么是死锁 2 死锁的代码展示 3 死锁产生的原因 4 如何解决死锁问题 1 什么是死锁 死锁就是两个或两个以上线程在执行过程中 xff0c 由于竞争资源或者由于彼此通信而造成的一种阻塞的现象 xff0c 若无外力作用 xff0c
  • 树莓派内网穿透

    树莓派内网穿透 提前声明 此穿透方式全部免费 此方法树莓派均可用 我所用的是树莓派zero w 架构是armv6 xff0c 所以很多armv7架构的应用无法适配 内网穿透 xff0c 意思就是将内网 xff08 本地 xff09 的web
  • 卡尔曼滤波在平衡小车中的使用和参数选择

    在自平衡小车读取IMU的陀螺仪数据过程中 xff0c 零漂移严重影响计算小车俯仰角的准确性 xff0c 因此引入卡尔曼滤波来处理陀螺仪读数 在这里介绍卡尔曼滤波的使用 xff0c 卡尔曼滤波一共有5个公式 其中2个用于预测状态 xff0c
  • 这几本游戏开发书籍推荐给为未来的游戏工程师

    想当年 xff0c 我也是一名想做游戏开发的程序员 xff0c 大学的时候照葫芦画瓢做了一个半成品的 炉石传说 一度让我以为我将来会成为一名游戏开发工程师 xff0c 可惜后来我被C 43 43 的学习成本给全退了 xff0c 于是乎和游戏
  • C++ 无序关联容器 unordered_map 以及 unordered_set

    目录 1 无序容器原理 2 无序容器操作 1 无序容器原理 之前说过的map 与 set在存储上都是有序的 xff0c 即是按照关键字的值排序的 xff1a 如果键的类型是数字 xff0c 则按照数字大小进行排序 xff0c 如果是 str
  • 1、hamibot打开应用软件

    启动App的多种方法 app launchApp appName app launch packageName app launchPackage packageName app launchApp appName appName stri
  • 内网穿透工具FRP配置文件详解

    目录 frp介绍配置说明服务器端配置frps内网机器端配置frpc frp介绍 首先给出信息源 xff1a frp内网穿透工具GITHUB链接 What is frp frp is a fast reverse proxy to help
  • pandas库基本使用方法

    Pandas是Python中一个非常流行的数据处理库 xff0c 它提供了一些强大的数据结构和数据分析工具 xff0c 可以帮助我们更方便 快捷地处理数据 下面我们来介绍一下Pandas的使用方法 1 导入Pandas库 在使用Pandas

随机推荐

  • IDEA配置Android-SDK

    1 目的 xff1a 利用Intellij IDEA进行Android开发 2 配置准备 xff1a 下载好Intellij IDEA 以及java jdk 环境变量部署 xff01 xff01 3 配置步骤 xff1a 1 xff09 x
  • socket网络编程(TCP UDP)demo

    一 socket 在Linux中的网络编程是通过socket接口来进行的 人们常说的socket接口是一种特殊的I O xff0c 它也是一种文件描述符 每一个socket都用一个半相关描述 协议 xff0c 本地地址 本地端口 来表示 x
  • Lodash的compact

    1 lodash的compact作用 xff1a 将原数组的falsey元素全部移除 xff0c 生成一个新数组 2 false xff0c null 0 xff0c xff0c undefined xff0c nan都是falsey 3
  • 无人驾驶-控制-LQR(运动学)

    无人驾驶 控制 LQR xff08 运动学 xff09 一 车辆建模 二 参考轨迹 利用泰勒展开 xff0c 进行线性化 xff1a 离散化处理 对离散后的式子进行处理 xff0c 得到X k 43 1 的表达式 综上 xff1a 由于系统
  • JavaScript 其他的进制的数字

    目录 其他的进制的数字将其他的数字类型转换为Boolean值运算符算术运算符 其他的进制的数字 在JS中 xff0c 1 如果需要表示16进制的数字 xff0c 则需要以0x开头 2 如果需要表示8进制的数字 xff0c 则需要以0开头 3
  • 自制STLink

    前段时间 xff0c 由于芯片大涨价 xff0c 手上又没有STLink xff0c 只有STM32F103c8t6的芯片 xff0c 在网上借鉴了很多大佬的DIY xff0c 就自己动手画了一个 xff0c 好像有两个版本 xff0c 好
  • 电力电子技术笔记-逆变电路

    逆变的概念 逆变 与整流相对应 xff0c 直流电变成交流电 交流侧接电网 xff0c 为有源逆变 交流侧接负载 xff0c 为无源逆变 逆变与变频 变频电路 xff1a 分为交 交变频和交 直 交变频两种 交 直 交变频由交 直变换 xf
  • C++ 中cin的输入原理及字符串(string、char[])输入问题

    目录 一 cin 是 C 43 43 封装的一个类对象 二 对字符数组的输入方法 xff08 char str N xff09 xff1a 1 cin 使用空白字符作为一次输入的结尾 xff0c 并忽略该空字符 2 使用 getline g
  • 图像分割常见性能指标的计算方法(python)

    分割常见性能指标的计算方法 xff08 python xff09 混淆矩阵 对于很多指标的计算 xff0c 第一步就是计算混淆矩阵 混淆矩阵实际上就是总结分类结果的矩阵 对于k元分类 xff0c 其实它就是一个k k的表格 xff0c 用来
  • 手把手教你怎么搭建自己的ChatGPT(含源码)

    这篇文章教你怎么不懂技术也可以搭建自己的chatGPT xff0c 内容都是一个字一个字的手打的 xff0c 可能要错别字 xff0c 需要技术支持私信老王 提供本文你可以学到 xff1a 1 如何挑选 购买自己的服务器 2 如何注册自己的
  • 一个体验超级好的chatgpt国产镜像

    镜像网址 xff1a https chatgpt 6om net 1 xff0c 首页的ui xff0c 基本与chatgpt官方一致 2 xff0c 聊天窗 xff0c 反馈很好 3 xff0c 写代码 xff0c 体验也很棒哟
  • ChatGPT国内初次体验:聊天、Python代码生成等

    ChatGPT国内镜像站初体验 xff0c 聊天 Python代码生成 ChatGPT官网 xff1a https ai com ChatGPT 最近ChatGPT传得沸沸扬扬 xff0c 红得发紫 由于主站在国外 xff0c 我没有资源和
  • 马云回国,首谈ChatGPT

    马云今天回国了 xff0c 这是一个备受关注的消息 作为中国最具代表性的企业家之一 xff0c 马云在过去的二十多年里 xff0c 带领阿里巴巴从一个小小的创业公司 xff0c 发展成为全球最大的电商平台之一 xff0c 同时也推动了中国互
  • 下一代的新操作系统就是ChatGPT!

    什么是CHatgpt xff1f ChatGPT是人工智能研究实验室OpenAI在2022年11月30日推出的聊天机器人模型 xff0c 它使用Transformer神经网络架构 xff0c 训练数据来自包括维基百科 xff0c 以及真实对
  • ChatGPT云桌面:无需科技挂载,即点即用

    ChatGPT是一个由OpenAI开发的人工智能对话语言模型 它被设计为对话式人工智能代理 xff0c 用于客户服务 个人助理和文娱等任务 它可以理解并生成多种语言的文本 xff0c 包括中文 英语 西班牙语 德语等 但从某些地方访问Cha
  • 不写代码、靠“玩” ChatGPT 年入百万,提示工程师正变成硅谷新宠

    以下文章转发自来源于硅星人 xff0c 作者章姝敏 随着 ChatGPT 等 AI 工具的风靡 xff0c 越来越多人将其作为日常生活和工作的助手 为了能更好地与它对话 xff0c 一个新兴职业 提示工程师应运而生 用自然语言对话 xff0
  • 有个周入百万的项目:教人用ChatGPT。

    第一批靠 ChatGPT 赚大钱的人 xff0c 既不是研发人员 xff0c 也不是国内大厂 xff0c 又是这群卖课的 xff1f 不知道大家有没有刷到过下面这张图 xff0c 有人统计了知识星球上 xff0c 这段时间跟 GPT 相关课
  • 用ChatGPT搭建公司内部ChatGPT服务器

    一 前言 我是ChatGPT xff0c 一个由OpenAI训练的大型语言模型 我被设计用于回答各种问题并生成文本 xff0c 可以处理多种自然语言任务 xff0c 例如问答 摘要和翻译等 在我的学习过程中 xff0c 我阅读了数百万篇文本
  • 通过串口波特率计算数据传输速率(每秒字节数)

    这个是个古老的问题 上次用串口还是本科时候 xff0c 最近面试被问到了这个问题竟然整蒙了 xff0c 大致是 xff1a 面试老师问 xff1a 9600的波特率每秒可以传输多少个字节 xff1f 我 xff1a e 直接除以8 emmm
  • ChatGPT搭建AI网站实战

    1 概述 ChatGPT是一款基于GPT 3 5架构的大型语言模型 xff0c 它能够进行自然语言处理和生成对话等任务 作为一款智能化的聊天机器人 xff0c ChatGPT有着广泛的应用场景 xff0c 如在线客服 智能助手 个性化推荐等