前言
这两年AI搞得如火如荼,前天刚结束的高考语文中,就有一篇作文中的关键字是人工智能,网络上关于“用AI写AI”的讨论也是热火朝天。那么对于程序员来说,AIGC赋予了前后端新的机会。这两年关于AI的革命就是由OpenAI发起的,接下来就让我们通过写一个程序:“发表一个评论,让OpenAI大模型分析情感是正面的还是负面的”,由此来感受一下大模型融入编程的魅力!
申领 API Key
- 打开 github.com/chatanywher… 网页(要科学上网)
- 下滑至,点击申请领取内测免费API Key(刚申请的话要隔七天才能用)
准备工作
npm init -y初始化一个后端项目,目录中会多一个package.json文件即项目描述文件。
package.json中键的意义:
name: 项目的名称。它应该是唯一的,以便在 npm(Node.js 包管理器)中识别和发布
description: 项目的描述。简要说明项目的功能、目的和特点。
main: 项目的入口文件。指定了项目的主要入口 JavaScript 文件.
scripts: 用于定义一些自定义的命令或脚本。例如,可以在这里定义启动项目的命令、运行测试的命令等。
dependencies: 项目的生产依赖。列出了项目运行时需要的各种第三方包及其版本号。
keywords: 关键词数组。用于描述项目的主题、领域或特性,方便他人搜索和识别
npm i openai安装OpenAI,npm i dotenv安装dotenv库。若package.json文件中多出了 项目依赖 的键值对就说明安装好了
-
创建
.env文件,将OPENAI_API_KEY存放至这个文件中。再到.gitignore文件中添加.env -
创建 index.js文件,此时目录结构如下(VSCode环境)
index.js 代码
// 引入并配置`dotenv`来加载`.env`文件中的变量
require('dotenv').config();
// 引入本地(node_mdoules)的openai
const OpenAI = require('openai');
// 实例化OpenAI
const client = new OpenAI({
apikey: 'process.env.OPENAI_API_KEY', // 用于访问openAi认证
baseURL: 'https://api.chatanywhere.tech/v1'
})
async function main(){
// 评论模版,引导大模型正确回答
let prompt = `
判断用户的评论情感上时正面的还是负面的
评论:买的银色版真的好看,一天就到了,晚上就开始拿起来玩系统很丝滑流畅,
做工扎实,手感细腻,很精致哦,华为一如既往的好品质
情感:正面
评论:随意降价,不予报价,服务态度差
情感:负面
`
let myPrompt = `
${prompt}
评论:实话说,iphone越来越没有新意了,你买我不推荐,散了
情感:
`
// .create() 创建一个对话
// 返回一个JSON格式内容
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();
运行结果
细节
- 引入openai库的同时,也依赖了
node-fetch第三方库来处理 HTTP 请求 - baseURL: api.chatanywhere.tech/v1 充当了一个代理/中间商的作用。先把请求交给了这个URL,它再帮你把请求交给openai
- 此处的apikey也不是直接由openai提供的
.env文件是一种用于存储环境变量的配置文件,主要用于包含应用程序运行时所需的各种设置和敏感信息。key、password等应该放到.env文件中,是为了防止这个项目被提交至gitee仓库后,key泄露被别人乱用。- 将
.env文件添加至.gitignore文件中后,.gitignore文件可以忽略.env文件的提交。 messages是数组的原因:聊天是多轮的,是有上下文的
结语
本例代码可被归纳为四部分:导包、实例化OpenAI、构造prompt和创建对话。大模型擅长做一些做一些nlp这种高下立判的任务,而这是传统编程较难轻松做到的。但在AIGC全栈开发中,我们只需要设计一个好的prompt,引导大模型工作,便可轻松完成这些任务。