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

原文链接:https://icloudnative.io/posts/build-chatgpt-web-using-laf/
视频教程:https://www.bilibili.com/video/BV1cx4y1K7B2/

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

云函数教学

首先需要登录 laf.dev,然后新建一个应用。
在这里插入图片描述
点击开发按钮进入开发页面。

在这里插入图片描述
在 NPM 依赖面板中点击右上角的 +:
在这里插入图片描述
然后输入 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
}

在这里插入图片描述
API Key 是通过环境变量 CHAT_GPT_API_KEY 传入的,所以我们还需要创建一个环境变量。点击左下角的设置图标:在这里插入图片描述
依次选择「环境变量」–> 「新增环境变量」,输入环境变量的名称和值,然后点击「确定」,再点击「更新」,便会重启应用。在这里插入图片描述
现在点击右上角的「运行」,即可调试运行。
在这里插入图片描述
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 了,首先把上一节的函数替换为下面的内容:

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 并且拿到回复的消息了。

我们只要稍微加亿点点细节,就可以变成这样:
在这里插入图片描述

项目源码:https://github.com/zuoFeng59556/chatGPT
示例网站:https://jyf6wk-chat-gpt.site.laf.dev/

  • 1
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
你可以使用Python编写一个ChatGPT,以下是一个简单的示例代码: ```python import openai def chat_with_gpt(prompt): response = openai.Completion.create( engine="text-davinci-003", prompt=prompt, max_tokens=50, temperature=0.7, n=1, stop=None, temperature=0.7 ) return response.choices\[0\].text.strip() # 设置OpenAI API密钥 openai.api_key = "YOUR_API_KEY" # 提示用户输入对话的开头 user_input = input("请输入对话的开头:") # 初始化对话 chat_history = user_input while True: # 用户输入 user_input = input("用户:") chat_history += "\n用户:" + user_input # 使用ChatGPT进行回复 response = chat_with_gpt(chat_history) # 提取回复并打印 chat_history += "\nChatGPT:" + response print("ChatGPT:" + response) ``` 请注意,上述代码使用了OpenAI的API,你需要将`YOUR_API_KEY`替换为你自己的API密钥。此外,你还需要安装`openai`库,可以使用以下命令进行安装: ``` pip install openai ``` 这只是一个简单的示例,你可以根据自己的需求进行修改和扩展。希望对你有所帮助! #### 引用[.reference_title] - *1* *2* *3* [从零开始,三分钟内用Python快速自建一个私有化 ChatGpt 聊天机器人网站](https://blog.csdn.net/Ed7zgeE9X/article/details/129891143)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值