首页
关于
翻译
留言
统计
搜索
1
以太坊简介
742 阅读
2
搭建 OpenAI 代理
663 阅读
3
第 4 章 创建您的第一个 React 组件
550 阅读
4
如何读懂编译后的 JavaScript 代码
526 阅读
5
第 9 章 使用 Jest 测试 React 应用
477 阅读
JavaScript
TypeScript
后端
Web
移动
运维
杂项
登录
Search
标签搜索
React
翻译
Vue
组件
Angular
工程化
库
Hook
框架
优化
路由
Node.js
Flash
部署
算法
可视化
Debug
测试
兼容
Web3
Flying
累计撰写
267
篇文章
累计收到
2
条评论
首页
栏目
JavaScript
TypeScript
后端
Web
移动
运维
杂项
页面
关于
翻译
留言
统计
搜索到
13
篇
部署
相关的结果
2024-04-20
PostgreSQL 管理
PostgreSQL 是一个强大的开源对象关系数据库系统,它使用和扩展了SQL语言,并结合了许多功能,可以安全地存储和扩展最复杂的数据工作负载。PostgreSQL 的起源可以追溯到1986年,当时是加州大学伯克利分校 POSTGRES 项目的一部分,在这个核心平台上已经活跃发展了超过 35 年。本文将重点介绍如何管理 PostgreSQL。
2024年04月20日
5 阅读
0 评论
1 点赞
2023-04-08
搭建 OpenAI 代理
目前在国内访问 OpenAI 还是需要“科学”上网的,更不用说调用 OpenAI API。所以我尝试用 Node.js 写了个代理小程序,并部署在 Codesandbox 上,然后就可以在本地用习惯的前后端分离的方式调用 OpenAI API。使用比较简单,特写本文和大家分享。好用话请帮忙 Star 一下我的 repo。获取 API 密钥本文假设我们已经注册了 OpenAI 账号,如果还没有创建 API 密钥,可以如下图进行操作。OpenAI 注册文章一大堆,最关键的是要输入一个可用的手机号完成验证,没有的话可租用,我是花了 12 卢布,不到人民币 2 元,所以自己动动手,真没必要花几十元买奸商的账号。代理实现其实多数语言都能模拟客户端调用实现类似网络爬虫,这里仅以Node.js为例。实现代码比较简单,主要是用 express 和 http-proxy-middleware 实现的。// ... app.use(express.static(path.join(__dirname, "public"))); app.use( "/v1/", createProxyMiddleware({ target: "https://api.openai.com", changeOrigin: true, onProxyReq: (proxyReq, req, res) => { console.log(req.originalUrl); proxyReq.setHeader("Authorization", `Bearer ${process.env.API_KEY}`); }, onProxyRes: (proxyRes, req, res) => { proxyRes.headers["Access-Control-Allow-Origin"] = "*"; proxyRes.headers["Access-Control-Allow-Headers"] = "Content-Type,Content-Length, Authorization, Accept,X-Requested-With"; } }) ); // ...完整示例代码参看 repo 中的 index.js。createProxyMiddleware 的用法就不细说了。有几点需要注意:onProxyReq 事件回调中我们设置了请求标头 Authorization,将 API 密钥保存到了代理代码中,这样前端调用时就不用加代理验证了。但问题来了,我们的将代码部署到国外主机上安全吗?这就担心过头了。一来目前注册一个账号就买一根冰棒的钱,二来很多云平台可以使用环境变量配置 API 密钥。幸运的是,Codesandbox 就可以。onProxyReq 事件回调中我们通过设置了响应标头 Access-Control-Allow-Origin 为 *,这意味着任何人都可以访问我们的代理服务。当然如果不想被“白嫖”,我们可以根据需要固定几个IP。本地调试时,记得“科学”上网,还要将 ${process.env.API_KEY} 替换成你自己的 KEY。出于安全,官方不建议使用前后端分离方式开发 OpenAI Web 应用,我们搭建的代理刚好能回避这个问题。验证当然最好是用页面来验证,以下代码了演示怎样使用 axios 调用我们之前搭建的代理服务。 axios.post('http://localhost:3000/v1/completions', { model: 'text-davinci-003', max_tokens: 1024, prompt: prompt }) .then(response => { // ... }) .catch(error => { // ... })完整示例代码参看 repo 中的 public/index.html,这应该算是最简单的纯前端 OpenAI 应用了。和普通 Ajax 调用没啥区别。当然也可以使用官方提供的 openai 之类的库,只要将 basePath 设置代理服务地址(如本示例中的 http://localhost:3000/v1)即可。Node.js 版本的 openai 的其实是依赖 axios 的,社区的各种库也只是基于某种语言或业务场景对 OpenAI API 的封装,所以看看 OpenAI API 文档没啥难度。访问不了文档的可以让 ChatGPT 来帮忙?。API 常见的就是 Ajax 请求了。OpenAI API 也不例外。后端对界面不太关注的同学用 curl、postman 之类的工具也可以验证。免费部署代码测试好后还要部署在国外才行。目前,免费部署 Node.js 应用的云平台并不是很多,推荐 Codesandbox。CodesandboxCodesandbox 简直就是一个神器,我们不仅可以使用它来写代码,还能在上面托管应用,甚至是 Node.js 应用。登录 Codesandbox 账号没有 Codesandbox 账号的话最好关联自己的 Github 注册一个账号,以后我们就可以在这两个平台之间同步自己的项目了,非常方便。新建工程单击 “Create”,选择一个 Node.js 模板,新建 Node.js 工程。添加依赖在 package.json 中添加以下依赖:"dependencies": { "express": "^4.18.2", "http-proxy-middleware": "^2.0.6" }替换代码将 index.js 中的代码替换为完整的代理代码。可以从我的 repo 获取。如果觉得前面几步操作麻烦,可以直接 Fork 一下我的示例项目,然后继续。配置 API 密钥左上角菜单 > “Project Settings” > “Env Variables”,填入先前生成的 API 密钥,如下图所示:重启服务左上角菜单 > “Restart Sandbox”重启服务,若能在右侧看到以下预览页面说明部署没大问题。预览页面地址栏显示的就是最终生成的代理服务地址。如本项目的 https://ge68te-3000.csb.app。如果不打算分享服务,可以将 CodeSandbox 项目移动到草稿中私有化,以提高服务的安全性。其他选择VencelVencel 部署的应用目前国内要“科学”上网才可以访问,不推荐。Netlify国内倒是能访问,不过官方不支持 Express 模板,要用 Netlify function“曲线救国”,操作起来有些麻烦。还有部署生成服务地址也感觉怪怪的,所以也不推荐。其他平台像 AWS、腾讯云等平台也可以部署 Node.js 项目,但有一定的免费期限。我们的程序很简单,有点杀鸡用牛刀的感觉。当然最好的办法是使用 VPN 访问或搞到国外主机,不过俺是穷人。?总结直接 Fork我的示例项目使用环境变量配置 API 密钥重启服务就搭建好了,很简单吧?以前老觉得 AI 高深莫测,打通 OpenAI API 的“任督二脉”之后, 我们应该对 AI 开发充满信心。
2023年04月08日
663 阅读
0 评论
2 点赞
2023-03-19
使用 Netlify CLI 部署 Next.js 应用
最近下载一个 Next.js 博客应用,想修改一下自己用。部署到哪里大家在国内都能访问呢?第一想到的就是 Netlify。Netlify 推荐的是将网站链接到一个 Git 仓库,用于持续部署(CI)。不过我不打算使用这种自动部署方式。那么如何手动部署 Next.js 网站呢? Netlify 的文档写得并不清楚,我找了好久终于找到了方案,如果您想直接看答案,可以跳过看文章最后的总结。
2023年03月19日
122 阅读
0 评论
1 点赞
2022-05-06
使用 PuTTY 连接 Amazon EC2
Amazon Linux EC2 实例自带 AWS CLI,我们只需要远程连接 到 EC2 就可以使用该工具了。本文将介绍如何使用 PuTTY (适用于 Windows 的免费 SSH 客户端) 连接到你的实例。按照本教程操作,你首先需要创建并启动一个 Linux EC2 实例,并连接到该实例。
2022年05月06日
121 阅读
0 评论
1 点赞
2022-03-26
AWS Lambda 入门
本文是一篇 AWS Lambda 的入门教程。我们将讨论 Lambda 的一些理论,以及想要使用它的原因,然后我们将介绍了如何创建一个 Lambda 函数以及如何触发删除它。
2022年03月26日
112 阅读
0 评论
1 点赞
1
2
3