三分钟搭建一个自己的 ChatGPT (从开发到上线)

原文链接:https://icloudnative.io/posts/build-chatgpt-web-using-laf/

视频教程:https://www.bilibili.com/video/BV1cx4y1K7B2/

OpenAI 已经公布了 ChatGPT 正式版 API,背后的新模型是 gpt-3.5-turbo,这是 OpenAI 目前最先进的模型,响应速度更快,价格更便宜。

作为开发人员,我们还是希望通过 API 将 ChatGPT 和相关模型集成到自己的产品和应用中,尴尬的是,目前无法访问 ChatGPT API,原因大家都懂得。于是网上出现了各种各样的 API 反代服务,我们可以直接通过反代服务来变相访问 ChatGPT API。

即使我们解决了 API 的访问问题,还要准备一个开发环境,比如对于 Node.js 客户端来说,需要准备一个 Node.js 环境。

有没有一种简单快捷的方法来调用 ChatGPT API 呢?

那当然是用 Laf 了。

Laf 是一个完全开源的一站式云开发平台,提供了开箱即用的云函数,云数据库,对象存储等能力,让你可以像写博客一样写代码。

GitHub:https://github.com/labring/laf

如果你希望快速了解 Laf 的用法,可以参考这篇文章:三分钟学会 Laf

言归正传,下面我们开始计时,三分钟时间用 Laf 实现一个自己的 ChatGPT!

前提条件:你需要准备一个 ChatGPT 账号并且生成一个 API Key (这一步可以问 Google )

云函数教学

首先需要登录 laf.dev,然后新建一个应用。

三分钟搭建一个自己的 ChatGPT (从开发到上线)

点击开发按钮进入开发页面。

三分钟搭建一个自己的 ChatGPT (从开发到上线)

在 NPM 依赖面板中点击右上角的 +

三分钟搭建一个自己的 ChatGPT (从开发到上线)

然后输入 chatgpt 并回车进行搜索,选择第一个搜索结果,保存并重启:

三分钟搭建一个自己的 ChatGPT (从开发到上线)

重启之后,自定义依赖项中便出现了 chatgpt。

三分钟搭建一个自己的 ChatGPT (从开发到上线)

然后就可以像我一样新建一个云函数名字叫 send,并写入以下内容:

import cloud from '@lafjs/cloud'
export async function main(ctx: FunctionContext) {
  const { ChatGPTAPI } = await import('chatgpt')
  const api = new ChatGPTAPI({ apiKey: cloud.env.CHAT_GPT_API_KEY })

  let res = await api.sendMessage('“鸡你太美”指的是中国大陆哪位男艺人?给你个提示,他喜欢唱、跳、篮球、Rap')
  console.log(res.text)

  return res.text
}

三分钟搭建一个自己的 ChatGPT (从开发到上线)

API Key 是通过环境变量 CHAT_GPT_API_KEY 传入的,所以我们还需要创建一个环境变量。点击左下角的设置图标:

三分钟搭建一个自己的 ChatGPT (从开发到上线)

依次选择「环境变量」--> 「新增环境变量」,输入环境变量的名称和值,然后点击「确定」,再点击「更新」,便会重启应用。

三分钟搭建一个自己的 ChatGPT (从开发到上线)

现在点击右上角的「运行」,即可调试运行。

三分钟搭建一个自己的 ChatGPT (从开发到上线)

Perfect!现在我们来试试添加追踪上下文的功能。其实也很简单,只需要在对话时传入上一次对话的 ID 即可,代码如下:

import cloud from '@lafjs/cloud'
export async function main(ctx: FunctionContext) {
  const { ChatGPTAPI } = await import('chatgpt')
  const api = new ChatGPTAPI({ apiKey: cloud.env.CHAT_GPT_API_KEY })

  let res = await api.sendMessage('“鸡你太美”指的是中国大陆哪位男艺人?给你个提示,他喜欢唱、跳、篮球、Rap')
  console.log(res.text)

  // 传入 parentMessageId 追踪上下文
  res = await api.sendMessage('不对,他姓蔡,请重新回答', {
    parentMessageId: res.id
  })
  console.log(res.text)

  return res.text
}

运行一下看看:

三分钟搭建一个自己的 ChatGPT (从开发到上线)

好厉害,竟然两次就答对了我的问题!

好了,现在才开始真的计时,因为刚刚是教学环节,不计入耗时?

云函数

接下来我们就可以开始动手打造自己的 ChatGPT 了,首先把上一节的函数替换为下面的内容:

import cloud from '@lafjs/cloud'

export async function main(ctx: FunctionContext) {
  const { ChatGPTAPI } = await import('chatgpt')
  const data = ctx.body

  // 这里需要把 api 对象放入 cloud.shared 不然无法追踪上下文
  let api = cloud.shared.get('api')
  if (!api) {
    api = new ChatGPTAPI({ apiKey: cloud.env.CHAT_GPT_API_KEY })
    cloud.shared.set('api', api)
  }

  let res
  // 这里前端如果传过来 parentMessageId 则代表需要追踪上下文
  if (!data.parentMessageId) {
    res = await api.sendMessage(data.message)
  } else {
    res = await api.sendMessage(data.message, { parentMessageId: data.parentMessageId })
  }
  return res
}

现在应该很好理解这个函数了吧?

前端

我们要实现的是 Web 版 ChatGPT,所以还需要一个前端页面。首先需要安装 Laf 的 SDK:

$ npm install laf-client-sdk

接下来,需要创建一个 cloud 对象:

import { Cloud } from "laf-client-sdk"; 

// 创建 cloud 对象 这里需要将 <appid> 替换成自己的 App ID
const cloud = new Cloud({
  baseUrl: "https://<appid>.laf.dev",
  getAccessToken: () => "", // 这里不需要授权,先填空
});

这里我们看一下前端的核心代码,非常的简单,就是把提问的内容和上下文 id 传入云函数就可以了。

async function send() {

// 我们提问的内容
const message = question.value;

let res;
// 与云函数逻辑一样,有上下文 id 就传入
if (!parentMessageId.value) {
  res = await cloud.invoke("send", { message });
} else {
  res = await cloud.invoke("send", { message, parentMessageId: parentMessageId.value });
}

// 回复我们的内容在 res.text 

// 这个是上下文 id
parentMessageId.value = res.id;
}

到这一步 我们已经可以发信息给 ChatGPT 并且拿到回复的消息了。

我们只要稍微加亿点点细节,就可以变成这样:

三分钟搭建一个自己的 ChatGPT (从开发到上线)

加完这点细节之后,基本开发工作就完成了,接下来就是把项目上线分享给你的朋友,顺便装个杯。

说到上线我们现在应该要去买一台服务器安装 Nginx,配置 Nginx,解析域名,绑定域名...

NO NO NO 我不允许你浪费年轻而美好的生命,life is short, you need laf ?

上线

打开你的 Laf,点击存储界面 --> 点击上方加号 --> 创建一个权限为 readonly 的存储桶(名字随意)。

三分钟搭建一个自己的 ChatGPT (从开发到上线)

创建完之后,在你的前端项目中运行打包命令。我这里用的是 npm run build

打包完毕之后找到打包好的 dist 文件夹,像我一样把 dist 文件里面的所有东西都上传到我们刚刚创建的存储桶里面,记住是原封不动的上传哦,文件就是文件,文件夹就是文件夹。

三分钟搭建一个自己的 ChatGPT (从开发到上线)

上传完毕之后,发现右上角有一个 “开启网站托管”,点一下它!

三分钟搭建一个自己的 ChatGPT (从开发到上线)

点完之后出来一个链接,我们点击一下访问看看是啥东西。

三分钟搭建一个自己的 ChatGPT (从开发到上线)

哦!我的老天鹅呀 这不就是我刚刚开发的项目吗??

三分钟搭建一个自己的 ChatGPT (从开发到上线)

恭喜,到这里你的项目已经上线了,快分享给你的好朋友吧!


原文链接:https://www.cnblogs.com/ryanyangcs/p/17210580.html

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:三分钟搭建一个自己的 ChatGPT (从开发到上线) - Python技术站

(0)
上一篇 2023年4月18日
下一篇 2023年4月18日

相关文章

  • 区块链数字资产是什么意思?区块链数字资产属性分析

    区块链数字资产是什么意思? 区块链数字资产是指使用区块链技术进行发行、交易和管理的数字资产。它们可以是数字货币、代币、证券等,具有可编程性、去中心化、不可篡改等特点。以下是区块链数字资产的属性分析。 1. 可编程性 区块链数字资产可以使用智能合约进行编程,实现自动化的交易和管理。例如,可以使用智能合约实现代币的发行、分配、销毁等操作,也可以使用智能合约实现数…

    云计算 2023年5月16日
    00
  • SpringBoot集成ElasticSearch的示例代码

    SpringBoot集成ElasticSearch的完整攻略 ElasticSearch是一个基于Lucene的搜索引擎,可以快速地存储、搜索和分析大量数据。SpringBoot是一个快速开发框架,可以帮助开发者快速地构建Web应用。本文将介绍如何在SpringBoot中集成ElasticSearch,并提供两个示例说明。 步骤一:添加依赖 在pom.xml…

    云计算 2023年5月16日
    00
  • KubeSphere Cloud 月刊|灾备支持 K8s 1.22+,轻量集群支持安装灾备和巡检组件

    功能升级 备份容灾服务支持 K8s v1.22+ 版本集群 随着 Kubernetes 近一年频繁的发版、升级,越来越多的用户开始部署并使用高版本的 Kubernetes 集群。备份容灾服务支持 Kubernetes v1.22+ 版本的集群后,能够尽可能地覆盖用户新版本集群上的容器化应用,为核心的业务数据保驾护航。 备份容灾组件支持灵活启停与卸载 新增备份…

    云计算 2023年4月17日
    00
  • openstack云计算组件glance部署及操作步骤

    请允许我详细讲解“OpenStack云计算组件Glance部署及操作步骤”的完整攻略。 1. 简介 Glance是OpenStack中用于管理虚拟机镜像的组件。它提供了一个REST API, 使用户可以通过它来上传、下载和查看镜像文件。Glance支持多种类型的虚拟机镜像格式(如RAW、qcow2、iso等),并能够将它们转换成底层存储系统所需的格式。 2.…

    云计算 2023年5月17日
    00
  • 元芳,云主机选择,你怎么看?

    元芳,云主机选择,你怎么看? 为什么需要云主机? 云计算技术的出现,让用户可以通过网络连接远程使用硬件、软件和数据存储等计算资源。其中云主机,是一种无需购买实体硬件的云计算服务产品。相比于自行购买、维护和运维物理服务器,云主机的灵活性、成本和可扩展性都更加优异。因此,许多企业和个人在建立网站、构建应用程序以及存储数据时,越来越多地选择使用云主机。 云主机选择…

    云计算 2023年5月17日
    00
  • ASP.NET开源导入导出库Magicodes.IE完成Csv导入导出的方法

    一、引言 ASP.NET是一种基于Web的应用程序框架,旨在开发动态网站。而Magicodes.IE则是一种用于操作Excel、Csv和Html的开源库,使用简单方便,实现了导入、导出、数据验证等功能。本文将对使用Magicodes.IE完成Csv导入导出的完整攻略进行详细讲解。 二、安装 在软件安装时,通过NuGet安装Magicodes.IE库并引用到项…

    云计算 2023年5月17日
    00
  • 云为信息化节成本4成 第8届云计算大会发布

    我国云市场己近1500亿元,其中公有云占47%,私有云达26%,为大众创业万众创新提供了双创基础平台,为企业信息化节约了四成成本。这是昨天上午开幕的第八届云计算大会上,信息化工业部软件服务司谢少峰司長在主题报告中发布的。 由中国电子学会主办,ZD至顶网协办的第八届中国云计算大会为期三天,怀进鹏部長到会并首先致辞之后在谢少峰司長做主题报告,他全面总结了当前中国…

    云计算 2023年4月12日
    00
  • 微软云计算组件“Huron” –最新动态及应用截图

    微软同步框架团体(Microsoft Sync Framework)公布了“Huron”项目的最新开发进展。Huron是一个目前正处于筹划开发初期的项目,整个开发时间并不太长。 Huron是什么? 一句话定义:Huron能让你的本地数据(库)与Cloud数据中心实现数据同步。 简单来说,Huron通过一个位于Azure 数据中心(Azure Data Cen…

    云计算 2023年4月11日
    00
合作推广
合作推广
分享本页
返回顶部