三分钟 ChatGPT 接入钉钉机器人

sxkk20081年前知识分享127

highlight: monokai-sublime theme: vuepress


前言

ChatGPT 大家应该都已经用了一段时间了,功能非常强大,作为开发人员,我用它写文档、写日报、润色 OKR,知识搜索等等,它给我带来了极大的帮助,但我在使用过程中最大的痛点就是网络。

痛点

由于国内不能访问的原因,我们必须使用代理,而且必须选择日本或美国较远的节点,香港跟台湾是不能访问的,而在工作的时候,需要访问内网,因此我每天要在切换代理这件事上花不少时间。

现在我们可以在钉钉中直接对接 ChatGPT,再也不必为了切换网络而烦恼了。

原理

首先来说一下原理:

https://chat.openai.com/ 这个网站必须是国外节点才可以访问,而我们使用官方的 api,就可以使用香港节点访问。

比如我们使用以下代码,这样就可以在 Nodejs 中调用 ChatGPT API 了。

const payload: OpenAIStreamPayload = {
  model: 'gpt-3.5-turbo',
  messages: [{ role: 'user', content: prompt }],
  temperature: 0.7,
  top_p: 1,
  frequency_penalty: 0,
  presence_penalty: 0,
  max_tokens: 800,
  n: 1,
}

const res = await fetch('https://api.openai.com/v1/chat/completions', {
  headers: {
    'Content-Type': 'application/json',
    Authorization: `Bearer ${process.env.OPENAI_API_KEY ?? ''}`,
  },
  method: 'POST',
  body: JSON.stringify(payload),
})

上述代码中 OPENAI_API_KEY 需要登录自己账号,自己创建一个。

复制 OPENAI API_KEY

接下来我们需要准备一个可以直接访问 OpenAi API 的 Node.js 环境。

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

那当然是用 Laf 了。

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

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

最重要的是云服务可用区在香港,那么我们就可以搭建一个自己的 ChatGPT 了。

实现步骤

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

创建应用

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

进入开发

在 NPM 依赖面板中点击右上角的  +,安装 npm 包 chatgpt,保存并重启:

安装npm依赖

新建一个云函数,选 post,函数名称随便取

新建云函数

然后再入以下代码

import cloud from '@lafjs/cloud'
import axios from 'axios'
import { ChatGPTAPI } from 'chatgpt'

const dingtalk_robot_url =
  'https://oapi.dingtalk.com/robot/send?access_token=a5abc0f85c385aabd92f8bd8634b8bc543e7193ae70b688'

const sendDingDing = async (md) => {
  const sendMessage = {
    msgtype: 'markdown',
    markdown: {
      title: '掘金消息',
      text: md,
    },
  }
  return await axios.post(dingtalk_robot_url, sendMessage)
}

export async function main(ctx: FunctionContext) {
  // body, query 为请求参数, auth 是授权对象
  const { auth, body, query } = ctx
  const prompt = body.text.content
  const api = new ChatGPTAPI({ apiKey: cloud.env.OPENAI_API_KEY })

  let res = await api.sendMessage(prompt)
  console.log(res.text)

  sendDingDing(res.text)

  return
}

上面代码中,还有 2 步方需要修改下:

第一个是设置环境变量 OPENAI_API_KEY

设置环境变量

第二个是修改 dingtalk_robot_url, 这个钉钉机器人的回调地址。

钉钉机器人对接

新建一个只有你自己的个人群

钉钉群助手

点击群助手创建一个自定义的 webhook

添加机器人

安全设置选择自定义关键词,输入掘金消息 创建机器人

复制 webhook 地址,这个就是 dingtalk_robot_url, 更新到云函数中,保存并发布。

复制云函数url

点击复制云函数 url,我们设置到钉钉机器人中

设置钉钉机器人

填入你的云函数地址,这样我们就可以在钉钉中 @机器人,它每次会将消息内容推送给原函数,云函数处理消息后,将消息推送给钉钉。

接下来我们就可以在钉钉中愉快地和 ChatGPT 对话了。

对话演示

当然消息也会同步在手机中,我们也可以使用手机和机器人对话。

小结

缺点是这个机器人还不支持连续对话,因为钉钉机器人不支持消息 id 的记录,其实 ChatGPT 是支持理解上下文的。 只需要在 ChatGPTAPI 中传入 parentMessageId 就可以了。

res = await api.sendMessage('What were we talking about?', {
  parentMessageId: res.id,
})

如果这个群聊只有一个人使用的话,我们可以将 parentMessageId 存入云数据库中,或云函数的共享中。

cloud.shared.set('parentMessageId', 'id')
cloud.shared.get('parentMessageId')

这样就可以实现连续对话了。

好了,以上就是本文全部内容,如果对你有帮助,随手点个赞吧

参考 《 三分钟拥有自己的 ChatGPT (从开发到上线)》

相关文章

如何使用 Tailwind CSS 写官网?

前言在上一期视频中,我介绍了 Tailwindcss 的优点,很多小伙伴也在评论中谈论了自己的看法。 今天这期视频我们就来实战一下,如何使用 Tailwindcss 写官网?那么一起来看看吧tailb...

人工智能培训:揭秘未来科技的智慧之路

人工智能培训:揭秘未来科技的智慧之路

  随着科技的飞速发展,人工智能已经成为改变世界的关键驱动力之一。无论是在工业生产、医疗保健、金融服务还是交通领域,人工智能的应用都取得了巨大的突破。为了满足这一需求,越来越...

AI电话机器人—未来通讯市场新宠

AI电话机器人—未来通讯市场新宠

  随着人工智能技术的发展,AI电话机器人的出现引起了业界的广泛关注。作为一种具有自主学习和不断进化能力的通讯工具,它能够为企业和个人提供更加高效和便捷的通信方案,为未来的通...

至此我们的编辑器已经完成。当然产品细节决定产品质量,码上掘金中的例子,还需要继续打磨优化样式,加入更多功能,才可以开发出一款比较完善的产品。

云函数开发接口

为了让数据保存到云端,我选择使用云函数来开发接口,使用云数据库来保存数据。至于为什么?主要是因为便宜。

目前腾讯云开发 19.9 一月,我这里选择使用

Next.js 全栈开发微信公众号 Markdown 排版编辑器

文章为稀土掘金技术社区首发签约文章,14 天内禁止转载,14 天后未获授权禁止转载,侵权必究!阅读本文,你将收获:学会使用 Monaco Editor 开发多文件编辑器学会使用 mdx 在线编译了解了...

AI换脸技术-美妆、娱乐、安全“三位一体”

AI换脸技术-美妆、娱乐、安全“三位一体”

  首先,AI换脸技术在美妆领域有着广泛的应用。AI换脸通过算法对人脸进行处理,使人们可以在不进行实际妆容涂抹的情况下,直接看到自己化妆后的效果。无论是移动端的美妆app,还...

华为人工智能标准:构建智能世界的引领者

华为人工智能标准:构建智能世界的引领者

  人工智能技术在当今世界中扮演着越来越重要的角色,其广泛应用将推动人类社会向更加智能化的方向发展。华为作为全球领先的信息与通信技术供应商,一直致力于推动人工智能的发展,并以...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。