借助 ONLYOFFICE 宏通过 OpenAI 数据填充单元格

AI 技术现已取得重大进展,同时也成为了颇具价值的工具,可帮助我们自动化工作流。在​​之前的帖子​​中,我们提到过可使用 OpenAI 生成文章的 ONLYOFFICE 宏。那么在本文中,我们将为您演示一个可将通过 OpenAI 获取的数据填入电子表格的宏。

使用 OpenAI API

上次我们选择了通过 RapidAPI 平台连接 ​​OpenAI​​ API。这是一种获取请求的快速、简单方式。不过其基础版本每月仅提供 100 次请求。所以这次我们将更进一步:自建 Node.js Express 服务器。其将使用 OpenAI 库来直接将 API 请求提供给适当的语言模型。同时还允许我们在从浏览器中发出获取请求时绕过 CORS 错误。

注意!直接向 OpenAI 发送请求的功能仅在具有 OpenAI 账户并使用个人 API Key 的话就可用。

建立服务器

首先,我们为服务器创建一个新的文件夹并设置新的 Node.js 项目。在终端中执行以下代码即可:

$ npm init -y

然后安装下列依赖:

  • express 包 - 服务器功能基本框架。
  • cors  包 - 提供启用 CORS 所需的中间件。
  • openai 包 - 提供从 Node.js 访问 OpenAI API 的便捷访问权限。
  • dotenv 包 - 从 .env 文件中向 process.env 加载环境变量。

如需安装,请在终端中运行 npm instal

$ npm install express
$ npm install openai
$ npm install dotenv --save
$ npm install cors

之后我们来创建 .env 文件。其将被用于保存 API Key:

OPEN_AI_API_KEY="<YourOpenAIkey"
SECOND_API_KEY="YourAPIkey"

OPEN_AI_API_KEY 参数中包含从 OpenAI 处获取的 API Key,SECOND_API_KEY 参数则是服务器的 API Key。出于安全考虑,我们会将其纳入传入获取请求中。

接下来在 index.js 文件中初始化已安装的包:

const express = require('express');
const cors = require('cors');
const { Configuration, OpenAIApi } = require('openai');
require('dotenv').config();
const app = express();const openai = new OpenAIApi(configuration);
app.use(cors());
app.use(express.json());

对于 OpenAI 的成功请求中必须包括 OpenAI API Key。为此,我们需要从 .env  文件中提取这一 API Key,然后将其存储在 configuration 变量中:

const configuration = new Configuration({
apiKey: process.env.OPEN_AI_API_KEY,
});

然后添加向 OpenAI 发送请求的 post 路径:

app.post('/completion', async (req, res) => {
}

出于安全考虑,我们还会纳入自己的 API Key。第二个 API Key 应被纳入获取请求中。在这一方面,我们的服务器需要检查传入的获取请求并验证所包含的 API Key。为了实现这一特性,我们需要将以下代码添加至路径中:

app.post('/completion', async (req, res) => {
const requestApiKey = req.body.apiKey;if (!requestApiKey) {
res.status(400).send({ error: "Error: API Key is missing." });
return;
}
if (requestApiKey !== process.env.SECOND_API_KEY) {
res.status(401).send({ error: "Error: API Key is incorrect." });
return;
}

如果 API Key 正确,则会向 OpenAI 发送请求:

const completion = await openai.createCompletion({
model: 'text-davinci-003',
prompt: req.body.prompt,
temperature: 0,
max_tokens: 300,
});
res.json(completion.data.choices[0].text);
  • model 参数指定了用于生成文本的语言模型名称。在本案例中是 text-davinci-003——文本生成领域中最先进的模型。
  • prompt 参数声明了要从中生成文本的语言模型文本或上下文信息。我们将从获取请求正文中取得该值。
  • temperature 参数控制着已生成文本的随机性。0 值表示文本将是完全确定的,较高的值将带来变化更多、更令人意外的文本。
  • max-tokens 参数指定了 token 中生成文本的最大长度(即:单词数后子单词数)。

最后我们将服务器设置为监听 3000 端口:

app.listen(3000, () => {
console.log('Server running on port 3000');
});

完整的 index.js 代码如下:

const express = require('express');
const cors = require('cors');
const { Configuration, OpenAIApi } = require('openai');
require('dotenv').config();
const app = express();
const configuration = new Configuration({
apiKey: process.env.OPEN_AI_API_KEY,
});
const openai = new OpenAIApi(configuration);
app.use(cors());
app.use(express.json());
app.post('/completion', async (req, res) => {
const requestApiKey = req.body.apiKey;if (!requestApiKey) {
res.status(400).send({ error: "Error: API Key is missing." });
return;
}
if (requestApiKey !== process.env.SECOND_API_KEY) {
res.status(401).send({ error: "Error: API Key is incorrect." });
return;
}
const completion = await openai.createCompletion({
model: 'text-davinci-003',
prompt: req.body.prompt,
temperature: 0,
max_tokens: 300,
});
res.json(completion.data.choices[0].text);
});
app.listen(3000, () => {
console.log('Server running on port 3000');
});

构建宏

首先,我们向服务器发出获取请求:

fetch('http://<your_server_address>/completion', {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({
prompt: 'List the 10 wealthiest countries in the world.Provide GPT figures',
apiKey: '<YourAPIkey>'
})
})

我们在请求正文中声明了 prompt 与 apiKey 值。注意,这些参数将需要根据您要接收的数据和服务器 API Key 变化。

接下来我们将响应解析为 JSON 数据:

.then(response => response.json())

我会根据换行符将相应文本拆分为字符串数组,同时将其目标设置为活动电子表格:

.then(data => {
var arrAllRows = data.split(/\r?\n|\r/);
var wSheet = Api.GetActiveSheet()

之后我们来使用 split() 函数创建一个嵌套循环,对电子表格的行和列进行遍历。此处会使用 SetValue 方法填充各个单元格并修剪空格:

var i = 0;
var j = 0;
for (var singleRow = 0; singleRow < arrAllRows.length; singleRow++) {
var rowCells = arrAllRows[singleRow].split('-');
for (var rowCell = 0; rowCell < rowCells.length; rowCell++) {
wSheet.GetCells(i,j).SetValue(rowCells[rowCell].trim());
j = j + 1;
}
i = i + 1;
j = 1;
}

完整的宏代码如下:

(function()
{
fetch('http://<your_server_address>/completion', {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({
prompt: 'List the 10 wealthiest countries in the world.Provide GPT figures',
apiKey: 'dfhgsd63456efgdfhjikhfzf435332fdhd'
})
})
.then(response => response.json())
.then(data => {
var arrAllRows = data.split(/\r?\n|\r/);
var wSheet = Api.GetActiveSheet();
var i = 0;
var j = 0;
for (var singleRow = 0; singleRow < arrAllRows.length; singleRow++) {
var rowCells = arrAllRows[singleRow].split('-');
for (var rowCell = 0; rowCell < rowCells.length; rowCell++) {
wSheet.GetCells(i,j).SetValue(rowCells[rowCell].trim());
j = j + 1;
}
i = i + 1;
j = 1;
}
});
})();

下面我们就打开电子表格编辑器并运行宏!

希望这篇博文中简要介绍的概念能够帮助您提高工作流效率。在此也鼓励您去多多尝试我们提供的各类 API 方法,并将其纳入到日常任务中。

如果您有任何疑问,或是有些想法想要分享,欢迎随时留下评论​​​​。我们很乐意聆听您的想法,同时期待着与您开展合作。祝您的探索之旅一帆风顺!

相关链接

​​ONLYOFFICE 电子表格 API​​

​​OpenAI 网站​​

​​OpenAI API 文档页面​​

​​使用 ONLYOFFICE 宏借助 ChatGPT 生成文章​​

​​在 ONLYOFFICE 文档中引入 ChatGPT​​

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/19892.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

chatgpt赋能python:Python中常用内建函数介绍

Python中常用内建函数介绍 Python是一种高级编程语言&#xff0c;具有简单易学、代码可读性高、支持多种编程模式等特点&#xff0c;广泛应用于数据处理、Web开发、人工智能等领域。Python内建函数是Python语言核心库中的一部分&#xff0c;提供了许多实用的方法&#xff0c;可…

chatgpt赋能python:Python建模型指南

Python建模型指南 Python是一种功能强大的编程语言&#xff0c;以其优雅的语法和丰富的库而闻名。而且&#xff0c;Python也是机器学习、人工智能和数据科学领域的首选语言之一。在本文中&#xff0c;我们将学习Python中如何建模型。 什么是建模&#xff1f; 建模是指使用统…

转转前端周刊第七十三期

转转前端周刊 本刊意在将整理业界精华文章给大家&#xff0c;期望大家一起打开视野 如果你有发现一些精华文章想和更多人分享&#xff0c;可以点击我们的公众号名称&#xff0c;将文章链接和你的解读文案发给我们&#xff01;我们会对内容进行筛选和审核&#xff0c;保留你的推…

chatgpt赋能python:Python扫描二维码登记系统:实现高效管理的必备工具

Python扫描二维码登记系统&#xff1a;实现高效管理的必备工具 在当今数字时代&#xff0c;管理工作已经不能只依靠人工操作。越来越多的组织开始借助计算机技术来实现高效管理。Python扫描二维码登记系统是一种新兴的数字化管理方式&#xff0c;为各类组织提供了统一规划、灵…

chatgpt赋能python:Python链接转二维码的SEO介绍

Python链接转二维码的SEO介绍 二维码是一种被广泛使用的技术&#xff0c;它可以转换文本信息为可识别的图形信息&#xff0c;使得信息传递更加便捷。Python是一种流行的编程语言&#xff0c;可以通过几行代码实现将链接转换为二维码的功能。本篇文章将介绍Python链接转二维码的…

chatgpt赋能python:Python大型游戏的SEO优化指南

Python 大型游戏的SEO优化指南 Python作为一门高效、简洁的编程语言&#xff0c;被越来越多的游戏开发者所喜爱。本文将介绍如何通过SEO优化提升Python大型游戏的曝光率和流量&#xff0c;帮助游戏开发者更快地吸引目标玩家&#xff0c;提高互动性和用户体验。 Python大型游戏…

chatgpt赋能python:Python编写二维码的完整指南

Python编写二维码的完整指南 介绍 二维码已经成为商业和消费市场中广泛使用的一种编码和交流方式了。它们可以用于广告、商家促销、门票、商标、展览会场馆等众多方面。Python作为一种常用的编程语言&#xff0c;也提供了多种方法来创建和解码二维码。本文将介绍如何使用Pyth…

精华推荐 |【开发百宝箱之猿如意使用指南】「工欲成其事,必先利其器」一文教你如何通过“猿如意” 优化工作、生活和学习!

开发百宝箱之猿如意使用指南 【欢迎您】使用“猿如意”百宝箱大家科普一下什么是猿如意&#xff1f;赶快趁热下载个【猿如意】吧【猿如意】使用体验打分和评估【猿如意】整体功能评分【猿如意】UI效果评分【猿如意】易用性效果【猿如意】各组件评分 每个程序猿值得拥有的学习开…

chatgpt赋能python:Python:如何正确拼读?

Python&#xff1a;如何正确拼读&#xff1f; Python是一种高级编程语言&#xff0c;如今已经成为最流行的编程语言之一。尽管如此&#xff0c;许多人仍然不知道如何正确拼读Python。在本篇文章中&#xff0c;我们将学习如何正确地发音和拼写Python。 Python的发音 Python的…

【第三方互联】3、腾讯QQ授权第三方登录

当我们创建的 QQ 互联应用成功后,我们便可以开始使用该应用来实现 QQ 互联 一、获取 APP ID 和 APP Key 1、在 QQ 互联官网首页找到“我的应用” 2、点击应用,进入详情 这样,我们就获取到了 APP ID 和 APP Key 二、QQ 授权登录进行开发 1、将 APP ID 、APP Key,以及该…

腾讯旗下7款App遭广东责令整改,侵害用户权益

| 快讯 1月11日&#xff0c;广东省通信管理局发布动态《209款App被广东省通信管理局责令整改或关停&#xff08;2020年11-12月&#xff09;》。其中&#xff0c;深圳市腾讯计算机系统有限公司旗下的7款APP登榜。包括 游戏类APP手游宝游戏类APP天天象棋工具类APP逆战助手工具类…

跟AI唠嗑,年入33万美元!prompt成核心竞争力

点击上方“视学算法”&#xff0c;选择加"星标"或“置顶” 重磅干货&#xff0c;第一时间送达 编辑丨极市平台 导读 AI在我们的生活中&#xff0c;越来越不可或缺。显然&#xff0c;谁能更好地掌握提示工程&#xff0c;就能比别人多掌握一个强大的利器。 ChatGPT的爆…

八十行代码实现开源的 Midjourney、Stable Diffusion “咒语”作图工具

本篇文章聊聊如何通过 Docker 和八十行左右的 Python 代码&#xff0c;实现一款类似 Midjourney 官方图片解析功能 Describe 的 Prompt 工具。 让你在玩 Midjourney、Stable Diffusion 这类模型时&#xff0c;不再为生成 Prompt 描述挠头。 写在前面 本文将提供两个版本的工…

深度学习实战8-生活照片转化漫画照片应用

家好&#xff0c;我是微学AI&#xff0c;今天给大家带来一个生活照片转化漫画照片实战案例。让大家不要花钱去找人设计漫画照片了&#xff0c;这个是设计头像神器&#xff0c;很赶时髦。算法参考论文《CartoonRenderer:An Instance-based Multi-Style Cartoon Image Translator…

使用Midjourney来帮你画UIUX作品作品集

【AI作画助手Midjourney&#xff0c;助你成为UIUX设计大咖&#xff01;】 小伙伴们&#xff0c;想要成为一名顶尖UIUX设计师吗&#xff1f;是不是苦于画面设计费时费力&#xff1f;别担心&#xff0c;今天我给大家带来一个神级教程&#xff0c;&#x1f4da;从设计概念到实际操…

Ubuntu 16.04 以及之后版本 系统托盘无法显示后台运行图标(wechat, 网易云)

Ubuntu 16.04 和 Ubuntu 18.04在装完了系统之后安装 electronic-wechat和 netease-cloud-music发现都没法在托盘中显示小图标。应该是提供的gnome没有安装这个东西。 因为我也比较菜&#xff0c;没有深究内在的原因&#xff0c;直接给解决方法好了。 1、安装Tweaks-tool 2、安装…

Docker CEO:ChatGPT 正改变云程序开发

Docker 创始人 Solomon Hykes 表示&#xff1a;自动化是“工具化”的下一步&#xff0c;但也是最具挑战性的一步。 原文地址&#xff1a;https://www.silverliningsinfo.com/multi-cloud/docker-and-kubernetes-founders-talk-about-future-cloud-0 本文由 CSDN 借助 ChatGPT 组…

Unity官方FPS教程解析(四)

这次我们不会讲Player Weapons Manager脚本&#xff0c;虽然同上一期分析的脚本属于一个Manager文件夹&#xff0c;但是其实没有必要连在一起&#xff0c;因为我写这个系列也主要是为了那些像我一样的新手甚至刚入门的各位的&#xff0c;这个时候就要考虑脚本的实际作用的联系而…

Python3 连接钉钉API接口自动发送消息到钉钉群

Python脚本以及消息发生相关设置 机器人的webhook在机器人设置里面即可查看&#xff0c;详细的使用教程可以到点击下面链接&#xff1a; 钉钉开发文档的自定义机器人 # url为机器人的webhookurl "https://oapi.dingtalk.com/robot/send?access_tokenaf22959df71e0fc1…

办公利器:用Python向钉钉发送消息

钉钉作为目前最热门的办公软件&#xff0c;在工作中大多数时间都在与他打交道。今天和大家分享一下如何用Python向钉钉发送消息&#xff0c;最终达到每日自动向指定群中发送销售日报。 新建群机器人 首先打开群设置&#xff0c;点击智能群助手。 选择添加自定义机器人 然后…