还有人不认识最强大模型OpenAI吗?带大家一起open一下!!

56 阅读6分钟

前言

在人工智能日益渗透我们生活的今天,OpenAI 作为行业的领头羊,其提供的强大 API 接口为开发者们带来了无限的想象空间。我们今天来使用多模态交互(包括文本、图片、视频、音频)方面的应用,以及如何通过 npm 初始化后端项目集成 OpenAI SDK。同时,我们还将探讨如何优化依赖管理、确保代码调试效率,并处理敏感信息的安全问题。干货满满哟!

OIP-C.jfif

多模态交互:从单模态到多模态的跨越

首先我们来一起了解一下单模态和多模块

  1. 单模态交互:ChatGPT 文本

    ChatGPT 作为 OpenAI 的明星产品,以其强大的文本生成和理解能力赢得了广泛的关注。通过调用 ChatGPT API,我们可以实现各种文本交互场景,如问答、对话生成、文本创作等。

  2. 多模态交互:图片、视频、音频

    随着技术的发展,多模态交互逐渐成为人工智能领域的新趋势。OpenAI 的 GPT-4 等多模态模型已经具备了处理图片、视频和音频的能力。这意味着我们可以通过文本指令与这些模型进行交互,让它们理解并处理非文本信息。例如,通过输入一张图片的地址和相应的文本指令,GPT-4 可以生成与图片相关的文本描述或进行图像识别。

后端项目初始化与 OpenAI SDK 集成

Node.js 的出现极大地扩展了 JavaScript 的应用场景,使其不再局限于浏览器端,而是可以用于构建高性能的网络应用程序和服务。让我们前端不再是切图崽了!😭

  1. 使用 npm 初始化后端项目

    首先,我们需要使用 npm(Node Package Management)包管理工具,去初始化一个后端项目。通过执行 npm init -y 命令,我们可以快速生成一个包含默认配置的项目文件 package.json

  2. 安装 OpenAI SDK

    接下来,我们需要安装 OpenAI 的官方 SDK,以便在项目中调用 OpenAI 的 API。由于 npm 的官方源在国外,可能会导致下载速度较慢。因此,我们可以将 npm 的源设置为阿里云的镜像源,以提高下载速度。执行以下命令来设置 npm 源:

    
    	npm config set registry https://registry.npmmirror.com
    

    然后,使用以下命令安装 OpenAI SDK:

    
    	npm install openai
    
  3. 优化依赖管理

    在安装依赖时,我们可能会遇到以下问题:重复安装、全局污染、占用空间大等。这就是npm 安装依赖的局限

npm 安装依赖的局限

使用 npm 安装依赖时,可能会遇到以下问题:

  1. 重复安装:每个项目都会在其 node_modules 文件夹中安装一份完整的依赖副本,即使这些依赖在多个项目中是共享的。这导致了磁盘空间的浪费和安装时间的增加。

  2. 全局污染:全局安装的依赖可能会与项目中的依赖发生冲突,或者因为版本不兼容而导致问题。此外,全局安装的依赖也可能因为权限问题而无法在某些环境中正常工作。

  3. 占用空间大:由于每个项目都有自己的 node_modules 文件夹,且每个文件夹中都包含了完整的依赖树,因此随着项目数量的增加,磁盘空间占用也会迅速增长。

    为了解决这些问题,我们可以使用 pnpm(Performant npm)作为包管理工具。pnpm 通过符号链接和硬链接的方式,实现了依赖的共享和去重,从而提高了安装速度和节省了磁盘空间。

    安装 pnpm 后,我们可以使用它来安装 OpenAI SDK 和其他依赖:

    	pnpm install openai
    

搭建好了之后我们如何去使用它呢?

入口文件

我们需要一个主入口文件,所以我们在项目根目录下创建main.mjsmjs后缀代表它是一个使用ES6 模块语法编写的。

下面代码奉上,我写上了详细的注释给大家,方便大家理解

import OpenAI from "openai";
import dotenv from 'dotenv'
dotenv.config()
// 从环境变量中读取 API Key
const apiKey = process.env.OPENAI_API_KEY;
if (!apiKey) {
    throw new Error("OPENAI_API_KEY environment variable is not set");
}

// 实例化 OpenAI 客户端
const client = new OpenAI({
    apiKey,
    baseURL: 'https://api.302.ai/v1' // 如果需要转发,请确保这个地址是安全的
});

// 良好的编程风格
// 主函数 执行的入口, 单点
// 函数申明
// function main() {
//   console.log('ai 全栈开始了 ')
// }
// es6 箭头函数 传统函数更简洁 
// 赋值语句
// 函数也是对象
// 函数表达式
// async 是函数修饰符,+  await  一对
const main = async () => {
    // openai 的调用是异步的 
    // await 等会儿
    // chat 聊天的方式调用
    // completions 完成问答
    // create 创建
    try {
        const response = await client.chat.completions.create({
            model: 'gpt-4o',
            // 对话列表
            messages: [
                {
                    role: 'user', //角色
                    content: [
                        {
                            type: 'text',
                            'text': '请描述以下图片的内容'
                        },
                        {
                            type: 'image_url',
                            "image_url": {
                                "url": "任意图片地址"
                            }
                        }
                    ]
                }
            ],
            max_tokens: 300
        })
        console.log(response.choices[0].message.content)

    }
    catch (err) {
        console.log(err)
    }
}

main()
一起来抓细节

这里面有两个细节,一个是try catch, 另一个是 dotenv,我们来给大家介绍一下

try catch

try catch 是 JavaScript 中的错误处理机制。try 块包含可能会抛出异常的代码,而 catch 块则处理这些异常。如果 try 块中的代码抛出异常(使用 throw 语句),程序将立即停止执行 try 块中的剩余代码,并跳转到 catch 块。

  • try:包含可能会出错的代码。
  • catch:当 try 块中的代码抛出异常时,catch 块将捕获该异常,并允许你处理它。

在上面的代码中,try catch 用于处理 client.chat.completions.create 方法调用时可能发生的任何错误。例如,如果 API 请求失败(可能是因为网络问题、API 密钥无效或请求参数不正确),catch 块将捕获异常并打印错误信息。

dotenv

dotenv 是一个零依赖的模块,它加载 .env 文件中的环境变量到 process.env.env 文件通常包含敏感信息,如 API 密钥、数据库密码等,这些信息不应该硬编码到源代码中。

使用 dotenv 的步骤:

  1. 在项目根目录创建一个 .env 文件。
  2. 在 .env 文件中添加环境变量,格式为 KEY=value
  3. 在你的 JavaScript 文件中,使用 require('dotenv').config() 来加载这些环境变量。

在上面的代码中,dotenv.config() 被调用以加载 .env 文件中的环境变量。然后,代码从 process.env 中读取 OPENAI_API_KEY 环境变量,并将其用于实例化 OpenAI 客户端。 不用它的话,你的openai,可能就被别人用爬虫爬走了,然后全部使用完啦,openai是需要付费使用的!!

END

通过本文的介绍,你已经学会了如何使用 Node.js 和 OpenAI SDK 构建一个多模态应用。从项目的初始化到环境变量的管理,再到实际调用 OpenAI API 的过程,每一步都经过了详细的解释和演示。相信大家一定都有所收获,可以自己再去深入了解,让我们一起拥抱大模型!!