十分钟搭建一个免费的OpenAI服务

27次阅读

最近 chatGPT 非常火,也出现了很多基于 chatGPT 写的插件,本次文章准备讲解一下基于 OpenAI 如何搭建一个 gpt 服务,并实现如下两个功能:

  • 实现内容对话
  • 实现根据内容生成 AI 图片

源码地址:https://github.com/MRwangqi/chatGPT-nodejs[1]

效果演示:

如下是效果演示:

  • 内容对话:https://http-nodejs-production-32b8.up.railway.app/chat?prompt= 周杰伦简介 [2]

十分钟搭建一个免费的OpenAI服务插图

  • AI 作画:https://http-nodejs-production-32b8.up.railway.app/image?prompt= 雨巷中的小女孩撑着油纸 [3]

十分钟搭建一个免费的OpenAI服务插图1

本次内容会涉及到一点点 Node.js 的开发,但代码量极少 (只有 56 行代码),我相信,从事 Android 开发的你,一定能看得懂。本文涉及到的知识点:

  • OPEN AI   开发者文档
  • Node.js 开发
  • Railway 部署 (每个月有 5$ 的免费额度)

前期准备

1、OpenAI API 接入文档:/docs/api-reference/introduction[4]2、获取 OpenAI  API Keys 和 Organization 组织 ID (前提是有 OpenAI 账号) 点击链接  /account/api-keys[5]  获取 API Keys,如果没有,可点击  Create new secret key 进行创建:

十分钟搭建一个免费的OpenAI服务插图2

点击链接  /account/org-settings[6]  获取组织 ID:

十分钟搭建一个免费的OpenAI服务插图3

正式开发

OpenAI API 文档提供了三种接入方式:

  • Http 请求
  • Python
  • Node.js

无论用哪种方式接入,所对应的使用方式都差不多,仅仅只是技术栈不同而已,我们来看个 Http 请求的示例:










请求参数:

  1. model:模型 Id,此处的文本生成模型为 GPT-3
  2. prompt:提示语
  3. max_tokens:回复结果的最大 tokens 数量,根据模型所定,有的最大 2048,有的 4096,根据官网 tokenizer 描述,对于普通英文文本,100 个 tokens 差不多等于  75 个单词,具体计算规则可查看  /tokenizer[7]
  4. temperature:采样精确度,介于 0~2 之间,值越低约精确。

以官方示例为准,我们使用 Node.js 开始开发 (需要安装 Node 环境,可自行搜索安装)。执行初始化环境命令,根据提示完成项目创建

执行安装 openai 依赖命令:

安装完成后,我们在当前目录创建个 index.js 文件,为了能加载 ES 模块,我们还需在 package.json 中添加下  "type": "module",拷贝官方示例到该文件下,并替换掉 organization 组织 Id 与 apiKey 即可,配置效果如下:

十分钟搭建一个免费的OpenAI服务插图4

如果 API KEY 和组织 Id 配置正确的话,我们可以执行运行命令:

如果控制台没有任何报错的话,则表示配置成功,如果控制台有打印日志,则需要查看是 API KEY 配置不正确,还是组织 ID 配置不正确。

接下来,我们在此基础上,使用 gpt-3 文本模型开发功能:












这里我们询问   周杰伦有多少张专辑?,并执行  node index.js,查看打印的结果:

十分钟搭建一个免费的OpenAI服务插图5

一个简单的问答结果出来了,接下来,我们暂时注释掉该段代码,尝试下 AI 作画的能力,编辑如下代码:












  • model 为 AI 图片模型
  • prompt 为描述的内容,这里,我们引用古诗,来查看最终的效果
  • size 为生成的图片大小
  • n 为生成的张数,这里我们就填写一张

执行成功后,会打印图片的 url:

十分钟搭建一个免费的OpenAI服务插图6

我们将其拷贝出来到浏览器查看:

十分钟搭建一个免费的OpenAI服务插图7

为了使这两个功能通过服务的方式访问,我们还需要安装两个依赖 koa 和 koa-router,执行如下命令安装:

重新编辑 index.js 文件,引入 koa 和 koa-router:




























总体过程就是启用个端口为 3000 的服务,将原来执行的代码放到了 /chat 路由路径中,访问该路径即可执行该代码返回结果,接下来,我们继续执行  node index.js 命令,然后访问如下链接:

十分钟搭建一个免费的OpenAI服务插图8

一个简单的服务访问已经开发好了,接下来,我们需要脱敏,将组织 ID、API KEY、端口 等设置成环境变量,并推到自己的 github 中 (Railway 部署时需要选择该仓库),可以直接选择该项目,以避免秘钥泄漏,我们将其改成:

  • process.env.APP_ORG
  • process.env.APP_KEY
  • process.env.PORT

具体操作代码可直接查看源码,这里就不贴了,避免代码太多影响阅读,接下来,我们需要开始部署应用了。

部署应用

访问  https://railway.app/dashboard[8] 链接,建议使用 Github 快捷登录 Railway,并点击  New Project  创建项目:

十分钟搭建一个免费的OpenAI服务插图9

这里我们直接选择 Depoly from Github repo,直接选择自己仓库里的项目:

十分钟搭建一个免费的OpenAI服务插图10

找到自己刚刚 push 到 github 的仓库,例如,我选择的项目是 chatGPT-nodejs 仓库,你也可以直接 fork 我这个仓库,找到该仓库进行部署:

十分钟搭建一个免费的OpenAI服务插图11

我们选择该项目,先不着急部署,我们先把前面的环境变量先设置上:

十分钟搭建一个免费的OpenAI服务插图12

选择  New Variable  创建 APP_ORG 和 APP_KEY 环境变量,并将对应的值写入到 value 中:

十分钟搭建一个免费的OpenAI服务插图13

完成添加之后,Railway 会自动部署项目,我们选择左边的  Depolyments 查看部署结果:

十分钟搭建一个免费的OpenAI服务插图14

部署成功之后,我们需要生成 Domains 链接,我们继续点击右边的 Settings 选项卡,选择  generate Domain ,此时会生成部署的域名链接:

十分钟搭建一个免费的OpenAI服务插图15

我们拿到该链接,就可以开始访问了,拷贝此链接,我们来访问下 AI 作画 (链接 + 路由):

十分钟搭建一个免费的OpenAI服务插图16

点击   阅读原文   可触发上面的链接查看 AI 作画结果 (访问会有点慢)

参考资料

[1]

https://github.com/MRwangqi/chatGPT-nodejs: https://github.com/MRwangqi/chatGPT-nodejs

[2]

https://http-nodejs-production-32b8.up.railway.app/chat?prompt= 周杰伦简介: https://http-nodejs-production-32b8.up.railway.app/chat?prompt= 周杰伦简介

[3]

https://http-nodejs-production-32b8.up.railway.app/image?prompt= 雨巷中的小女孩撑着油纸: https://http-nodejs-production-32b8.up.railway.app/image?prompt= 雨巷中的小女孩撑着油纸

[4]

/docs/api-reference/introduction: /docs/api-reference/introduction

[5]

/account/api-keys: /account/api-keys

[6]

/account/org-settings: /account/org-settings

[7]

/tokenizer: /tokenizer

[8]

https://railway.app/dashboard: https://railway.app/dashboard

原文链接:http://www.360doc.com/content/23/0227/05/11604731_1069606179.shtml

正文完
 
追风者
版权声明:本站原创文章,由 追风者 2023-11-20发表,共计3018字。
转载说明:声明:本站内容均来自互联网,归原创作者所有,如有侵权必删除。 本站文章皆由CC-4.0协议发布。