十分钟搭建一个免费的 OpenAI 服务
最近 chatGPT 十分火,也出现了许多依据 chatGPT 写的插件,本次文章准备解说一下依据 OpenAI 如何搭建一个 gpt 服务,并完成如下两个功用:
- 完成内容对话
- 完成依据内容生成 AI 图片
源码地址:github.com/MRwangqi/ch…
作用演示:
如下是作用演示:
- 内容对话:http-nodejs-production-32b8.up.railway.app/chat?prompt…
- AI 作画:http-nodejs-production-32b8.up.railway.app/image?promp…
- OPEN AI 开发者文档
- Node.js 开发
- Railway 布置(每个月有 5$ 的免费额度)
前期准备
1、OpenAI API 接入文档:
platform.openai.com/docs/api-re…
2、获取 OpenAI API Keys 和 Organization 安排 ID (前提是有 OpenAI 账号)
点击链接 platform.openai.com/account/api… 获取 API Keys,假如没有,可点击 Create new secret key
进行创立:
点击链接 platform.openai.com/account/org… 获取安排 ID:
正式开发
OpenAI API 文档提供了三种接入方法:
- Http 恳求
- Python
- Node.js
不管用哪种方法接入,所对应的运用方法都差不多,仅仅只是技能栈不同而已,咱们来看个 Http 恳求的示例 :
curl https://api.openai.com/v1/completions \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-d '{
"model": "text-davinci-003",
"prompt": "今天星期几?",
"max_tokens": 7,
"temperature": 0
}'
恳求参数:
- model :模型 Id,此处的文本生成模型为 GPT-3
- prompt:提示语
- max_tokens:回复成果的最大 tokens 数量,依据模型所定,有的最大2048,有的 4096,依据官网 tokenizer 描绘,关于普通英文文本,100 个 tokens 差不多等于 75 个单词,具体计算规矩可检查 platform.openai.com/tokenizer
- temperature:采样准确度,介于 0~2 之间,值越低约准确。
以官方示例为准,咱们运用 Node.js 开端开发(需求装置 Node 环境,可自行查找装置)。 履行初始化环境指令,依据提示完成项目创立
npm init
履行装置 openai 依靠指令:
npm install openai
装置完成后,咱们在当前目录创立个 index.js 文件,为了能加载 ES 模块,咱们还需在 package.json 中添加下 "type": "module"
,复制官方示例到该文件下,并替换掉 organization 安排 Id 与 apiKey 即可,装备作用如下:
假如 API KEY 和安排 Id 装备正确的话,咱们能够履行运行指令:
node index.js
假如控制台没有任何报错的话,则表示装备成功,假如控制台有打印日志,则需求检查是 API KEY 装备不正确,仍是安排 ID 装备不正确。
接下来,咱们在此基础上,运用 gpt-3 文本模型开发功用:
// ... 省掉上面代码
const res = await openai.createCompletion({
// text 模型
model: "text-davinci-003",
prompt: "周杰伦有多少张专辑?",
max_tokens: 2048,
temperature: 0.2
})
// 打印成果
console.log(res.data.choices)
这儿咱们询问 周杰伦有多少张专辑?
,并履行 node index.js
,检查打印的成果:
一个简单的问答成果出来了,接下来,咱们暂时注释掉该段代码,测验下 AI 作画的才能,编辑如下代码:
// ... 省掉上面代码
const res = await openai.createImage({
model: "image-alpha-001",
prompt: "空山新雨后,气候晚来秋",
size: "256x256",
n: 1
})
// 打印图片 url
var url = res.data.data[0].url
console.log(url)
- model 为 AI 图片模型
- prompt 为描绘的内容,这儿,咱们引证古诗,来检查终究的作用
- size 为生成的图片大小
- n 为生成的张数,这儿咱们就填写一张
履行成功后,会打印图片的 url:
咱们将其复制出来到浏览器检查:
为了使这两个功用通过服务的方法拜访,咱们还需求装置两个依靠 koa 和 koa-router,履行如下指令装置:
npm install koa koa-router
重新编辑 index.js 文件,引进 koa 和 koa-router:
import Koa from "koa"
import Router from "koa-router";
// ... 省掉 openai 初始化代码
const app = new Koa()
const router = new Router();
router.get("/chat", async (ctx, next) => {
// 获取恳求中的 prompt 参数
const { prompt } = ctx.request.query;
const res = await openai.createCompletion({
model: "text-davinci-003",
prompt: prompt,
max_tokens: 2048,
temperature: 0.2
})
// 将生成的内容回来给客户端
ctx.body = res.data.choices
});
// 启用路由
app.use(router.routes()).use(router.allowedMethods());
// 启动服务器,端口暂时设置为 3000
app.listen(3000, () => {
console.log("Server is started ");
});
总体过程就是启用个端口为 3000 的服务,将本来履行的代码放到了 /chat 路由途径中,拜访该途径即可履行该代码回来成果,接下来,咱们持续履行 node index.js
指令,然后拜访如下链接:
一个简单的服务拜访已经开发好了,接下来,咱们需求脱敏,将安排 ID、API KEY、端口 等设置成环境变量,并推到自己的 github 中(Railway 布置时需求挑选该库房),能够直接挑选该项目,以避免秘钥泄漏,咱们将其改成:http://localhost:3434/chat?prompt=周杰伦是谁
- process.env.APP_ORG
- process.env.APP_KEY
- process.env.PORT
具体操作代码可直接检查源码,这儿就不贴了,避免代码太多影响阅览,接下来,咱们需求开端布置应用了。
布置应用
拜访 railway.app/dashboard 链接,主张运用 Github 方便登录 Railway ,并点击 New Project
创立项目:
咱们挑选该项目,先不着急布置,咱们先把前面的环境变量先设置上:
挑选 `New Variable`创立 APP_ORG 和 APP_KEY 环境变量,并将对应的值写入到 value 中: 完成添加之后,Railway 会自动布置项目,咱们挑选左边的 `Depolyments`检查布置成果: 布置成功之后,咱们需求生成 Domains 链接,咱们持续点击右边的 Settings 选项卡,挑选 `generate Domain`,此时会生成布置的域名链接:咱们拿到该链接,就能够开端拜访了,复制此链接,咱们来拜访下 AI 作画(链接+路由):
chatgpt-nodejs-production.up.railway.app/image?promp…