大模型融入编程:给一个prompt,OpenAI就给出了我满意的答案

466 阅读3分钟

前言

这两年AI搞得如火如荼,前天刚结束的高考语文中,就有一篇作文中的关键字是人工智能,网络上关于“用AI写AI”的讨论也是热火朝天。那么对于程序员来说,AIGC赋予了前后端新的机会。这两年关于AI的革命就是由OpenAI发起的,接下来就让我们通过写一个程序:“发表一个评论,让OpenAI大模型分析情感是正面的还是负面的”,由此来感受一下大模型融入编程的魅力!

申领 API Key

  1. 打开 github.com/chatanywher… 网页(要科学上网)
  2. 下滑至,点击申请领取内测免费API Key(刚申请的话要隔七天才能用) 屏幕截图 2024-06-09 144705.png

准备工作

  1. npm init -y初始化一个后端项目,目录中会多一个package.json文件即项目描述文件。

package.json中键的意义

name: 项目的名称。它应该是唯一的,以便在 npm(Node.js 包管理器)中识别和发布

description: 项目的描述。简要说明项目的功能、目的和特点。

main: 项目的入口文件。指定了项目的主要入口 JavaScript 文件.

scripts: 用于定义一些自定义的命令或脚本。例如,可以在这里定义启动项目的命令、运行测试的命令等。

dependencies: 项目的生产依赖。列出了项目运行时需要的各种第三方包及其版本号。

keywords: 关键词数组。用于描述项目的主题、领域或特性,方便他人搜索和识别

  1. npm i openai安装OpenAI,npm i dotenv安装dotenv库。若package.json文件中多出了 项目依赖 的键值对就说明安装好了

屏幕截图 2024-06-09 131941.png

  1. 创建.env文件,将OPENAI_API_KEY存放至这个文件中。再到.gitignore文件中添加.env 屏幕截图 2024-06-09 152241.png 屏幕截图 2024-06-09 153422.png

  2. 创建 index.js文件,此时目录结构如下(VSCode环境)

image.png

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();

运行结果

image.png

细节

  1. 引入openai库的同时,也依赖了 node-fetch 第三方库来处理 HTTP 请求
  2. baseURL: api.chatanywhere.tech/v1 充当了一个代理/中间商的作用。先把请求交给了这个URL,它再帮你把请求交给openai
  3. 此处的apikey也不是直接由openai提供的
  4. .env 文件是一种用于存储环境变量的配置文件,主要用于包含应用程序运行时所需的各种设置和敏感信息。key、password等应该放到.env文件中,是为了防止这个项目被提交至gitee仓库后,key泄露被别人乱用。
  5. .env文件添加至.gitignore文件中后,.gitignore文件可以忽略.env文件的提交
  6. messages是数组的原因:聊天是多轮的,是有上下文的

结语

本例代码可被归纳为四部分:导包、实例化OpenAI、构造prompt和创建对话。大模型擅长做一些做一些nlp这种高下立判的任务,而这是传统编程较难轻松做到的。但在AIGC全栈开发中,我们只需要设计一个好的prompt,引导大模型工作,便可轻松完成这些任务。