项目引入openai走向AIGC的一次体验

428 阅读6分钟

前言

今年是AGI元年,我们可以明显感受到AI技术增长进入了一个全新的阶段,我们的国产新能源也大肆引入大模型,属于我们的时代来了...昨天是高考的第一天,记得一个考生说当地高考作文是AI发展如此迅猛,是否会取代人类?就程序员的角度来看,AI始终是AI,我们可以借助强大的大模型能力,用于帮助我们的工作、学习、生活,万物皆智能,但是程序员永远不会被取代,技术曲线的陡峭与让更多人享受到AI强大生产力之间还有非常大的差距,只是掌握前沿技术的大家将接住时代的一波红利,走的更远...

浅谈AIGC为什么赋予了前后端新的机会?openai为什么会带来变革?一个,用从用户的角度来看,我们的体验完全不一样了,传统的搜索引擎,数据噪声大、广告多、内容不精确,始终根据文本匹配做数据迁移,而openai刷新了一亿用户新纪录,它更懂我们,更懂程序员。再一个,我们以传统方式编写代码时,时感语言还是有一定的界限,方向和道路更不相同,前端的同学也想把玩一下nlp任务时总是束手无策,但是现在,搭上openai的开发,我们也可以迅速完成nlp任务,可以预见,未来,一定是属于全栈的时代,前后端界限将被打破。

接下来,以前端做一个简单的情感分析为例,我们一起体验一把引入openai走向AIGC。

1.初始化

  1. node执行npm init -y命令,将项目初始化为一个后端项目

image.png

初始化后便会出现一个package.json,这是一个项目描述文件,他的主要作用是定义项目信息,包括项目的名称、版本、描述等等,管理项目的依赖,我们项目比如后续我们引入openai,他就会存在一个openai的依赖,只要项目描述文件在并且存在这个依赖,即便我们删除了包,也可以通过node执行npm i 重新下载依赖,除此之外,他还配置项目相关脚本,如启动脚本、测试脚本等。

image.png 项目描述文件中包含了很多字段,常见的字段:

  • "name":项目名称。
  • "version":项目版本号。
  • "description":项目描述。
  • "dependencies":生产环境依赖的模块。
  • "devDependencies":开发环境依赖的模块。
  • "scripts":定义各种可执行的脚本命令。

2. 获取OPENAI_API_KEY

为了能够使用openai相关服务,我们首先需要获取一下这个apikey,这里给大家分享一个开源项目,开源免费获取密钥chatanywhere/GPT_API_free: Free ChatGPT API Key,免费ChatGPT API,支持GPT4 API(免费),ChatGPT国内可用免费转发API,直连无需代理。可以搭配ChatBox等软件/插件使用,极大降低接口使用成本。国内即可无限制畅快聊天。 (github.com)

image.png

3. 安装openai模块

// node执行
npm i openai

image.png

终端执行这个命令,是通过node package manager(npm) 来安装openai这个模块,安装后就能将openai相关功能和代码继承到我们的项目当中,以便在项目中使用 OpenAI 提供的各种接口和方法来进行与人工智能相关的操作,比如调用 OpenAI 的模型进行文本生成等。

4. 项目引入openai

安装好了之后我们还需要引入自己的项目,就像我们导库需要import xx。

const OpenAI = require('openai')

5. 安装dotenv,方便管理环境变量

dotenv 模块主要是用于更方便地加载和管理额外的自定义环境变量配置文件(通常是 .env 文件)到 process.env 中,增强对环境变量配置的灵活性和可管理性。

// node终端执行
npm install dotenv

引入dotenv,我们的password、key等等私密性信息,不应该直接明文写入代码,可以创建一个.env文件,然后将这些敏感信息放入。

// 类 require关键字
// 系统环境变量
// 进程的环境变量
require('dotenv').config();

image.png 提到这里,就不得不说一下项目中的.gitignore文件,我们的敏感文件、比较大的包其实都不需要上传到git上,如果上传,造成信息泄露以及文件过大,这些包其实别人可以自行下载,因此gitignore文件我们需要声明禁止上传

image.png

6. 实例化openai

const OpenAI = require('openai')
// 实例化
// AI全栈开发
// prompt -> GPT-API-free ->openai 
const client = new OpenAI({
    // 使用权限
    apiKey: process.env.OPENAI_API_KEY,
    // proxy chatanywhere
    baseURL: 'https://api.chatanywhere.tech/v1'
})
  • 我们的api去哪里请求服务?baseURL

7. 使用openai服务

async function main() {
    let prompt = `
        判断一下用户的评论情感上是正面的还是负面的
        评论:买的银色版真好看,一天就到了,晚上就开始拿起来玩,
        系统很漂亮,很流畅,还支持蓝牙耳机,还支持蓝牙耳机,还支持蓝牙耳机,
        还支持蓝牙耳机,还支持蓝牙耳机。
        情感:正面
        评论:随意降价,不予保价,态度差
        情感:负面 
    `
    let myPrompt = `
    ${prompt}
    评论:实话说,iphone越来越没有新意了,你买我不推荐,散了
    情感:
    `

    // client openai实例
    // chat 以聊天的方式
    // competions AIGC 生成正面或者负面,LLM大模型来完成
    // AI 自然语言处理,GC生成内容
    // create 创建一个对话
    const chatCompletion = await client.chat.completions.create({
        // 聊天的上下文 多轮
        messages: [{ role: 'user', content: myPrompt }],
        model: 'gpt-3.5-turbo',
        n: 1
    })
    console.log(chatCompletion.choices[0]);
}


main();

通过评论获取情感(正面/负面),原本已有一些prompt了,我们通过拼接,最后还有一个情感没有分析,我们希望通过openai分析出来。

我们可以通过openai创建一个聊天完成请求。

  • client.chat.completions.create(...):通过指定的客户端对象来发起聊天完成的操作。
  • messages 数组定义了聊天的消息内容,这里包含了一个用户角色的消息,内容为 myPrompt 。
  • model 指定了使用的模型,这里是 gpt-3.5-turbo 。
  • n 表示要生成的回复数量。
  • 最后,将生成的结果中的第一个选择打印到控制台。

效果图: image.png

小结

以上就是一次将openai引入项目的简单体验,通过openai,做一次情感分析。那么除此之外,我们这里是创建了一个聊天请求,事实上openai还有很多实用功能可以满足我们各项需求,大家可以自行摸索。