From 84e98780b464aa07ac65709b7b35c171e49c7e5e Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 18 Aug 2023 21:20:54 +0000 Subject: [PATCH 1/3] fix(deps): update dependency openai to v4 --- package-lock.json | 207 +++++++++++++++++++++++++++++++++++----------- package.json | 2 +- 2 files changed, 162 insertions(+), 47 deletions(-) diff --git a/package-lock.json b/package-lock.json index 3099d64..c2a4454 100644 --- a/package-lock.json +++ b/package-lock.json @@ -12,7 +12,7 @@ "@nestjs/common": "^10.0.0", "@nestjs/core": "^10.0.0", "@nestjs/platform-express": "^10.0.0", - "openai": "^3.2.1", + "openai": "^4.0.0", "reflect-metadata": "^0.1.13", "rxjs": "^7.2.0", "standard-version": "^9.5.0" @@ -2221,8 +2221,29 @@ "node_modules/@types/node": { "version": "18.17.6", "resolved": "https://registry.npmjs.org/@types/node/-/node-18.17.6.tgz", - "integrity": "sha512-fGmT/P7z7ecA6bv/ia5DlaWCH4YeZvAQMNpUhrJjtAhOhZfoxS1VLUgU2pdk63efSjQaOJWdXMuAJsws+8I6dg==", - "dev": true + "integrity": "sha512-fGmT/P7z7ecA6bv/ia5DlaWCH4YeZvAQMNpUhrJjtAhOhZfoxS1VLUgU2pdk63efSjQaOJWdXMuAJsws+8I6dg==" + }, + "node_modules/@types/node-fetch": { + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.6.4.tgz", + "integrity": "sha512-1ZX9fcN4Rvkvgv4E6PAY5WXUFWFcRWxZa3EW83UjycOB9ljJCedb2CupIP4RZMEwF/M3eTcCihbBRgwtGbg5Rg==", + "dependencies": { + "@types/node": "*", + "form-data": "^3.0.0" + } + }, + "node_modules/@types/node-fetch/node_modules/form-data": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", + "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } }, "node_modules/@types/normalize-package-data": { "version": "2.4.1", @@ -2641,6 +2662,17 @@ "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", "dev": true }, + "node_modules/abort-controller": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", + "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", + "dependencies": { + "event-target-shim": "^5.0.0" + }, + "engines": { + "node": ">=6.5" + } + }, "node_modules/accepts": { "version": "1.3.8", "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", @@ -2697,6 +2729,17 @@ "resolved": "https://registry.npmjs.org/add-stream/-/add-stream-1.0.0.tgz", "integrity": "sha512-qQLMr+8o0WC4FZGQTcJiKBVC59JylcPSrTtk6usvmIDFUOCKegapy1VHQwRbFMOFyb/inzUVqHs+eMYKDM1YeQ==" }, + "node_modules/agentkeepalive": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.5.0.tgz", + "integrity": "sha512-5GG/5IbQQpC9FpkRGsSvZI5QYeSCzlJHdpBQntCsuTOxhKD8lqKhrleg2Yi7yvMIf82Ycmmqln9U8V9qwEiJew==", + "dependencies": { + "humanize-ms": "^1.2.1" + }, + "engines": { + "node": ">= 8.0.0" + } + }, "node_modules/ajv": { "version": "8.12.0", "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", @@ -2862,14 +2905,6 @@ "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" }, - "node_modules/axios": { - "version": "0.26.1", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.26.1.tgz", - "integrity": "sha512-fPwcX4EvnSHuInCMItEhAGnaSEXRBjtzh9fOtsE6E1G6p7vl7edEeZe11QHf18+6+9gR5PbKV/sGKNaD8YaMeA==", - "dependencies": { - "follow-redirects": "^1.14.8" - } - }, "node_modules/babel-jest": { "version": "29.6.2", "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.6.2.tgz", @@ -2966,6 +3001,11 @@ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" }, + "node_modules/base-64": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/base-64/-/base-64-0.1.0.tgz", + "integrity": "sha512-Y5gU45svrR5tI2Vt/X9GPd3L0HNIKzGu202EjxrXMpuc2V2CiKgemAbUUsqYmZJvPtCXoUKjNZwBJzsNScUbXA==" + }, "node_modules/base64-js": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", @@ -3309,6 +3349,14 @@ "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", "dev": true }, + "node_modules/charenc": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/charenc/-/charenc-0.0.2.tgz", + "integrity": "sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA==", + "engines": { + "node": "*" + } + }, "node_modules/chokidar": { "version": "3.5.3", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", @@ -3986,6 +4034,14 @@ "node": ">= 8" } }, + "node_modules/crypt": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/crypt/-/crypt-0.0.2.tgz", + "integrity": "sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow==", + "engines": { + "node": "*" + } + }, "node_modules/dargs": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/dargs/-/dargs-7.0.0.tgz", @@ -4306,6 +4362,15 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, + "node_modules/digest-fetch": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/digest-fetch/-/digest-fetch-1.3.0.tgz", + "integrity": "sha512-CGJuv6iKNM7QyZlM2T3sPAdZWd/p9zQiRNS9G+9COUCwzWFTs0Xp8NF5iePx7wtvhDykReiRRrSeNb4oMmB8lA==", + "dependencies": { + "base-64": "^0.1.0", + "md5": "^2.3.0" + } + }, "node_modules/dir-glob": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", @@ -4789,6 +4854,14 @@ "node": ">= 0.6" } }, + "node_modules/event-target-shim": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", + "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", + "engines": { + "node": ">=6" + } + }, "node_modules/eventemitter3": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz", @@ -5151,25 +5224,6 @@ "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", "dev": true }, - "node_modules/follow-redirects": { - "version": "1.15.2", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", - "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/RubenVerborgh" - } - ], - "engines": { - "node": ">=4.0" - }, - "peerDependenciesMeta": { - "debug": { - "optional": true - } - } - }, "node_modules/fork-ts-checker-webpack-plugin": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-8.0.0.tgz", @@ -5198,17 +5252,21 @@ "webpack": "^5.11.0" } }, - "node_modules/form-data": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", - "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "node_modules/form-data-encoder": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/form-data-encoder/-/form-data-encoder-1.7.2.tgz", + "integrity": "sha512-qfqtYan3rxrnCk1VYaA4H+Ms9xdpPqvLZa6xmMgFvhO32x7/3J/ExcTd6qpxM0vH2GdMI+poehyBZvqfMTto8A==" + }, + "node_modules/formdata-node": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/formdata-node/-/formdata-node-4.4.1.tgz", + "integrity": "sha512-0iirZp3uVDjVGt9p49aTaqjk84TrglENEDuqfdlZQ1roC9CWlPk6Avf8EEnZNcAqPonwkG35x4n3ww/1THYAeQ==", "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" + "node-domexception": "1.0.0", + "web-streams-polyfill": "4.0.0-beta.3" }, "engines": { - "node": ">= 6" + "node": ">= 12.20" } }, "node_modules/forwarded": { @@ -5685,6 +5743,14 @@ "node": ">=10.17.0" } }, + "node_modules/humanize-ms": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz", + "integrity": "sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==", + "dependencies": { + "ms": "^2.0.0" + } + }, "node_modules/husky": { "version": "8.0.3", "resolved": "https://registry.npmjs.org/husky/-/husky-8.0.3.tgz", @@ -5886,6 +5952,11 @@ "node": ">=8" } }, + "node_modules/is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" + }, "node_modules/is-core-module": { "version": "2.12.1", "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.12.1.tgz", @@ -7588,6 +7659,16 @@ "node": ">= 12" } }, + "node_modules/md5": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/md5/-/md5-2.3.0.tgz", + "integrity": "sha512-T1GITYmFaKuO91vxyoQMFETst+O71VUPEU3ze5GNzDm0OWdP8v1ziTaAEPUr/3kLsY3Sftgz242A1SetQiDL7g==", + "dependencies": { + "charenc": "0.0.2", + "crypt": "0.0.2", + "is-buffer": "~1.1.6" + } + }, "node_modules/media-typer": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", @@ -7920,8 +8001,7 @@ "node_modules/ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, "node_modules/multer": { "version": "1.4.4-lts.1", @@ -7971,6 +8051,24 @@ "integrity": "sha512-AGK2yQKIjRuqnc6VkX2Xj5d+QW8xZ87pa1UK6yA6ouUyuxfHuMP6umE5QK7UmTeOAymo+Zx1Fxiuw9rVx8taHQ==", "dev": true }, + "node_modules/node-domexception": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz", + "integrity": "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/jimmywarting" + }, + { + "type": "github", + "url": "https://paypal.me/jimmywarting" + } + ], + "engines": { + "node": ">=10.5.0" + } + }, "node_modules/node-emoji": { "version": "1.11.0", "resolved": "https://registry.npmjs.org/node-emoji/-/node-emoji-1.11.0.tgz", @@ -8116,12 +8214,21 @@ } }, "node_modules/openai": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/openai/-/openai-3.3.0.tgz", - "integrity": "sha512-uqxI/Au+aPRnsaQRe8CojU0eCR7I0mBiKjD3sNMzY6DaC1ZVrc85u98mtJW6voDug8fgGN+DIZmTDxTthxb7dQ==", - "dependencies": { - "axios": "^0.26.0", - "form-data": "^4.0.0" + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/openai/-/openai-4.0.0.tgz", + "integrity": "sha512-UHv70gIw20pxu9tiUueE9iS+4U4eTGiTgQr+zlJ5aX4oj6LUUp+7mBn0xAqilawftwUB/biohPth2vcZFmoNYw==", + "dependencies": { + "@types/node": "^18.11.18", + "@types/node-fetch": "^2.6.4", + "abort-controller": "^3.0.0", + "agentkeepalive": "^4.2.1", + "digest-fetch": "^1.3.0", + "form-data-encoder": "1.7.2", + "formdata-node": "^4.3.2", + "node-fetch": "^2.6.7" + }, + "bin": { + "openai": "bin/cli" } }, "node_modules/optionator": { @@ -10493,6 +10600,14 @@ "defaults": "^1.0.3" } }, + "node_modules/web-streams-polyfill": { + "version": "4.0.0-beta.3", + "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-4.0.0-beta.3.tgz", + "integrity": "sha512-QW95TCTaHmsYfHDybGMwO5IJIM93I/6vTRk+daHTWFPhwh+C8Cg7j7XyKrwrj8Ib6vYXe0ocYNrmzY4xAAN6ug==", + "engines": { + "node": ">= 14" + } + }, "node_modules/webidl-conversions": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", diff --git a/package.json b/package.json index d740768..7878975 100644 --- a/package.json +++ b/package.json @@ -44,7 +44,7 @@ "@nestjs/common": "^10.0.0", "@nestjs/core": "^10.0.0", "@nestjs/platform-express": "^10.0.0", - "openai": "^3.2.1", + "openai": "^4.0.0", "reflect-metadata": "^0.1.13", "rxjs": "^7.2.0", "standard-version": "^9.5.0" From eb819c39c4fecdb333474445b41e594f81f9f1ab Mon Sep 17 00:00:00 2001 From: Julien Prugne Date: Sun, 20 Aug 2023 08:55:16 +0200 Subject: [PATCH 2/3] feat!: upgrade to openai 4.x --- .github/workflows/coverage.yml | 7 +++-- src/open-ai-client.provider.ts | 10 +++--- src/open-ai.service.ts | 14 ++++----- test/open-ai-client.provider.spec.ts | 2 +- test/open-ai.service.spec.ts | 46 ++++++++++++++-------------- 5 files changed, 40 insertions(+), 39 deletions(-) diff --git a/.github/workflows/coverage.yml b/.github/workflows/coverage.yml index e07dfac..fdaa598 100644 --- a/.github/workflows/coverage.yml +++ b/.github/workflows/coverage.yml @@ -1,11 +1,11 @@ -name: Test and coverage +name: Quality Analysis on: pull_request: branches: [main] jobs: - build: + build_lint_and_test: runs-on: ubuntu-latest steps: @@ -17,6 +17,9 @@ jobs: - name: build run: npm run build + - name: lint + run: npm run lint + - name: test run: npm run test:cov env: diff --git a/src/open-ai-client.provider.ts b/src/open-ai-client.provider.ts index e27a8c9..cc4d9d2 100644 --- a/src/open-ai-client.provider.ts +++ b/src/open-ai-client.provider.ts @@ -1,4 +1,4 @@ -import { Configuration, OpenAIApi } from 'openai'; +import OpenAIApi from 'openai'; import { Inject } from '@nestjs/common'; import { CONFIG_OPTIONS, OpenAIModuleOptions } from './options.interface'; @@ -9,10 +9,8 @@ export class OpenAIClientProvider { @Inject(CONFIG_OPTIONS) private readonly config: OpenAIModuleOptions, ) { - this.openai = new OpenAIApi( - new Configuration({ - apiKey: config.apiKey, - }), - ); + this.openai = new OpenAIApi({ + apiKey: config.apiKey, + }); } } diff --git a/src/open-ai.service.ts b/src/open-ai.service.ts index 07a7812..f8136b7 100644 --- a/src/open-ai.service.ts +++ b/src/open-ai.service.ts @@ -1,7 +1,7 @@ import { Inject, Injectable } from '@nestjs/common'; import { Message } from './message.dto'; import { OpenAIClientProvider } from './open-ai-client.provider'; -import { OpenAIApi } from 'openai'; +import OpenAIApi from 'openai'; import { CONFIG_OPTIONS } from './options.interface'; import { Role } from './roles.enum'; import { GenerateImageInput } from './generate-image-input.interface'; @@ -39,7 +39,7 @@ export class OpenAIService { name: userId, }, ]; - const completion = await this.openai.createChatCompletion({ + const completion = await this.openai.chat.completions.create({ model: this.config.model, user: userId, messages, @@ -47,7 +47,7 @@ export class OpenAIService { n: numberOfCompletions, }); - return completion.data.choices.map((choice) => choice.message.content); + return completion.choices.map((choice) => choice.message.content); } async generateImagePngBuffers({ @@ -56,7 +56,7 @@ export class OpenAIService { size = '512x512', user, }: GenerateImageInput): Promise { - const { data } = await this.openai.createImage({ + const { data } = await this.openai.images.generate({ prompt, n, size, @@ -64,7 +64,7 @@ export class OpenAIService { response_format: 'b64_json', }); - return data.data.map((img) => Buffer.from(img.b64_json, 'base64')); + return data.map((img) => Buffer.from(img.b64_json, 'base64')); } async generateImageUrls({ @@ -73,7 +73,7 @@ export class OpenAIService { size = '512x512', user, }: GenerateImageInput): Promise { - const { data } = await this.openai.createImage({ + const { data } = await this.openai.images.generate({ prompt, n, size, @@ -81,6 +81,6 @@ export class OpenAIService { response_format: 'url', }); - return data.data.map((img) => img.url); + return data.map((img) => img.url); } } diff --git a/test/open-ai-client.provider.spec.ts b/test/open-ai-client.provider.spec.ts index 30cc64b..6aaea03 100644 --- a/test/open-ai-client.provider.spec.ts +++ b/test/open-ai-client.provider.spec.ts @@ -1,5 +1,5 @@ import { OpenAIClientProvider } from '../src/open-ai-client.provider'; -import { OpenAIApi } from 'openai'; +import OpenAIApi from 'openai'; describe('OpenAiClientProvider', () => { it('should provide an instanced openai client', () => { diff --git a/test/open-ai.service.spec.ts b/test/open-ai.service.spec.ts index a6cc94d..ec3600c 100644 --- a/test/open-ai.service.spec.ts +++ b/test/open-ai.service.spec.ts @@ -1,6 +1,6 @@ import { OpenAIService } from '../src'; import { OpenAIClientProvider } from '../src/open-ai-client.provider'; -import { OpenAIApi } from 'openai'; +import OpenAIApi from 'openai'; import { Role } from '../src'; import { Models } from '../src'; @@ -10,26 +10,28 @@ describe('OpenAiService', () => { beforeEach(() => { openAiClientProviderMock = { openai: { - createChatCompletion: jest.fn().mockResolvedValueOnce({ - data: { - choices: [ - { - message: { - content: 'response', + chat: { + completions: { + create: jest.fn().mockResolvedValueOnce({ + choices: [ + { + message: { + content: 'response', + }, }, - }, - ], + ], + }), }, - }), - createImage: jest.fn().mockResolvedValue({ - data: { + }, + images: { + generate: jest.fn().mockResolvedValue({ data: [ { url: 'https://webeleon.dev', }, ], - }, - }), + }), + }, } as unknown as OpenAIApi, } as OpenAIClientProvider; service = new OpenAIService( @@ -54,7 +56,7 @@ describe('OpenAiService', () => { expect(response).toEqual(['response']); expect( - openAiClientProviderMock.openai.createChatCompletion, + openAiClientProviderMock.openai.chat.completions.create, ).toHaveBeenCalledWith({ model: 'gpt-3.5-turbo', user: 'user-id', @@ -87,16 +89,14 @@ describe('OpenAiService', () => { }); it('should generate image buffers', async () => { - openAiClientProviderMock.openai.createImage = jest + openAiClientProviderMock.openai.images.generate = jest .fn() .mockResolvedValue({ - data: { - data: [ - { - b64_json: Buffer.from('coco').toString('base64'), - }, - ], - }, + data: [ + { + b64_json: Buffer.from('coco').toString('base64'), + }, + ], }); const images = await service.generateImagePngBuffers({ From 0940c25788c5a9dc683662762d43455301e11dd2 Mon Sep 17 00:00:00 2001 From: Julien Prugne Date: Sun, 20 Aug 2023 08:56:13 +0200 Subject: [PATCH 3/3] docs: regenerate doc --- docs/classes/Message.html | 8 ++++---- docs/classes/OpenAIService.html | 18 +++++++++--------- docs/classes/OpenAiModule.html | 6 +++--- docs/enums/Models.html | 6 +++--- docs/enums/Role.html | 8 ++++---- docs/interfaces/OpenAIModuleAsyncOptions.html | 8 ++++---- docs/interfaces/OpenAIModuleOptions.html | 6 +++--- docs/variables/CONFIG_OPTIONS.html | 2 +- 8 files changed, 31 insertions(+), 31 deletions(-) diff --git a/docs/classes/Message.html b/docs/classes/Message.html index 4e43c81..ecaa1ba 100644 --- a/docs/classes/Message.html +++ b/docs/classes/Message.html @@ -20,7 +20,7 @@

Hierarchy

  • Message
+
  • Defined in message.dto.ts:3
  • @@ -50,17 +50,17 @@

    Properties

    content: string
    +
  • Defined in message.dto.ts:5
  • name?: string
    +
  • Defined in message.dto.ts:6
  • role: Role
    +
  • Defined in message.dto.ts:4
  • Returns Promise<string[]>

    +
  • Defined in open-ai.service.ts:19
    • @@ -116,7 +116,7 @@

      Parameters

      __namedParameters: GenerateImageInput

    Returns Promise<Buffer[]>

    +
  • Defined in open-ai.service.ts:53
    • @@ -129,7 +129,7 @@

      Parameters

      __namedParameters: GenerateImageInput

    Returns Promise<string[]>

    +
  • Defined in open-ai.service.ts:70
  • Returns DynamicModule

    +
  • Defined in open-ai.module.ts:27
  • +
  • Defined in models.enum.ts:2
  • +
  • Defined in roles.enum.ts:2
  • +
  • Defined in options.interface.ts:11
  • +
  • Defined in options.interface.ts:1