From 0c2660dd4c560ff7dcfedaa61256a1467ea2d908 Mon Sep 17 00:00:00 2001 From: Mikel Calvo Date: Thu, 27 Jun 2024 19:34:05 +0200 Subject: [PATCH] Migrated openai to v4 Using the official migration guide: https://github.com/openai/openai-node/discussions/217 --- package-lock.json | 50 +++++++++++++++++++++++++++++++++----- package.json | 2 +- src/handlers/dalle.ts | 4 +-- src/handlers/moderation.ts | 2 +- src/providers/openai.ts | 10 ++++---- 5 files changed, 53 insertions(+), 15 deletions(-) diff --git a/package-lock.json b/package-lock.json index ad1ecbee..57bcc611 100644 --- a/package-lock.json +++ b/package-lock.json @@ -15,7 +15,7 @@ "fetch-blob": "^4.0.0", "ffmpeg": "^0.0.4", "langchain": "^0.0.156", - "openai": "^3.3.0", + "openai": "^4.52.1", "picocolors": "^1.0.0", "qrcode": "^1.5.3", "whatsapp-web.js": "https://github.com/Julzk/whatsapp-web.js/tarball/jkr_hotfix_7" @@ -493,6 +493,8 @@ "version": "0.26.1", "resolved": "https://registry.npmjs.org/axios/-/axios-0.26.1.tgz", "integrity": "sha512-fPwcX4EvnSHuInCMItEhAGnaSEXRBjtzh9fOtsE6E1G6p7vl7edEeZe11QHf18+6+9gR5PbKV/sGKNaD8YaMeA==", + "optional": true, + "peer": true, "dependencies": { "follow-redirects": "^1.14.8" } @@ -1250,6 +1252,8 @@ "url": "https://github.com/sponsors/RubenVerborgh" } ], + "optional": true, + "peer": true, "engines": { "node": ">=4.0" }, @@ -2500,12 +2504,40 @@ } }, "node_modules/openai": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/openai/-/openai-3.3.0.tgz", - "integrity": "sha512-uqxI/Au+aPRnsaQRe8CojU0eCR7I0mBiKjD3sNMzY6DaC1ZVrc85u98mtJW6voDug8fgGN+DIZmTDxTthxb7dQ==", + "version": "4.52.1", + "resolved": "https://registry.npmjs.org/openai/-/openai-4.52.1.tgz", + "integrity": "sha512-kv2hevAWZZ3I/vd2t8znGO2rd8wkowncsfcYpo8i+wU9ML+JEcdqiViANXXjWWGjIhajFNixE6gOY1fEgqILAg==", + "license": "Apache-2.0", "dependencies": { - "axios": "^0.26.0", - "form-data": "^4.0.0" + "@types/node": "^18.11.18", + "@types/node-fetch": "^2.6.4", + "abort-controller": "^3.0.0", + "agentkeepalive": "^4.2.1", + "form-data-encoder": "1.7.2", + "formdata-node": "^4.3.2", + "node-fetch": "^2.6.7", + "web-streams-polyfill": "^3.2.1" + }, + "bin": { + "openai": "bin/cli" + } + }, + "node_modules/openai/node_modules/@types/node": { + "version": "18.19.39", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.39.tgz", + "integrity": "sha512-nPwTRDKUctxw3di5b4TfT3I0sWDiWoPQCZjXhvdkINntwr8lcoVCKsTgnXeRubKIlfnV+eN/HYk6Jb40tbcEAQ==", + "license": "MIT", + "dependencies": { + "undici-types": "~5.26.4" + } + }, + "node_modules/openai/node_modules/web-streams-polyfill": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.3.3.tgz", + "integrity": "sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==", + "license": "MIT", + "engines": { + "node": ">= 8" } }, "node_modules/openapi-types": { @@ -3225,6 +3257,12 @@ "ieee754": "^1.1.13" } }, + "node_modules/undici-types": { + "version": "5.26.5", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", + "license": "MIT" + }, "node_modules/universalify": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", diff --git a/package.json b/package.json index 343b65f6..e192358e 100644 --- a/package.json +++ b/package.json @@ -16,7 +16,7 @@ "fetch-blob": "^4.0.0", "ffmpeg": "^0.0.4", "langchain": "^0.0.156", - "openai": "^3.3.0", + "openai": "^4.52.1", "picocolors": "^1.0.0", "qrcode": "^1.5.3", "whatsapp-web.js": "https://github.com/Julzk/whatsapp-web.js/tarball/jkr_hotfix_7" diff --git a/src/handlers/dalle.ts b/src/handlers/dalle.ts index 0d15fa67..06ab2658 100644 --- a/src/handlers/dalle.ts +++ b/src/handlers/dalle.ts @@ -1,7 +1,7 @@ import { MessageMedia } from "whatsapp-web.js"; import { openai } from "../providers/openai"; import { aiConfig } from "../handlers/ai-config"; -import { CreateImageRequestSizeEnum } from "openai"; +import OpenAI from "openai"; import config from "../config"; import * as cli from "../cli/ui"; @@ -25,7 +25,7 @@ const handleMessageDALLE = async (message: any, prompt: any) => { } // Send the prompt to the API - const response = await openai.createImage({ + const response = await openai.images.generate({ prompt: prompt, n: 1, size: aiConfig.dalle.size as CreateImageRequestSizeEnum, diff --git a/src/handlers/moderation.ts b/src/handlers/moderation.ts index 0875b791..1f6860f5 100644 --- a/src/handlers/moderation.ts +++ b/src/handlers/moderation.ts @@ -10,7 +10,7 @@ import { openai } from "../providers/openai"; */ const moderateIncomingPrompt = async (prompt: string) => { cli.print("[MODERATION] Checking user prompt..."); - const moderationResponse = await openai.createModeration({ + const moderationResponse = await openai.moderations.create({ input: prompt }); diff --git a/src/providers/openai.ts b/src/providers/openai.ts index 3c989bf1..64021591 100644 --- a/src/providers/openai.ts +++ b/src/providers/openai.ts @@ -3,7 +3,7 @@ import os from "os"; import path from "path"; import { randomUUID } from "crypto"; import { ChatGPTAPI } from "chatgpt"; -import { Configuration, OpenAIApi } from "openai"; +import OpenAI from "openai"; import ffmpeg from "fluent-ffmpeg"; import { blobFromSync, File } from "fetch-blob/from.js"; @@ -13,7 +13,7 @@ import { getConfig } from "../handlers/ai-config"; export let chatgpt: ChatGPTAPI; // OpenAI Client (DALL-E) -export let openai: OpenAIApi; +export let openai: OpenAI; export function initOpenAI() { chatgpt = new ChatGPTAPI({ @@ -26,10 +26,10 @@ export function initOpenAI() { } }); - openai = new OpenAIApi( - new Configuration({ + openai = new OpenAI( + { apiKey: getConfig("gpt", "apiKey") - }) + } ); }