diff --git a/genai/test/textgen-with-txt-routing.test.js b/genai/test/textgen-with-txt-routing.test.js new file mode 100644 index 0000000000..28460ce373 --- /dev/null +++ b/genai/test/textgen-with-txt-routing.test.js @@ -0,0 +1,28 @@ +// Copyright 2025 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +'use strict'; + +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'); + +describe('textgen-with-txt-routing', async () => { + it('should generate text content from a text prompt and with routing configuration', async () => { + const output = await sample.generateContent(projectId); + assert(output.length > 0 && output.includes('AI')); + }); +}); diff --git a/genai/text-generation/textgen-with-txt-routing.js b/genai/text-generation/textgen-with-txt-routing.js new file mode 100644 index 0000000000..58b5f19374 --- /dev/null +++ b/genai/text-generation/textgen-with-txt-routing.js @@ -0,0 +1,53 @@ +// Copyright 2025 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +'use strict'; + +// [START googlegenaisdk_textgen_with_txt_routing] +const {GoogleGenAI, FeatureSelectionPreference} = require('@google/genai'); + +const GOOGLE_CLOUD_PROJECT = process.env.GOOGLE_CLOUD_PROJECT; +const GOOGLE_CLOUD_LOCATION = process.env.GOOGLE_CLOUD_LOCATION || 'global'; + +async function generateContent( + projectId = GOOGLE_CLOUD_PROJECT, + location = GOOGLE_CLOUD_LOCATION +) { + const ai = new GoogleGenAI({ + vertexai: true, + project: projectId, + location: location, + }); + + const generateContentConfig = { + modelSelectionConfig: { + featureSelectionPreference: FeatureSelectionPreference.PRIORITIZE_COST, + }, + }; + + const response = await ai.models.generateContent({ + model: 'model-optimizer-exp-04-09', + contents: 'How does AI work?', + config: generateContentConfig, + }); + + console.log(response.text); + + return response.text; +} +// [END googlegenaisdk_textgen_with_txt_routing] + +module.exports = { + generateContent, +};