diff --git a/.github/config/nodejs-dev.jsonc b/.github/config/nodejs-dev.jsonc index d1c6f6f801..57cefd057b 100644 --- a/.github/config/nodejs-dev.jsonc +++ b/.github/config/nodejs-dev.jsonc @@ -185,6 +185,7 @@ "functions/v2/tips/retry", "functions/v2/typed/googlechatbot", "functions/v2/typed/greeting", + "genai", // parent directory "generative-ai/snippets", "healthcare/consent", "healthcare/datasets", diff --git a/.github/config/nodejs.jsonc b/.github/config/nodejs.jsonc index 65d19696e6..4e3cb6de8e 100644 --- a/.github/config/nodejs.jsonc +++ b/.github/config/nodejs.jsonc @@ -70,6 +70,7 @@ "functions/http/uploadFile", // no tests exist "functions/log", // parent directory "functions/pubsub", // parent directory + "genai", // parent directory "memorystore/redis", // parent directory "recaptcha_enterprise/demosite/app", // no tests exist diff --git a/genai/bounding-box/package.json b/genai/bounding-box/package.json new file mode 100644 index 0000000000..5118da2e42 --- /dev/null +++ b/genai/bounding-box/package.json @@ -0,0 +1,22 @@ +{ + "name": "nodejs-genai-bounding-box", + "private": true, + "license": "Apache-2.0", + "author": "Google LLC", + "engines": { + "node": ">=16.0.0" + }, + "scripts": { + "test": "c8 mocha -p -j 2 --timeout 2400000 test/*.test.js" + }, + "dependencies": { + "@google/genai": "1.30.0", + "canvas": "^3.2.0", + "node-fetch": "^2.7.0" + }, + "devDependencies": { + "c8": "^10.0.0", + "chai": "^4.5.0", + "mocha": "^10.0.0" + } +} diff --git a/genai/test/boundingbox-with-txt-img.test.js b/genai/bounding-box/test/boundingbox-with-txt-img.test.js similarity index 93% rename from genai/test/boundingbox-with-txt-img.test.js rename to genai/bounding-box/test/boundingbox-with-txt-img.test.js index fb2950e150..05df7fb73b 100644 --- a/genai/test/boundingbox-with-txt-img.test.js +++ b/genai/bounding-box/test/boundingbox-with-txt-img.test.js @@ -18,7 +18,7 @@ const {assert} = require('chai'); const {describe, it} = require('mocha'); const projectId = process.env.CAIP_PROJECT_ID; -const sample = require('../bounding-box/boundingbox-with-txt-img'); +const sample = require('../boundingbox-with-txt-img'); describe('boundingbox-with-txt-img', async () => { it('should return the bounding box', async function () { diff --git a/genai/content-cache/package.json b/genai/content-cache/package.json new file mode 100644 index 0000000000..5ab6dc42b3 --- /dev/null +++ b/genai/content-cache/package.json @@ -0,0 +1,21 @@ +{ + "name": "nodejs-genai-content-cache", + "private": true, + "license": "Apache-2.0", + "author": "Google LLC", + "engines": { + "node": ">=16.0.0" + }, + "scripts": { + "test": "c8 mocha -p -j 2 --timeout 2400000 test/*.test.js" + }, + "dependencies": { + "@google/genai": "1.30.0", + "luxon": "^3.7.1" + }, + "devDependencies": { + "c8": "^10.0.0", + "chai": "^4.5.0", + "mocha": "^10.0.0" + } +} diff --git a/genai/test/content-cache-create-use-update-delete.test.js b/genai/content-cache/test/content-cache-create-use-update-delete.test.js similarity index 82% rename from genai/test/content-cache-create-use-update-delete.test.js rename to genai/content-cache/test/content-cache-create-use-update-delete.test.js index f12e7bd73e..94a1de6a38 100644 --- a/genai/test/content-cache-create-use-update-delete.test.js +++ b/genai/content-cache/test/content-cache-create-use-update-delete.test.js @@ -19,11 +19,11 @@ const {describe, it} = require('mocha'); const projectId = process.env.CAIP_PROJECT_ID; -const createSample = require('../content-cache/content-cache-create-with-txt-gcs-pdf.js'); -const useSample = require('../content-cache/content-cache-use-with-txt.js'); -const updateSample = require('../content-cache/content-cache-update.js'); -const deleteSample = require('../content-cache/content-cache-delete.js'); -const {delay} = require('./util'); +const createSample = require('../content-cache-create-with-txt-gcs-pdf.js'); +const useSample = require('../content-cache-use-with-txt.js'); +const updateSample = require('../content-cache-update.js'); +const deleteSample = require('../content-cache-delete.js'); +const {delay} = require('../../test/util'); describe('content-cache-create-use-update-delete', async function () { this.timeout(600000); diff --git a/genai/test/content-cache-list.test.js b/genai/content-cache/test/content-cache-list.test.js similarity index 93% rename from genai/test/content-cache-list.test.js rename to genai/content-cache/test/content-cache-list.test.js index 079580431b..c5f7d1cfcb 100644 --- a/genai/test/content-cache-list.test.js +++ b/genai/content-cache/test/content-cache-list.test.js @@ -18,7 +18,7 @@ const {assert} = require('chai'); const {describe, it} = require('mocha'); const projectId = process.env.CAIP_PROJECT_ID; -const sample = require('../content-cache/content-cache-list.js'); +const sample = require('../content-cache-list.js'); describe('contentcache-list', async () => { it('should return object with names of catches', async () => { diff --git a/genai/controlled-generation/package.json b/genai/controlled-generation/package.json new file mode 100644 index 0000000000..08dd02ee9c --- /dev/null +++ b/genai/controlled-generation/package.json @@ -0,0 +1,20 @@ +{ + "name": "nodejs-genai-controlled-generation", + "private": true, + "license": "Apache-2.0", + "author": "Google LLC", + "engines": { + "node": ">=16.0.0" + }, + "scripts": { + "test": "c8 mocha -p -j 2 --timeout 2400000 test/*.test.js" + }, + "dependencies": { + "@google/genai": "1.30.0" + }, + "devDependencies": { + "c8": "^10.0.0", + "chai": "^4.5.0", + "mocha": "^10.0.0" + } +} diff --git a/genai/test/ctrlgen-with-class-schema.test.js b/genai/controlled-generation/test/ctrlgen-with-class-schema.test.js similarity index 92% rename from genai/test/ctrlgen-with-class-schema.test.js rename to genai/controlled-generation/test/ctrlgen-with-class-schema.test.js index 10acd5d676..fe90c51d66 100644 --- a/genai/test/ctrlgen-with-class-schema.test.js +++ b/genai/controlled-generation/test/ctrlgen-with-class-schema.test.js @@ -18,7 +18,7 @@ const {assert} = require('chai'); const {describe, it} = require('mocha'); const projectId = process.env.CAIP_PROJECT_ID; -const sample = require('../controlled-generation/ctrlgen-with-class-schema.js'); +const sample = require('../ctrlgen-with-class-schema.js'); describe('ctrlgen-with-class-schema', () => { it('should generate text content in Json', async function () { diff --git a/genai/test/ctrlgen-with-enum-class-schema.test.js b/genai/controlled-generation/test/ctrlgen-with-enum-class-schema.test.js similarity index 89% rename from genai/test/ctrlgen-with-enum-class-schema.test.js rename to genai/controlled-generation/test/ctrlgen-with-enum-class-schema.test.js index ddf581b081..98de1d5ef5 100644 --- a/genai/test/ctrlgen-with-enum-class-schema.test.js +++ b/genai/controlled-generation/test/ctrlgen-with-enum-class-schema.test.js @@ -18,8 +18,8 @@ const {assert} = require('chai'); const {describe, it} = require('mocha'); const projectId = process.env.CAIP_PROJECT_ID; -const sample = require('../controlled-generation/ctrlgen-with-enum-class-schema.js'); -const {delay} = require('./util'); +const sample = require('../ctrlgen-with-enum-class-schema.js'); +const {delay} = require('../../test/util'); describe('ctrlgen-with-enum-class-schema', () => { it('should generate text content matching enum schema', async function () { diff --git a/genai/test/ctrlgen-with-enum-schema.test.js b/genai/controlled-generation/test/ctrlgen-with-enum-schema.test.js similarity index 89% rename from genai/test/ctrlgen-with-enum-schema.test.js rename to genai/controlled-generation/test/ctrlgen-with-enum-schema.test.js index df51778225..26811bc797 100644 --- a/genai/test/ctrlgen-with-enum-schema.test.js +++ b/genai/controlled-generation/test/ctrlgen-with-enum-schema.test.js @@ -18,8 +18,8 @@ const {assert} = require('chai'); const {describe, it} = require('mocha'); const projectId = process.env.CAIP_PROJECT_ID; -const sample = require('../controlled-generation/ctrlgen-with-enum-schema.js'); -const {delay} = require('./util'); +const sample = require('../ctrlgen-with-enum-schema.js'); +const {delay} = require('../../test/util'); describe('ctrlgen-with-enum-schema', async () => { it('should generate text content in Json', async function () { diff --git a/genai/test/ctrlgen-with-nested-class-schema.test.js b/genai/controlled-generation/test/ctrlgen-with-nested-class-schema.test.js similarity index 89% rename from genai/test/ctrlgen-with-nested-class-schema.test.js rename to genai/controlled-generation/test/ctrlgen-with-nested-class-schema.test.js index 8bb16e3f62..59fe3b60d0 100644 --- a/genai/test/ctrlgen-with-nested-class-schema.test.js +++ b/genai/controlled-generation/test/ctrlgen-with-nested-class-schema.test.js @@ -18,8 +18,8 @@ const {assert} = require('chai'); const {describe, it} = require('mocha'); const projectId = process.env.CAIP_PROJECT_ID; -const sample = require('../controlled-generation/ctrlgen-with-nested-class-schema.js'); -const {delay} = require('./util'); +const sample = require('../ctrlgen-with-nested-class-schema.js'); +const {delay} = require('../../test/util'); describe('ctrlgen-with-nested-class-schema', () => { it('should generate text content using nested schema', async function () { diff --git a/genai/test/ctrlgen-with-nullable-schema.test.js b/genai/controlled-generation/test/ctrlgen-with-nullable-schema.test.js similarity index 92% rename from genai/test/ctrlgen-with-nullable-schema.test.js rename to genai/controlled-generation/test/ctrlgen-with-nullable-schema.test.js index dfb892ee10..47f2dfe0ea 100644 --- a/genai/test/ctrlgen-with-nullable-schema.test.js +++ b/genai/controlled-generation/test/ctrlgen-with-nullable-schema.test.js @@ -18,7 +18,7 @@ const {assert} = require('chai'); const {describe, it} = require('mocha'); const projectId = process.env.CAIP_PROJECT_ID; -const sample = require('../controlled-generation/ctrlgen-with-nullable-schema.js'); +const sample = require('../ctrlgen-with-nullable-schema.js'); describe('ctrlgen-with-nullable-schema', () => { it('should generate text content using nullable schema', async function () { diff --git a/genai/test/ctrlgen-with-resp-schema.test.js b/genai/controlled-generation/test/ctrlgen-with-resp-schema.test.js similarity index 92% rename from genai/test/ctrlgen-with-resp-schema.test.js rename to genai/controlled-generation/test/ctrlgen-with-resp-schema.test.js index 3e0a4e2608..a20208fa91 100644 --- a/genai/test/ctrlgen-with-resp-schema.test.js +++ b/genai/controlled-generation/test/ctrlgen-with-resp-schema.test.js @@ -18,7 +18,7 @@ const {assert} = require('chai'); const {describe, it} = require('mocha'); const projectId = process.env.CAIP_PROJECT_ID; -const sample = require('../controlled-generation/ctrlgen-with-resp-schema.js'); +const sample = require('../ctrlgen-with-resp-schema.js'); describe('ctrlgen-with-resp-schema', () => { it('should generate text content in given schema', async function () { diff --git a/genai/count-tokens/package.json b/genai/count-tokens/package.json new file mode 100644 index 0000000000..8b797ab0c4 --- /dev/null +++ b/genai/count-tokens/package.json @@ -0,0 +1,20 @@ +{ + "name": "nodejs-genai-count-tokens", + "private": true, + "license": "Apache-2.0", + "author": "Google LLC", + "engines": { + "node": ">=16.0.0" + }, + "scripts": { + "test": "c8 mocha -p -j 2 --timeout 2400000 test/*.test.js" + }, + "dependencies": { + "@google/genai": "1.30.0" + }, + "devDependencies": { + "c8": "^10.0.0", + "chai": "^4.5.0", + "mocha": "^10.0.0" + } +} diff --git a/genai/test/counttoken-compute-with-txt.test.js b/genai/count-tokens/test/counttoken-compute-with-txt.test.js similarity index 90% rename from genai/test/counttoken-compute-with-txt.test.js rename to genai/count-tokens/test/counttoken-compute-with-txt.test.js index b0b29c9131..6fb3eba49b 100644 --- a/genai/test/counttoken-compute-with-txt.test.js +++ b/genai/count-tokens/test/counttoken-compute-with-txt.test.js @@ -18,8 +18,8 @@ const {assert} = require('chai'); const {describe, it} = require('mocha'); const projectId = process.env.CAIP_PROJECT_ID; -const sample = require('../count-tokens/counttoken-compute-with-txt.js'); -const {delay} = require('./util'); +const sample = require('../counttoken-compute-with-txt.js'); +const {delay} = require('../../test/util'); describe('counttoken-compute-with-txt', () => { it('should return tokensInfo from text prompt', async function () { diff --git a/genai/test/counttoken-localtokenizer-compute-with-txt.test.js b/genai/count-tokens/test/counttoken-localtokenizer-compute-with-txt.test.js similarity index 89% rename from genai/test/counttoken-localtokenizer-compute-with-txt.test.js rename to genai/count-tokens/test/counttoken-localtokenizer-compute-with-txt.test.js index eb9f902614..986850ba3c 100644 --- a/genai/test/counttoken-localtokenizer-compute-with-txt.test.js +++ b/genai/count-tokens/test/counttoken-localtokenizer-compute-with-txt.test.js @@ -18,8 +18,8 @@ const {assert} = require('chai'); const {describe, it} = require('mocha'); const projectId = process.env.CAIP_PROJECT_ID; -const sample = require('../count-tokens/counttoken-localtokenizer-compute-with-txt.js'); -const {delay} = require('./util'); +const sample = require('../counttoken-localtokenizer-compute-with-txt.js'); +const {delay} = require('../../test/util'); describe('counttoken-localtokenizer-compute-with-txt', () => { it('should return tokensInfo from text prompt', async function () { diff --git a/genai/test/counttoken-localtokenizer-with-txt.test.js b/genai/count-tokens/test/counttoken-localtokenizer-with-txt.test.js similarity index 89% rename from genai/test/counttoken-localtokenizer-with-txt.test.js rename to genai/count-tokens/test/counttoken-localtokenizer-with-txt.test.js index d538190e45..bc02fe9bba 100644 --- a/genai/test/counttoken-localtokenizer-with-txt.test.js +++ b/genai/count-tokens/test/counttoken-localtokenizer-with-txt.test.js @@ -18,8 +18,8 @@ const {assert} = require('chai'); const {describe, it} = require('mocha'); const projectId = process.env.CAIP_PROJECT_ID; -const sample = require('../count-tokens/counttoken-localtokenizer-with-txt.js'); -const {delay} = require('./util'); +const sample = require('../counttoken-localtokenizer-with-txt.js'); +const {delay} = require('../../test/util'); describe('counttoken-localtokenizer-with-txt', () => { it('should return totalTokens from text prompt', async function () { diff --git a/genai/test/counttoken-resp-with-txt.test.js b/genai/count-tokens/test/counttoken-resp-with-txt.test.js similarity index 93% rename from genai/test/counttoken-resp-with-txt.test.js rename to genai/count-tokens/test/counttoken-resp-with-txt.test.js index 45fb11fcff..60bb76b7d7 100644 --- a/genai/test/counttoken-resp-with-txt.test.js +++ b/genai/count-tokens/test/counttoken-resp-with-txt.test.js @@ -18,7 +18,7 @@ const {assert} = require('chai'); const {describe, it} = require('mocha'); const projectId = process.env.CAIP_PROJECT_ID; -const sample = require('../count-tokens/counttoken-resp-with-txt.js'); +const sample = require('../counttoken-resp-with-txt.js'); describe('counttoken-resp-with-txt', () => { it('should return the usageMetadata from text prompt', async function () { diff --git a/genai/test/counttoken-with-txt-vid.test.js b/genai/count-tokens/test/counttoken-with-txt-vid.test.js similarity index 90% rename from genai/test/counttoken-with-txt-vid.test.js rename to genai/count-tokens/test/counttoken-with-txt-vid.test.js index eebe23ac1c..e43bd509a7 100644 --- a/genai/test/counttoken-with-txt-vid.test.js +++ b/genai/count-tokens/test/counttoken-with-txt-vid.test.js @@ -18,8 +18,8 @@ const {assert} = require('chai'); const {describe, it} = require('mocha'); const projectId = process.env.CAIP_PROJECT_ID; -const sample = require('../count-tokens/counttoken-with-txt-vid.js'); -const {delay} = require('./util'); +const sample = require('../counttoken-with-txt-vid.js'); +const {delay} = require('../../test/util'); describe('counttoken-with-txt-vid', async () => { it('should return the total token count for a text and video prompt', async function () { diff --git a/genai/test/counttoken-with-txt.test.js b/genai/count-tokens/test/counttoken-with-txt.test.js similarity index 93% rename from genai/test/counttoken-with-txt.test.js rename to genai/count-tokens/test/counttoken-with-txt.test.js index 390382d3ba..367ba662a5 100644 --- a/genai/test/counttoken-with-txt.test.js +++ b/genai/count-tokens/test/counttoken-with-txt.test.js @@ -18,7 +18,7 @@ const {assert} = require('chai'); const {describe, it} = require('mocha'); const projectId = process.env.CAIP_PROJECT_ID; -const sample = require('../count-tokens/counttoken-with-txt.js'); +const sample = require('../counttoken-with-txt.js'); describe('counttoken-with-txt', async () => { it('should return the total token count for a text prompt', async function () { diff --git a/genai/image-generation/package.json b/genai/image-generation/package.json new file mode 100644 index 0000000000..1a03f673c9 --- /dev/null +++ b/genai/image-generation/package.json @@ -0,0 +1,20 @@ +{ + "name": "nodejs-genai-image-generation", + "private": true, + "license": "Apache-2.0", + "author": "Google LLC", + "engines": { + "node": ">=16.0.0" + }, + "scripts": { + "test": "c8 mocha -p -j 2 --timeout 2400000 test/*.test.js" + }, + "dependencies": { + "@google/genai": "1.30.0" + }, + "devDependencies": { + "c8": "^10.0.0", + "chai": "^4.5.0", + "mocha": "^10.0.0" + } +} diff --git a/genai/test-data/example-image-eiffel-tower.png b/genai/image-generation/test-data/example-image-eiffel-tower.png similarity index 100% rename from genai/test-data/example-image-eiffel-tower.png rename to genai/image-generation/test-data/example-image-eiffel-tower.png diff --git a/genai/test-data/man.png b/genai/image-generation/test-data/man.png similarity index 100% rename from genai/test-data/man.png rename to genai/image-generation/test-data/man.png diff --git a/genai/test-data/sweater.jpg b/genai/image-generation/test-data/sweater.jpg similarity index 100% rename from genai/test-data/sweater.jpg rename to genai/image-generation/test-data/sweater.jpg diff --git a/genai/test/imggen-mmflash-edit-img-with-txt-img.test.js b/genai/image-generation/test/imggen-mmflash-edit-img-with-txt-img.test.js similarity index 90% rename from genai/test/imggen-mmflash-edit-img-with-txt-img.test.js rename to genai/image-generation/test/imggen-mmflash-edit-img-with-txt-img.test.js index c5a04b53a8..2e917fa41f 100644 --- a/genai/test/imggen-mmflash-edit-img-with-txt-img.test.js +++ b/genai/image-generation/test/imggen-mmflash-edit-img-with-txt-img.test.js @@ -19,8 +19,8 @@ const {describe, it} = require('mocha'); const projectId = process.env.CAIP_PROJECT_ID; const location = 'global'; -const sample = require('../image-generation/imggen-mmflash-edit-img-with-txt-img'); -const {delay} = require('./util'); +const sample = require('../imggen-mmflash-edit-img-with-txt-img'); +const {delay} = require('../../test/util'); describe('imggen-mmflash-edit-img-with-txt-img', async () => { it('should return a response object containing image parts', async function () { diff --git a/genai/test/imggen-mmflash-locale-aware-with-txt.test.js b/genai/image-generation/test/imggen-mmflash-locale-aware-with-txt.test.js similarity index 90% rename from genai/test/imggen-mmflash-locale-aware-with-txt.test.js rename to genai/image-generation/test/imggen-mmflash-locale-aware-with-txt.test.js index 8764ae41da..51030fea3f 100644 --- a/genai/test/imggen-mmflash-locale-aware-with-txt.test.js +++ b/genai/image-generation/test/imggen-mmflash-locale-aware-with-txt.test.js @@ -19,8 +19,8 @@ const {describe, it} = require('mocha'); const projectId = process.env.CAIP_PROJECT_ID; const location = 'global'; -const sample = require('../image-generation/imggen-mmflash-locale-aware-with-txt'); -const {delay} = require('./util'); +const sample = require('../imggen-mmflash-locale-aware-with-txt'); +const {delay} = require('../../test/util'); describe('imggen-mmflash-locale-aware-with-txt', async () => { it('should generate a response with text and image parts', async function () { diff --git a/genai/test/imggen-mmflash-multiple-imgs-with-txt.test.js b/genai/image-generation/test/imggen-mmflash-multiple-imgs-with-txt.test.js similarity index 90% rename from genai/test/imggen-mmflash-multiple-imgs-with-txt.test.js rename to genai/image-generation/test/imggen-mmflash-multiple-imgs-with-txt.test.js index 6c23960e6b..21228a290a 100644 --- a/genai/test/imggen-mmflash-multiple-imgs-with-txt.test.js +++ b/genai/image-generation/test/imggen-mmflash-multiple-imgs-with-txt.test.js @@ -20,8 +20,8 @@ const {describe, it} = require('mocha'); const projectId = process.env.CAIP_PROJECT_ID; const location = 'global'; -const sample = require('../image-generation/imggen-mmflash-multiple-imgs-with-txt'); -const {delay} = require('./util'); +const sample = require('../imggen-mmflash-multiple-imgs-with-txt'); +const {delay} = require('../../test/util'); describe('imggen-mmflash-multiple-imgs-with-txt', async () => { it('should return a response object containing image parts', async function () { diff --git a/genai/test/imggen-mmflash-txt-and-img-with-txt.test.js b/genai/image-generation/test/imggen-mmflash-txt-and-img-with-txt.test.js similarity index 90% rename from genai/test/imggen-mmflash-txt-and-img-with-txt.test.js rename to genai/image-generation/test/imggen-mmflash-txt-and-img-with-txt.test.js index 4df689c58c..c2cd436aac 100644 --- a/genai/test/imggen-mmflash-txt-and-img-with-txt.test.js +++ b/genai/image-generation/test/imggen-mmflash-txt-and-img-with-txt.test.js @@ -19,8 +19,8 @@ const {describe, it} = require('mocha'); const projectId = process.env.CAIP_PROJECT_ID; const location = 'global'; -const sample = require('../image-generation/imggen-mmflash-txt-and-img-with-txt'); -const {delay} = require('./util'); +const sample = require('../imggen-mmflash-txt-and-img-with-txt'); +const {delay} = require('../../test/util'); describe('imggen-mmflash-txt-and-img-with-txt', async () => { it('should generate a response with text and image parts', async function () { diff --git a/genai/test/imggen-mmflash-with-txt.test.js b/genai/image-generation/test/imggen-mmflash-with-txt.test.js similarity index 90% rename from genai/test/imggen-mmflash-with-txt.test.js rename to genai/image-generation/test/imggen-mmflash-with-txt.test.js index c327a44772..0e801c53d4 100644 --- a/genai/test/imggen-mmflash-with-txt.test.js +++ b/genai/image-generation/test/imggen-mmflash-with-txt.test.js @@ -20,8 +20,8 @@ const {describe, it} = require('mocha'); const projectId = process.env.CAIP_PROJECT_ID; const location = 'global'; -const sample = require('../image-generation/imggen-mmflash-with-txt.js'); -const {delay} = require('./util'); +const sample = require('../imggen-mmflash-with-txt.js'); +const {delay} = require('../../test/util'); describe('imggen-mmflash-with-txt', async () => { it('should generate images from a text prompt', async function () { diff --git a/genai/test/imggen_virtual-try-on-with-txt-img.test.js b/genai/image-generation/test/imggen_virtual-try-on-with-txt-img.test.js similarity index 89% rename from genai/test/imggen_virtual-try-on-with-txt-img.test.js rename to genai/image-generation/test/imggen_virtual-try-on-with-txt-img.test.js index 2f8028663c..12f085ce14 100644 --- a/genai/test/imggen_virtual-try-on-with-txt-img.test.js +++ b/genai/image-generation/test/imggen_virtual-try-on-with-txt-img.test.js @@ -19,8 +19,8 @@ const {describe, it} = require('mocha'); const projectId = process.env.CAIP_PROJECT_ID; -const sample = require('../image-generation/imggen_virtual-try-on-with-txt-img'); -const {delay} = require('./util'); +const sample = require('../imggen_virtual-try-on-with-txt-img'); +const {delay} = require('../../test/util'); describe('imggen_virtual-try-on-with-txt-img', async () => { it('should return a response object containing image parts', async function () { diff --git a/genai/live/package.json b/genai/live/package.json new file mode 100644 index 0000000000..6df7d1b49b --- /dev/null +++ b/genai/live/package.json @@ -0,0 +1,25 @@ +{ + "name": "nodejs-genai-live", + "private": true, + "license": "Apache-2.0", + "author": "Google LLC", + "engines": { + "node": ">=16.0.0" + }, + "scripts": { + "test": "c8 mocha -p -j 2 --timeout 2400000 test/*.test.js" + }, + "dependencies": { + "@google/genai": "1.30.0", + "google-auth-library": "^10.3.0", + "node-fetch": "^2.7.0", + "openai": "^5.19.1" + }, + "devDependencies": { + "c8": "^10.0.0", + "chai": "^4.5.0", + "mocha": "^10.0.0", + "proxyquire": "^2.1.3", + "sinon": "^18.0.0" + } +} diff --git a/genai/test/live-audio-with-txt.test.js b/genai/live/test/live-audio-with-txt.test.js similarity index 95% rename from genai/test/live-audio-with-txt.test.js rename to genai/live/test/live-audio-with-txt.test.js index 9dca58c3fa..2a353a8b0b 100644 --- a/genai/test/live-audio-with-txt.test.js +++ b/genai/live/test/live-audio-with-txt.test.js @@ -18,7 +18,7 @@ const {assert} = require('chai'); const {describe, it} = require('mocha'); const projectId = process.env.CAIP_PROJECT_ID; -const sample = require('../live/live-audio-with-txt'); +const sample = require('../live-audio-with-txt'); describe('live-audio-with-txt', () => { it('should generate audio content in a live session conversation from a text prompt', async function () { diff --git a/genai/test/live-code-exec-with-txt.test.js b/genai/live/test/live-code-exec-with-txt.test.js similarity index 94% rename from genai/test/live-code-exec-with-txt.test.js rename to genai/live/test/live-code-exec-with-txt.test.js index 361a7cd824..ee4e0e08c3 100644 --- a/genai/test/live-code-exec-with-txt.test.js +++ b/genai/live/test/live-code-exec-with-txt.test.js @@ -18,7 +18,7 @@ const {assert} = require('chai'); const {describe, it} = require('mocha'); const projectId = process.env.CAIP_PROJECT_ID; -const sample = require('../live/live-code-exec-with-txt'); +const sample = require('../live-code-exec-with-txt'); describe('live-code-exec-with-txt', () => { it('should generate code execution in a live session from a text prompt', async function () { diff --git a/genai/test/live-conversation-audio-with-audio.test.js b/genai/live/test/live-conversation-audio-with-audio.test.js similarity index 95% rename from genai/test/live-conversation-audio-with-audio.test.js rename to genai/live/test/live-conversation-audio-with-audio.test.js index a31aac6d42..e832d7743e 100644 --- a/genai/test/live-conversation-audio-with-audio.test.js +++ b/genai/live/test/live-conversation-audio-with-audio.test.js @@ -19,7 +19,7 @@ const {describe, it} = require('mocha'); const sinon = require('sinon'); const projectId = process.env.CAIP_PROJECT_ID; -const {delay} = require('./util'); +const {delay} = require('../../test/util'); const proxyquire = require('proxyquire'); describe('live-conversation-audio-with-audio', () => { @@ -63,7 +63,7 @@ describe('live-conversation-audio-with-audio', () => { }, }; - const sample = proxyquire('../live/live-conversation-audio-with-audio', { + const sample = proxyquire('../live-conversation-audio-with-audio', { '@google/genai': { GoogleGenAI: function () { return mockClient; diff --git a/genai/test/live-func-call-with-txt.test.js b/genai/live/test/live-func-call-with-txt.test.js similarity index 94% rename from genai/test/live-func-call-with-txt.test.js rename to genai/live/test/live-func-call-with-txt.test.js index f63f2b8782..f2b5a4ef06 100644 --- a/genai/test/live-func-call-with-txt.test.js +++ b/genai/live/test/live-func-call-with-txt.test.js @@ -18,7 +18,7 @@ const {assert} = require('chai'); const {describe, it} = require('mocha'); const projectId = process.env.CAIP_PROJECT_ID; -const sample = require('../live/live-func-call-with-txt'); +const sample = require('../live-func-call-with-txt'); describe('live-func-call-with-txt', () => { it('should generate function call in a live session from a text prompt', async function () { diff --git a/genai/test/live-ground-googsearch-with-txt.test.js b/genai/live/test/live-ground-googsearch-with-txt.test.js similarity index 93% rename from genai/test/live-ground-googsearch-with-txt.test.js rename to genai/live/test/live-ground-googsearch-with-txt.test.js index 6c1be019d3..cafa6c67b6 100644 --- a/genai/test/live-ground-googsearch-with-txt.test.js +++ b/genai/live/test/live-ground-googsearch-with-txt.test.js @@ -18,7 +18,7 @@ const {assert} = require('chai'); const {describe, it} = require('mocha'); const projectId = process.env.CAIP_PROJECT_ID; -const sample = require('../live/live-ground-googsearch-with-txt.js'); +const sample = require('../live-ground-googsearch-with-txt.js'); describe('live-ground-googsearch-with-txt', () => { it('should generate Google Search in a live session from a text prompt', async function () { diff --git a/genai/test/live-ground-ragengine-with-txt.test.js b/genai/live/test/live-ground-ragengine-with-txt.test.js similarity index 94% rename from genai/test/live-ground-ragengine-with-txt.test.js rename to genai/live/test/live-ground-ragengine-with-txt.test.js index c98fa71908..5e24f17e40 100644 --- a/genai/test/live-ground-ragengine-with-txt.test.js +++ b/genai/live/test/live-ground-ragengine-with-txt.test.js @@ -18,7 +18,7 @@ const {assert} = require('chai'); const {describe, it} = require('mocha'); const proxyquire = require('proxyquire'); -const {delay} = require('./util'); +const {delay} = require('../../test/util'); describe('live-ground-ragengine-with-txt', () => { it('should return text from mocked RAG session', async function () { @@ -48,7 +48,7 @@ describe('live-ground-ragengine-with-txt', () => { }, }; - const sample = proxyquire('../live/live-ground-ragengine-with-txt', { + const sample = proxyquire('../live-ground-ragengine-with-txt', { '@google/genai': { GoogleGenAI: function () { return mockClient; diff --git a/genai/test/live-structured-ouput-with-txt.test.js b/genai/live/test/live-structured-ouput-with-txt.test.js similarity index 94% rename from genai/test/live-structured-ouput-with-txt.test.js rename to genai/live/test/live-structured-ouput-with-txt.test.js index b26e1e3092..208c329240 100644 --- a/genai/test/live-structured-ouput-with-txt.test.js +++ b/genai/live/test/live-structured-ouput-with-txt.test.js @@ -18,7 +18,7 @@ const {assert} = require('chai'); const {describe, it} = require('mocha'); const projectId = process.env.CAIP_PROJECT_ID; -const sample = require('../live/live-structured-ouput-with-txt'); +const sample = require('../live-structured-ouput-with-txt'); describe('live-structured-ouput-with-txt', () => { it('should extract structured information from text input using the model', async function () { diff --git a/genai/test/live-transcribe-with-audio.test.js b/genai/live/test/live-transcribe-with-audio.test.js similarity index 94% rename from genai/test/live-transcribe-with-audio.test.js rename to genai/live/test/live-transcribe-with-audio.test.js index 250dafb5e5..c6f72a6ce4 100644 --- a/genai/test/live-transcribe-with-audio.test.js +++ b/genai/live/test/live-transcribe-with-audio.test.js @@ -18,7 +18,7 @@ const {assert} = require('chai'); const {describe, it} = require('mocha'); const projectId = process.env.CAIP_PROJECT_ID; -const sample = require('../live/live-transcribe-with-audio'); +const sample = require('../live-transcribe-with-audio'); describe('live-transcribe-with-audio', () => { it('should transcribe audio input into text using the live model', async function () { diff --git a/genai/test/live-txt-with-audio.test.js b/genai/live/test/live-txt-with-audio.test.js similarity index 95% rename from genai/test/live-txt-with-audio.test.js rename to genai/live/test/live-txt-with-audio.test.js index c7de558118..fe69267e26 100644 --- a/genai/test/live-txt-with-audio.test.js +++ b/genai/live/test/live-txt-with-audio.test.js @@ -18,7 +18,7 @@ const {assert} = require('chai'); const {describe, it} = require('mocha'); const projectId = process.env.CAIP_PROJECT_ID; -const {delay} = require('./util'); +const {delay} = require('../../test/util'); const proxyquire = require('proxyquire'); @@ -66,7 +66,7 @@ describe('live-txt-with-audio', () => { }, }; - const sample = proxyquire('../live/live-txt-with-audio', { + const sample = proxyquire('../live-txt-with-audio', { 'node-fetch': fakeFetch, '@google/genai': { GoogleGenAI: function () { diff --git a/genai/test/live-with-txt.test.js b/genai/live/test/live-with-txt.test.js similarity index 95% rename from genai/test/live-with-txt.test.js rename to genai/live/test/live-with-txt.test.js index a32139c3e0..a95468fa02 100644 --- a/genai/test/live-with-txt.test.js +++ b/genai/live/test/live-with-txt.test.js @@ -18,7 +18,7 @@ const {assert} = require('chai'); const {describe, it} = require('mocha'); const projectId = process.env.CAIP_PROJECT_ID; -const sample = require('../live/live-with-txt'); +const sample = require('../live-with-txt'); describe('live-with-txt', () => { it('should generate content in a live session from a text prompt', async function () { diff --git a/genai/package.json b/genai/package.json index 90ea78fd48..6ce43bd801 100644 --- a/genai/package.json +++ b/genai/package.json @@ -3,15 +3,16 @@ "private": true, "license": "Apache-2.0", "author": "Google LLC", + "repository": { + "type": "git", + "url": "https://github.com/GoogleCloudPlatform/nodejs-docs-samples.git" + }, "engines": { "node": ">=16.0.0" }, "files": [ "*.js" ], - "scripts": { - "test": "c8 mocha -p -j 2 --timeout 2400000 test/*.test.js test/**/*.test.js" - }, "dependencies": { "@google-cloud/storage": "^7.17.3", "@google/genai": "1.30.0", diff --git a/genai/text-generation/package.json b/genai/text-generation/package.json new file mode 100644 index 0000000000..409a09dd2f --- /dev/null +++ b/genai/text-generation/package.json @@ -0,0 +1,20 @@ +{ + "name": "nodejs-genai-text-generation", + "private": true, + "license": "Apache-2.0", + "author": "Google LLC", + "engines": { + "node": ">=16.0.0" + }, + "scripts": { + "test": "c8 mocha -p -j 2 --timeout 2400000 test/*.test.js" + }, + "dependencies": { + "@google/genai": "1.30.0" + }, + "devDependencies": { + "c8": "^10.0.0", + "chai": "^4.5.0", + "mocha": "^10.0.0" + } +} diff --git a/genai/test-data/describe_video_content.mp4 b/genai/text-generation/test-data/describe_video_content.mp4 similarity index 100% rename from genai/test-data/describe_video_content.mp4 rename to genai/text-generation/test-data/describe_video_content.mp4 diff --git a/genai/test-data/latte.jpg b/genai/text-generation/test-data/latte.jpg similarity index 100% rename from genai/test-data/latte.jpg rename to genai/text-generation/test-data/latte.jpg diff --git a/genai/test-data/scones.jpg b/genai/text-generation/test-data/scones.jpg similarity index 100% rename from genai/test-data/scones.jpg rename to genai/text-generation/test-data/scones.jpg diff --git a/genai/test/textgen-async-with-txt.test.js b/genai/text-generation/test/textgen-async-with-txt.test.js similarity index 93% rename from genai/test/textgen-async-with-txt.test.js rename to genai/text-generation/test/textgen-async-with-txt.test.js index 540ff3e682..29a615e40b 100644 --- a/genai/test/textgen-async-with-txt.test.js +++ b/genai/text-generation/test/textgen-async-with-txt.test.js @@ -18,7 +18,7 @@ const {assert} = require('chai'); const {describe, it} = require('mocha'); const projectId = process.env.CAIP_PROJECT_ID; -const sample = require('../text-generation/textgen-async-with-txt.js'); +const sample = require('../textgen-async-with-txt.js'); describe('textgen-async-with-txt', () => { it('should generate text content from a text prompt and with system instructions', async function () { diff --git a/genai/test/textgen-chat-stream-with-txt.test.js b/genai/text-generation/test/textgen-chat-stream-with-txt.test.js similarity index 92% rename from genai/test/textgen-chat-stream-with-txt.test.js rename to genai/text-generation/test/textgen-chat-stream-with-txt.test.js index a81fdb4031..041f4795f6 100644 --- a/genai/test/textgen-chat-stream-with-txt.test.js +++ b/genai/text-generation/test/textgen-chat-stream-with-txt.test.js @@ -18,7 +18,7 @@ const {assert} = require('chai'); const {describe, it} = require('mocha'); const projectId = process.env.CAIP_PROJECT_ID; -const sample = require('../text-generation/textgen-chat-stream-with-txt.js'); +const sample = require('../textgen-chat-stream-with-txt.js'); describe('textgen-chat-stream-with-txt', () => { it('should generate text content from a mute video', async function () { diff --git a/genai/test/textgen-chat-with-txt.test.js b/genai/text-generation/test/textgen-chat-with-txt.test.js similarity index 93% rename from genai/test/textgen-chat-with-txt.test.js rename to genai/text-generation/test/textgen-chat-with-txt.test.js index 184013536c..f319f29938 100644 --- a/genai/test/textgen-chat-with-txt.test.js +++ b/genai/text-generation/test/textgen-chat-with-txt.test.js @@ -18,7 +18,7 @@ const {assert} = require('chai'); const {describe, it} = require('mocha'); const projectId = process.env.CAIP_PROJECT_ID; -const sample = require('../text-generation/textgen-chat-with-txt.js'); +const sample = require('../textgen-chat-with-txt.js'); describe('textgen-chat-with-txt', () => { it('should generate chat content from a text prompt', async function () { diff --git a/genai/test/textgen-code-with-pdf.test.js b/genai/text-generation/test/textgen-code-with-pdf.test.js similarity index 93% rename from genai/test/textgen-code-with-pdf.test.js rename to genai/text-generation/test/textgen-code-with-pdf.test.js index 22ec5b77fe..0987fc72e1 100644 --- a/genai/test/textgen-code-with-pdf.test.js +++ b/genai/text-generation/test/textgen-code-with-pdf.test.js @@ -18,7 +18,7 @@ const {assert} = require('chai'); const {describe, it} = require('mocha'); const projectId = process.env.CAIP_PROJECT_ID; -const sample = require('../text-generation/textgen-code-with-pdf.js'); +const sample = require('../textgen-code-with-pdf.js'); describe('textgen-code-with-pdf', () => { it('should generate text content from a pdf', async function () { diff --git a/genai/test/textgen-config-with-txt.test.js b/genai/text-generation/test/textgen-config-with-txt.test.js similarity index 93% rename from genai/test/textgen-config-with-txt.test.js rename to genai/text-generation/test/textgen-config-with-txt.test.js index b070952515..504bccbd61 100644 --- a/genai/test/textgen-config-with-txt.test.js +++ b/genai/text-generation/test/textgen-config-with-txt.test.js @@ -18,7 +18,7 @@ const {assert} = require('chai'); const {describe, it} = require('mocha'); const projectId = process.env.CAIP_PROJECT_ID; -const sample = require('../text-generation/textgen-config-with-txt.js'); +const sample = require('../textgen-config-with-txt.js'); describe('textgen-config-with-txt', () => { it('should generate text content from a text prompt with config', async function () { diff --git a/genai/test/textgen-sys-instr-with-txt.test.js b/genai/text-generation/test/textgen-sys-instr-with-txt.test.js similarity index 92% rename from genai/test/textgen-sys-instr-with-txt.test.js rename to genai/text-generation/test/textgen-sys-instr-with-txt.test.js index 4e53e1de4f..f2f8ba13a6 100644 --- a/genai/test/textgen-sys-instr-with-txt.test.js +++ b/genai/text-generation/test/textgen-sys-instr-with-txt.test.js @@ -18,7 +18,7 @@ const {assert} = require('chai'); const {describe, it} = require('mocha'); const projectId = process.env.CAIP_PROJECT_ID; -const sample = require('../text-generation/textgen-sys-instr-with-txt.js'); +const sample = require('../textgen-sys-instr-with-txt.js'); describe('textgen-sys-instr-with-txt', async () => { it('should generate text content from a text prompt and with system instructions', async () => { diff --git a/genai/test/textgen-transcript-with-gcs-audio.test.js b/genai/text-generation/test/textgen-transcript-with-gcs-audio.test.js similarity index 89% rename from genai/test/textgen-transcript-with-gcs-audio.test.js rename to genai/text-generation/test/textgen-transcript-with-gcs-audio.test.js index b1b7240bc9..7d9e063196 100644 --- a/genai/test/textgen-transcript-with-gcs-audio.test.js +++ b/genai/text-generation/test/textgen-transcript-with-gcs-audio.test.js @@ -18,8 +18,8 @@ const {assert} = require('chai'); const {describe, it} = require('mocha'); const projectId = process.env.CAIP_PROJECT_ID; -const sample = require('../text-generation/textgen-transcript-with-gcs-audio.js'); -const {delay} = require('./util'); +const sample = require('../textgen-transcript-with-gcs-audio.js'); +const {delay} = require('../../test/util'); describe('textgen-transcript-with-gcs-audio', async () => { it('should generate text content from gsc audio with transcript', async function () { diff --git a/genai/test/textgen-with-gcs-audio.test.js b/genai/text-generation/test/textgen-with-gcs-audio.test.js similarity index 93% rename from genai/test/textgen-with-gcs-audio.test.js rename to genai/text-generation/test/textgen-with-gcs-audio.test.js index 4a86977bcd..4e7c9f62a1 100644 --- a/genai/test/textgen-with-gcs-audio.test.js +++ b/genai/text-generation/test/textgen-with-gcs-audio.test.js @@ -18,7 +18,7 @@ const {assert} = require('chai'); const {describe, it} = require('mocha'); const projectId = process.env.CAIP_PROJECT_ID; -const sample = require('../text-generation/textgen-with-gcs-audio'); +const sample = require('../textgen-with-gcs-audio'); describe('textgen-with-gcs-audio', async () => { it('should generate text content from gsc audio', async function () { diff --git a/genai/test/textgen-with-local-video.test.js b/genai/text-generation/test/textgen-with-local-video.test.js similarity index 90% rename from genai/test/textgen-with-local-video.test.js rename to genai/text-generation/test/textgen-with-local-video.test.js index 7d55d67fb7..5db4bd6647 100644 --- a/genai/test/textgen-with-local-video.test.js +++ b/genai/text-generation/test/textgen-with-local-video.test.js @@ -18,8 +18,8 @@ const {assert} = require('chai'); const {describe, it} = require('mocha'); const projectId = process.env.CAIP_PROJECT_ID; -const sample = require('../text-generation/textgen-with-local-video.js'); -const {delay} = require('./util'); +const sample = require('../textgen-with-local-video.js'); +const {delay} = require('../../test/util'); describe('textgen-with-local-video', async () => { it('should generate text content from local video', async function () { diff --git a/genai/test/textgen-with-multi-img.test.js b/genai/text-generation/test/textgen-with-multi-img.test.js similarity index 91% rename from genai/test/textgen-with-multi-img.test.js rename to genai/text-generation/test/textgen-with-multi-img.test.js index 36a7214f2a..e62c1fc249 100644 --- a/genai/test/textgen-with-multi-img.test.js +++ b/genai/text-generation/test/textgen-with-multi-img.test.js @@ -18,8 +18,8 @@ const {assert} = require('chai'); const {describe, it} = require('mocha'); const projectId = process.env.CAIP_PROJECT_ID; -const sample = require('../text-generation/textgen-with-multi-img.js'); -const {delay} = require('./util'); +const sample = require('../textgen-with-multi-img.js'); +const {delay} = require('../../test/util'); describe('textgen-with-multi-img', () => { it('should generate text content from a text prompt and multiple images', async function () { diff --git a/genai/test/textgen-with-multi-local-img.test.js b/genai/text-generation/test/textgen-with-multi-local-img.test.js similarity index 91% rename from genai/test/textgen-with-multi-local-img.test.js rename to genai/text-generation/test/textgen-with-multi-local-img.test.js index bed8ce3ac7..1bdccb5b2c 100644 --- a/genai/test/textgen-with-multi-local-img.test.js +++ b/genai/text-generation/test/textgen-with-multi-local-img.test.js @@ -20,8 +20,8 @@ const {describe, it} = require('mocha'); const projectId = process.env.CAIP_PROJECT_ID; const location = process.env.GOOGLE_CLOUD_LOCATION || 'global'; -const sample = require('../text-generation/textgen-with-multi-local-img.js'); -const {delay} = require('./util'); +const sample = require('../textgen-with-multi-local-img.js'); +const {delay} = require('../../test/util'); describe('textgen-with-multi-local-img', () => { it('should generate text content from multiple images', async function () { diff --git a/genai/test/textgen-with-mute-video.test.js b/genai/text-generation/test/textgen-with-mute-video.test.js similarity index 93% rename from genai/test/textgen-with-mute-video.test.js rename to genai/text-generation/test/textgen-with-mute-video.test.js index 65b5013126..a7a0b815b4 100644 --- a/genai/test/textgen-with-mute-video.test.js +++ b/genai/text-generation/test/textgen-with-mute-video.test.js @@ -18,7 +18,7 @@ const {assert} = require('chai'); const {describe, it} = require('mocha'); const projectId = process.env.CAIP_PROJECT_ID; -const sample = require('../text-generation/textgen-with-mute-video.js'); +const sample = require('../textgen-with-mute-video.js'); describe('textgen-with-mute-video', () => { it('should generate text content from a mute video', async function () { diff --git a/genai/test/textgen-with-pdf.test.js b/genai/text-generation/test/textgen-with-pdf.test.js similarity index 90% rename from genai/test/textgen-with-pdf.test.js rename to genai/text-generation/test/textgen-with-pdf.test.js index d5a07dfa1f..3b517aebdd 100644 --- a/genai/test/textgen-with-pdf.test.js +++ b/genai/text-generation/test/textgen-with-pdf.test.js @@ -18,8 +18,8 @@ const {assert} = require('chai'); const {describe, it} = require('mocha'); const projectId = process.env.CAIP_PROJECT_ID; -const sample = require('../text-generation/textgen-with-pdf.js'); -const {delay} = require('./util'); +const sample = require('../textgen-with-pdf.js'); +const {delay} = require('../../test/util'); describe('textgen-with-pdf', async () => { it('should generate text content from pdf', async function () { diff --git a/genai/test/textgen-with-txt-img.test.js b/genai/text-generation/test/textgen-with-txt-img.test.js similarity index 90% rename from genai/test/textgen-with-txt-img.test.js rename to genai/text-generation/test/textgen-with-txt-img.test.js index 3a7e20c14f..d50fe4e424 100644 --- a/genai/test/textgen-with-txt-img.test.js +++ b/genai/text-generation/test/textgen-with-txt-img.test.js @@ -18,8 +18,8 @@ const {assert} = require('chai'); const {describe, it} = require('mocha'); const projectId = process.env.CAIP_PROJECT_ID; -const sample = require('../text-generation/textgen-with-txt-img.js'); -const {delay} = require('./util'); +const sample = require('../textgen-with-txt-img.js'); +const {delay} = require('../../test/util'); describe('textgen-with-txt-img', async () => { it('should generate text content from a text prompt and an image', async function () { diff --git a/genai/test/textgen-with-txt-routing.test.js b/genai/text-generation/test/textgen-with-txt-routing.test.js similarity index 90% rename from genai/test/textgen-with-txt-routing.test.js rename to genai/text-generation/test/textgen-with-txt-routing.test.js index 5ee78a0802..19143796f2 100644 --- a/genai/test/textgen-with-txt-routing.test.js +++ b/genai/text-generation/test/textgen-with-txt-routing.test.js @@ -18,8 +18,8 @@ const {assert} = require('chai'); const {describe, it} = require('mocha'); const projectId = process.env.CAIP_PROJECT_ID; -const sample = require('../text-generation/textgen-with-txt-routing.js'); -const {delay} = require('./util'); +const sample = require('../textgen-with-txt-routing.js'); +const {delay} = require('../../test/util'); describe('textgen-with-txt-routing', async () => { it('should generate text content from a text prompt and with routing configuration', async function () { diff --git a/genai/test/textgen-with-txt-stream.test.js b/genai/text-generation/test/textgen-with-txt-stream.test.js similarity index 92% rename from genai/test/textgen-with-txt-stream.test.js rename to genai/text-generation/test/textgen-with-txt-stream.test.js index 5bfb88cade..127bdbced6 100644 --- a/genai/test/textgen-with-txt-stream.test.js +++ b/genai/text-generation/test/textgen-with-txt-stream.test.js @@ -18,7 +18,7 @@ const {assert} = require('chai'); const {describe, it} = require('mocha'); const projectId = process.env.CAIP_PROJECT_ID; -const sample = require('../text-generation/textgen-with-txt-stream.js'); +const sample = require('../textgen-with-txt-stream.js'); describe('textgen-with-txt-stream', async () => { it('should generate streaming text content from a text prompt', async () => { diff --git a/genai/test/textgen-with-txt.test.js b/genai/text-generation/test/textgen-with-txt.test.js similarity index 93% rename from genai/test/textgen-with-txt.test.js rename to genai/text-generation/test/textgen-with-txt.test.js index a6f772a3a4..dabfd416f3 100644 --- a/genai/test/textgen-with-txt.test.js +++ b/genai/text-generation/test/textgen-with-txt.test.js @@ -18,7 +18,7 @@ const {assert} = require('chai'); const {describe, it} = require('mocha'); const projectId = process.env.CAIP_PROJECT_ID; -const sample = require('../text-generation/textgen-with-txt.js'); +const sample = require('../textgen-with-txt.js'); describe('textgen-with-txt', async () => { it('should generate text content from a text prompt', async () => { diff --git a/genai/test/textgen-with-video.test.js b/genai/text-generation/test/textgen-with-video.test.js similarity index 93% rename from genai/test/textgen-with-video.test.js rename to genai/text-generation/test/textgen-with-video.test.js index ba81b8cd4a..8fb5f4cd96 100644 --- a/genai/test/textgen-with-video.test.js +++ b/genai/text-generation/test/textgen-with-video.test.js @@ -18,7 +18,7 @@ const {assert} = require('chai'); const {describe, it} = require('mocha'); const projectId = process.env.CAIP_PROJECT_ID; -const sample = require('../text-generation/textgen-with-video.js'); +const sample = require('../textgen-with-video.js'); describe('textgen-with-video', async () => { it('should generate text content from a text prompt and a video', async () => { diff --git a/genai/test/textgen-with-youtube-video.test.js b/genai/text-generation/test/textgen-with-youtube-video.test.js similarity index 93% rename from genai/test/textgen-with-youtube-video.test.js rename to genai/text-generation/test/textgen-with-youtube-video.test.js index 4da0174f9a..948d4f974d 100644 --- a/genai/test/textgen-with-youtube-video.test.js +++ b/genai/text-generation/test/textgen-with-youtube-video.test.js @@ -18,7 +18,7 @@ const {assert} = require('chai'); const {describe, it} = require('mocha'); const projectId = process.env.CAIP_PROJECT_ID; -const sample = require('../text-generation/textgen-with-youtube-video'); +const sample = require('../textgen-with-youtube-video'); describe('textgen-with-youtube-video', async () => { it('should generate text content from yt video', async function () { diff --git a/genai/text-generation/textgen-with-local-video.js b/genai/text-generation/textgen-with-local-video.js index d405bbbaef..d44eb9a190 100644 --- a/genai/text-generation/textgen-with-local-video.js +++ b/genai/text-generation/textgen-with-local-video.js @@ -34,9 +34,8 @@ async function generateText( const videoContent = fs.readFileSync('test-data/describe_video_content.mp4'); const response = await client.models.generateContent({ - model: 'gemini-2.5-flash', + model: 'gemini-2.5-flash-lite', contents: [ - {text: 'hello-world'}, { inlineData: { data: videoContent.toString('base64'), @@ -45,6 +44,9 @@ async function generateText( }, {text: 'Write a short and engaging blog post based on this video.'}, ], + config: { + mediaResolution: 'MEDIA_RESOLUTION_LOW', + }, }); console.log(response.text); diff --git a/genai/text-generation/textgen-with-mute-video.js b/genai/text-generation/textgen-with-mute-video.js index f2a7805064..b02daab172 100644 --- a/genai/text-generation/textgen-with-mute-video.js +++ b/genai/text-generation/textgen-with-mute-video.js @@ -31,7 +31,7 @@ async function generateText( }); const response = await client.models.generateContent({ - model: 'gemini-2.5-flash', + model: 'gemini-2.5-flash-lite', contents: [ { role: 'user', @@ -49,6 +49,9 @@ async function generateText( ], }, ], + config: { + mediaResolution: 'MEDIA_RESOLUTION_LOW', + }, }); console.log(response.text); diff --git a/genai/text-generation/textgen-with-txt.js b/genai/text-generation/textgen-with-txt.js index ba3294ac75..a81767e664 100644 --- a/genai/text-generation/textgen-with-txt.js +++ b/genai/text-generation/textgen-with-txt.js @@ -31,7 +31,7 @@ async function generateContent( }); const response = await client.models.generateContent({ - model: 'gemini-2.5-flash', + model: 'gemini-3-flash-preview', contents: 'How does AI work?', }); diff --git a/genai/text-generation/textgen-with-video.js b/genai/text-generation/textgen-with-video.js index 76b552facb..6ef043b598 100644 --- a/genai/text-generation/textgen-with-video.js +++ b/genai/text-generation/textgen-with-video.js @@ -46,6 +46,9 @@ async function generateContent( const response = await client.models.generateContent({ model: 'gemini-2.5-flash', contents: [video, prompt], + config: { + mediaResolution: 'MEDIA_RESOLUTION_LOW', + }, }); console.log(response.text); diff --git a/genai/text-generation/textgen-with-youtube-video.js b/genai/text-generation/textgen-with-youtube-video.js index f037417b30..b6eb192c6a 100644 --- a/genai/text-generation/textgen-with-youtube-video.js +++ b/genai/text-generation/textgen-with-youtube-video.js @@ -40,8 +40,11 @@ async function generateText( }; const response = await client.models.generateContent({ - model: 'gemini-2.5-flash', + model: 'gemini-2.5-flash-lite', contents: [ytVideo, prompt], + config: { + mediaResolution: 'MEDIA_RESOLUTION_LOW', + }, }); console.log(response.text); diff --git a/genai/thinking/package.json b/genai/thinking/package.json new file mode 100644 index 0000000000..eb92893f30 --- /dev/null +++ b/genai/thinking/package.json @@ -0,0 +1,20 @@ +{ + "name": "nodejs-genai-thinking", + "private": true, + "license": "Apache-2.0", + "author": "Google LLC", + "engines": { + "node": ">=16.0.0" + }, + "scripts": { + "test": "c8 mocha -p -j 2 --timeout 2400000 test/*.test.js" + }, + "dependencies": { + "@google/genai": "1.30.0" + }, + "devDependencies": { + "c8": "^10.0.0", + "chai": "^4.5.0", + "mocha": "^10.0.0" + } +} diff --git a/genai/test/thinking-budget-with-txt.test.js b/genai/thinking/test/thinking-budget-with-txt.test.js similarity index 93% rename from genai/test/thinking-budget-with-txt.test.js rename to genai/thinking/test/thinking-budget-with-txt.test.js index 5daaa2997f..58993ac023 100644 --- a/genai/test/thinking-budget-with-txt.test.js +++ b/genai/thinking/test/thinking-budget-with-txt.test.js @@ -18,7 +18,7 @@ const {assert} = require('chai'); const {describe, it} = require('mocha'); const projectId = process.env.CAIP_PROJECT_ID; -const sample = require('../thinking/thinking-budget-with-txt.js'); +const sample = require('../thinking-budget-with-txt.js'); describe('thinking-budget-with-txt', () => { it('should return Thought Process', async function () { diff --git a/genai/test/thinking-includethoughts-with-txt.test.js b/genai/thinking/test/thinking-includethoughts-with-txt.test.js similarity index 92% rename from genai/test/thinking-includethoughts-with-txt.test.js rename to genai/thinking/test/thinking-includethoughts-with-txt.test.js index 69a8a32800..46b50baf58 100644 --- a/genai/test/thinking-includethoughts-with-txt.test.js +++ b/genai/thinking/test/thinking-includethoughts-with-txt.test.js @@ -18,7 +18,7 @@ const {assert} = require('chai'); const {describe, it} = require('mocha'); const projectId = process.env.CAIP_PROJECT_ID; -const sample = require('../thinking/thinking-includethoughts-with-txt.js'); +const sample = require('../thinking-includethoughts-with-txt.js'); describe('thinking-includethoughts-with-txt', () => { it('should return Thought Process', async function () { diff --git a/genai/test/thinking-with-txt.test.js b/genai/thinking/test/thinking-with-txt.test.js similarity index 91% rename from genai/test/thinking-with-txt.test.js rename to genai/thinking/test/thinking-with-txt.test.js index 7fb5187910..687f694b42 100644 --- a/genai/test/thinking-with-txt.test.js +++ b/genai/thinking/test/thinking-with-txt.test.js @@ -18,8 +18,8 @@ const {assert} = require('chai'); const {describe, it} = require('mocha'); const projectId = process.env.CAIP_PROJECT_ID; -const sample = require('../thinking/thinking-with-txt.js'); -const {delay} = require('./util'); +const sample = require('../thinking-with-txt.js'); +const {delay} = require('../../test/util'); describe('thinking-with-txt', () => { it('should return Thought Process', async function () { diff --git a/genai/tools/package.json b/genai/tools/package.json new file mode 100644 index 0000000000..4e5e1aed4e --- /dev/null +++ b/genai/tools/package.json @@ -0,0 +1,20 @@ +{ + "name": "nodejs-genai-tools", + "private": true, + "license": "Apache-2.0", + "author": "Google LLC", + "engines": { + "node": ">=16.0.0" + }, + "scripts": { + "test": "c8 mocha -p -j 2 --timeout 2400000 test/*.test.js" + }, + "dependencies": { + "@google/genai": "1.30.0" + }, + "devDependencies": { + "c8": "^10.0.0", + "chai": "^4.5.0", + "mocha": "^10.0.0" + } +} diff --git a/genai/test/test-data/640px-Monty_open_door.svg.png b/genai/tools/test-data/640px-Monty_open_door.svg.png similarity index 100% rename from genai/test/test-data/640px-Monty_open_door.svg.png rename to genai/tools/test-data/640px-Monty_open_door.svg.png diff --git a/genai/test/tools-code-exec-with-txt-local-img.test.js b/genai/tools/test/tools-code-exec-with-txt-local-img.test.js similarity index 93% rename from genai/test/tools-code-exec-with-txt-local-img.test.js rename to genai/tools/test/tools-code-exec-with-txt-local-img.test.js index d6d6538d88..7581da4899 100644 --- a/genai/test/tools-code-exec-with-txt-local-img.test.js +++ b/genai/tools/test/tools-code-exec-with-txt-local-img.test.js @@ -18,7 +18,7 @@ const {assert} = require('chai'); const {describe, it} = require('mocha'); const projectId = process.env.CAIP_PROJECT_ID; -const sample = require('../tools/tools-code-exec-with-txt-local-img.js'); +const sample = require('../tools-code-exec-with-txt-local-img.js'); describe('tools-code-exec-with-txt-local-img', () => { it('should generate a function definition', async function () { diff --git a/genai/test/tools-code-exec-with-txt.test.js b/genai/tools/test/tools-code-exec-with-txt.test.js similarity index 91% rename from genai/test/tools-code-exec-with-txt.test.js rename to genai/tools/test/tools-code-exec-with-txt.test.js index da23b11b68..4d88eb2cb1 100644 --- a/genai/test/tools-code-exec-with-txt.test.js +++ b/genai/tools/test/tools-code-exec-with-txt.test.js @@ -18,8 +18,8 @@ const {assert} = require('chai'); const {describe, it} = require('mocha'); const projectId = process.env.CAIP_PROJECT_ID; -const sample = require('../tools/tools-code-exec-with-txt.js'); -const {delay} = require('./util'); +const sample = require('../tools-code-exec-with-txt.js'); +const {delay} = require('../../test/util'); describe('tools-code-exec-with-txt', async () => { it('should generate code and execution result', async function () { diff --git a/genai/test/tools-func-desc-with-txt.test.js b/genai/tools/test/tools-func-desc-with-txt.test.js similarity index 90% rename from genai/test/tools-func-desc-with-txt.test.js rename to genai/tools/test/tools-func-desc-with-txt.test.js index 6bb8852003..206a3dcf73 100644 --- a/genai/test/tools-func-desc-with-txt.test.js +++ b/genai/tools/test/tools-func-desc-with-txt.test.js @@ -17,8 +17,8 @@ const {describe, it} = require('mocha'); const projectId = process.env.CAIP_PROJECT_ID; -const sample = require('../tools/tools-func-desc-with-txt.js'); -const {delay} = require('./util'); +const sample = require('../tools-func-desc-with-txt.js'); +const {delay} = require('../../test/util'); describe('tools-func-desc-with-txt', async () => { it('should generate a function call', async function () { diff --git a/genai/test/tools-google-maps-coordinates-with-txt.test.js b/genai/tools/test/tools-google-maps-coordinates-with-txt.test.js similarity index 90% rename from genai/test/tools-google-maps-coordinates-with-txt.test.js rename to genai/tools/test/tools-google-maps-coordinates-with-txt.test.js index e21540285c..0cd9e406f9 100644 --- a/genai/test/tools-google-maps-coordinates-with-txt.test.js +++ b/genai/tools/test/tools-google-maps-coordinates-with-txt.test.js @@ -17,8 +17,8 @@ const {describe, it} = require('mocha'); const projectId = process.env.CAIP_PROJECT_ID; -const sample = require('../tools/tools-google-maps-coordinates-with-txt'); -const {delay} = require('./util'); +const sample = require('../tools-google-maps-coordinates-with-txt'); +const {delay} = require('../../test/util'); const {assert} = require('chai'); describe('tools-google-maps-coordinates-with-txt', () => { diff --git a/genai/test/tools-google-search-and-urlcontext-with-txt.test.js b/genai/tools/test/tools-google-search-and-urlcontext-with-txt.test.js similarity index 89% rename from genai/test/tools-google-search-and-urlcontext-with-txt.test.js rename to genai/tools/test/tools-google-search-and-urlcontext-with-txt.test.js index 5b95c84723..b5b875975c 100644 --- a/genai/test/tools-google-search-and-urlcontext-with-txt.test.js +++ b/genai/tools/test/tools-google-search-and-urlcontext-with-txt.test.js @@ -17,8 +17,8 @@ const {describe, it} = require('mocha'); const projectId = process.env.CAIP_PROJECT_ID; -const sample = require('../tools/tools-google-search-and-urlcontext-with-txt'); -const {delay} = require('./util'); +const sample = require('../tools-google-search-and-urlcontext-with-txt'); +const {delay} = require('../../test/util'); const {assert} = require('chai'); describe('tools-google-search-and-urlcontext-with-txt', () => { diff --git a/genai/test/tools-google-search-with-txt.test.js b/genai/tools/test/tools-google-search-with-txt.test.js similarity index 93% rename from genai/test/tools-google-search-with-txt.test.js rename to genai/tools/test/tools-google-search-with-txt.test.js index 7d3dd2fd40..e4c29815ee 100644 --- a/genai/test/tools-google-search-with-txt.test.js +++ b/genai/tools/test/tools-google-search-with-txt.test.js @@ -18,7 +18,7 @@ const {assert} = require('chai'); const {describe, it} = require('mocha'); const projectId = process.env.CAIP_PROJECT_ID; -const sample = require('../tools/tools-google-search-with-txt.js'); +const sample = require('../tools-google-search-with-txt.js'); describe('tools-google-search-with-txt', () => { it('should generate answer to a question in prompt using google search', async function () { diff --git a/genai/test/tools-urlcontext-with-txt.test.js b/genai/tools/test/tools-urlcontext-with-txt.test.js similarity index 91% rename from genai/test/tools-urlcontext-with-txt.test.js rename to genai/tools/test/tools-urlcontext-with-txt.test.js index 6ae66896ed..a77a4fc909 100644 --- a/genai/test/tools-urlcontext-with-txt.test.js +++ b/genai/tools/test/tools-urlcontext-with-txt.test.js @@ -17,8 +17,8 @@ const {describe, it} = require('mocha'); const projectId = process.env.CAIP_PROJECT_ID; -const sample = require('../tools/tools-urlcontext-with-txt'); -const {delay} = require('./util'); +const sample = require('../tools-urlcontext-with-txt'); +const {delay} = require('../../test/util'); const {assert} = require('chai'); describe('tools-urlcontext-with-txt', () => { diff --git a/genai/test/tools-vais-with-txt.test.js b/genai/tools/test/tools-vais-with-txt.test.js similarity index 95% rename from genai/test/tools-vais-with-txt.test.js rename to genai/tools/test/tools-vais-with-txt.test.js index 9cd58c4b2a..281c5775b9 100644 --- a/genai/test/tools-vais-with-txt.test.js +++ b/genai/tools/test/tools-vais-with-txt.test.js @@ -20,7 +20,7 @@ // const {describe, it} = require('mocha'); // // const projectId = process.env.CAIP_PROJECT_ID; -// const sample = require('../tools/tools-vais-with-txt.js'); +// const sample = require('../tools-vais-with-txt.js'); // const location = process.env.GOOGLE_CLOUD_LOCATION || 'global'; // const datastore = `projects/${projectId}/locations/global/collections/default_collection/dataStores/grounding-test-datastore`; diff --git a/genai/tools/tools-code-exec-with-txt-local-img.js b/genai/tools/tools-code-exec-with-txt-local-img.js index 22a8cf0a03..6c54922a49 100644 --- a/genai/tools/tools-code-exec-with-txt-local-img.js +++ b/genai/tools/tools-code-exec-with-txt-local-img.js @@ -35,7 +35,7 @@ async function generateAndExecuteMultimodalCode( const imagePath = path.join( __dirname, - '../test/test-data/640px-Monty_open_door.svg.png' + 'test-data/640px-Monty_open_door.svg.png' ); const imageBuffer = await fs.readFile(imagePath); const imageBase64 = imageBuffer.toString('base64'); diff --git a/genai/tuning/package.json b/genai/tuning/package.json new file mode 100644 index 0000000000..44ccf7e813 --- /dev/null +++ b/genai/tuning/package.json @@ -0,0 +1,21 @@ +{ + "name": "nodejs-genai-tuning", + "private": true, + "license": "Apache-2.0", + "author": "Google LLC", + "engines": { + "node": ">=16.0.0" + }, + "scripts": { + "test": "c8 mocha -p -j 2 --timeout 2400000 test/*.test.js" + }, + "dependencies": { + "@google/genai": "1.30.0" + }, + "devDependencies": { + "c8": "^10.0.0", + "chai": "^4.5.0", + "mocha": "^10.0.0", + "proxyquire": "^2.1.3" + } +} diff --git a/genai/test/tuning-job-create.test.js b/genai/tuning/test/tuning-job-create.test.js similarity index 95% rename from genai/test/tuning-job-create.test.js rename to genai/tuning/test/tuning-job-create.test.js index 3785c8b977..bf3bb8eda7 100644 --- a/genai/test/tuning-job-create.test.js +++ b/genai/tuning/test/tuning-job-create.test.js @@ -45,7 +45,7 @@ describe('tuning-job-create', () => { } } - const sample = proxyquire('../tuning/tuning-job-create.js', { + const sample = proxyquire('../tuning-job-create.js', { '@google/genai': {GoogleGenAI: MockGoogleGenAI}, }); diff --git a/genai/test/tuning-job-get.test.js b/genai/tuning/test/tuning-job-get.test.js similarity index 96% rename from genai/test/tuning-job-get.test.js rename to genai/tuning/test/tuning-job-get.test.js index 06b136f66d..810ee81e62 100644 --- a/genai/test/tuning-job-get.test.js +++ b/genai/tuning/test/tuning-job-get.test.js @@ -47,7 +47,7 @@ describe('tuning-job-get', () => { } } - const sample = proxyquire('../tuning/tuning-job-get.js', { + const sample = proxyquire('../tuning-job-get.js', { '@google/genai': {GoogleGenAI: MockGoogleGenAI}, }); diff --git a/genai/test/tuning-job-list.test.js b/genai/tuning/test/tuning-job-list.test.js similarity index 94% rename from genai/test/tuning-job-list.test.js rename to genai/tuning/test/tuning-job-list.test.js index 500e81d7e7..db41dcda23 100644 --- a/genai/test/tuning-job-list.test.js +++ b/genai/tuning/test/tuning-job-list.test.js @@ -18,7 +18,7 @@ const {assert} = require('chai'); const {describe, it} = require('mocha'); const projectId = process.env.CAIP_PROJECT_ID; -const sample = require('../tuning/tuning-job-list.js'); +const sample = require('../tuning-job-list.js'); describe('tuning-job-list', () => { it('should return tuning job list', async () => { diff --git a/genai/test/tuning-textgen-with-txt.test.js b/genai/tuning/test/tuning-textgen-with-txt.test.js similarity index 96% rename from genai/test/tuning-textgen-with-txt.test.js rename to genai/tuning/test/tuning-textgen-with-txt.test.js index 3cd9886553..2f0b2288a1 100644 --- a/genai/test/tuning-textgen-with-txt.test.js +++ b/genai/tuning/test/tuning-textgen-with-txt.test.js @@ -56,7 +56,7 @@ describe('tuning-textgen-with-txt', () => { } } - const sample = proxyquire('../tuning/tuning-textgen-with-txt.js', { + const sample = proxyquire('../tuning-textgen-with-txt.js', { '@google/genai': {GoogleGenAI: MockGoogleGenAI}, });