关于 变现的思考
先说结论:对于个人开发者而言,目前这很可能只能做用爱发电的项目。
Why?
接口开发的局限:
目前 接口的 Key,每个账户只有 18$ 额度,用完之后就要付费或者重新注册账号
目前 接口开放的 GPT-3 模型不够智能,想要更智能需要付费订阅-Plus,售价 20+$/月
这里提供几个思路:
做微信生态下的产品(公众号、小程序)
a. 首先微信个人开发者是无法接入微信支付的,因此你不太可能通过限定用户使用次数进行收费的方式实现变现
b. 其次考虑通过“流量主”变现,这个门槛比较高;公众号需要 500 粉丝才可接入,小程序需要 1000 独立访客才可接入
考虑写软文、科普自媒体。这个变现更慢,且需要长期维持高热度流量才行。
考虑卖账号。 这应该是目前最赚钱的方式了,通过给小白用户注册账号或者提供 服务指引,目前这种渠道收益应该很高。
考虑定制化一些小工具,参考上面“调教指南”,可以利用 AI 的功能协助我们完成各种小工具的快速生产。
利用特殊话术,可以让他帮我们写小说、行业分析报告…;
通过 AI 语言学习能力,可以给他一段文本,让他做语言分析包括:人物的心理状态、情绪状态;或者让他帮我们组织文本,让废话写的更简练标准…
…….
Node- 服务端开发
为什么是 Node?
如果你尝试过调用 的接口,就知道目前开放的接口中并没有提到 ,但又都知道 AI 本身是能识别上下文语境的。这其实需要服务端自己去维护上下文,模型本身没有任何会话支持,需要服务端本地使用缓存来存储会话并将它们作为上下文传递给模型。
因此到这里,你可能就明白,为什么不直接写一个 HTTP 调用接口?因为不使用这些开源库,你可能需要自己研究官方 API 看如何实现会话存储和传递,否则只能是一问一答的每次作为一个新的 和 Chat GPT 通信。
直接在 搜索-api排名最靠前的项目:
image-
其实要关注的是这两个库,因为相对于 我更擅长前端开发,因此选用了-/-api 这个库,两者都实现了对 的支持。
如何使用 -api 库
需要什么库?(注意这里需要 Node 版本>18)
:-/-api的 npm 库
:Node 官方推荐的 Web 框架,用于开发服务端接口
安装:
首先创建一个文件夹,然后使用npm init指令初始化 node 项目,一路回车(这其实和 Java 中的 Maven 一个道理)
初始化完成后,该文件夹根目录会出现.json文件,然后安装上述两个库,依次执行指令:
npm install chatgpt
npm install express -save
第三方库安装成功后,目前文件夹结构如下:
image-
在根目录创建bin/.js存放服务端代码,并修改.json增加启动指令:
image-
可以看到,环境已经搭建成功了,下面在.js中写服务端代码。
.js
鉴于-/-api的 中已经写过 demo 了,这里直接粘贴代码,主要功能:
console.log('server run....')
// 引入express库,注意这里使用require引入(默认支持这种模式引入包)
// 要注意Node对require和import的分包模式,两者不能共存
var express = require('express')
var app = express()
var bodyParser = require('body-parser')
// 开启对json传参的支持
app.use(bodyParser.json())
// 定义chat接口
app.post('/chat', async (req, res) => {
const { text } = req.body
fetchChat(text)
res.send('Hello')
})
// 推送消息
async function fetchChat(text) {
// 注意,因为node的分包模式不同,这是使用动态引入包的方式,不可在文件顶部直接import
const { ChatGPTAPI } = await import('chatgpt')
const api = new ChatGPTAPI({ apiKey: 'you openai-api-key' })
console.log('------------------------')
console.log('推送消息:[' + text + ']')
const res = await api.sendMessage(text)
console.log('收到消息:[' + JSON.stringify(res) + ']')
}
// 服务监听端口
app.listen(3000)
执行效果:
image-
image-
从接口中可以看到很多数据,一些我们会使用到的参数:
(当前会话的唯一 ID)
(会话的父消息 ID)
model (当前使用的模型)
text (应答文本内容)
如何保证唯一会话?
在上面未指定 的情况下,每次调用都认为是新的会话;如果需要维持会话需要在传递消息时主动传递一个 ,如下:
const res = await api.sendMessage(text, {
conversationId: 'xxxxxxxxxxxxxx',
parentMessageId: 'xxxxxxxxxxxxxx',
})
注意 应该是每次会话都更新,而 需要保证在同一会话中的唯一性。
大家可以使用这种方式使用一下,这里就不再粘贴案例了。
联系我
323AI导航网发布