Skip to content
32 changes: 32 additions & 0 deletions genai/test/tools-google-maps-coordinates-with-txt.test.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
// 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 {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 {assert} = require('chai');

describe('tools-google-maps-coordinates-with-txt', async () => {
it('should use google maps coordinates', async function () {
this.timeout(180000);
this.retries(4);
await delay(this.test);
const output = await sample.generateContent(projectId);
assert(output.length > 0);
});
});
32 changes: 32 additions & 0 deletions genai/test/tools-google-search-and-urlcontext-with-txt.test.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
// 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 {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 {assert} = require('chai');

describe('tools-google-search-and-urlcontext-with-txt', async () => {
it('should create urlcontext and google search', async function () {
this.timeout(180000);
this.retries(4);
await delay(this.test);
const output = await sample.generateContent(projectId);
assert(output.length > 0);
});
});
32 changes: 32 additions & 0 deletions genai/test/tools-urlcontext-with-txt.test.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
// 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 {describe, it} = require('mocha');

const projectId = process.env.CAIP_PROJECT_ID;
const sample = require('../tools/tools-urlcontext-with-txt');
const {delay} = require('./util');
const {assert} = require('chai');

describe('tools-urlcontext-with-txt', async () => {
it('should create urlcontext with txt', async function () {
this.timeout(180000);
this.retries(4);
await delay(this.test);
const output = await sample.generateContent(projectId);
assert(output.length > 0);
});
});
73 changes: 73 additions & 0 deletions genai/tools/tools-google-maps-coordinates-with-txt.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
// 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_tools-google-maps-coordinates-with-txt]
const {GoogleGenAI} = 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 client = new GoogleGenAI({
vertexai: true,
project: projectId,
location: location,
});


const response = await client.models.generateContent({
model: 'gemini-2.5-flash',
contents: 'Where can I get the best espresso near me?',
config: {
tools: [
{
googleMaps: {},
},
],
toolConfig: {
retrievalConfig: {
latLng: {
latitude: 40.7128,
longitude: -74.0060,
},
languageCode: 'en_US',
},
},
},
});

const output = [];

console.log('\n--- Model Output ---');
for (const candidate of response.candidates || []) {
for (const part of candidate.content.parts || []) {
if (part.text) {
console.log(part.text);
output.push(part.text);
}
}
}

return output;
}
// [END googlegenaisdk_tools-google-maps-coordinates-with-txt]

module.exports = {
generateContent,
};
64 changes: 64 additions & 0 deletions genai/tools/tools-google-search-and-urlcontext-with-txt.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
// 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_tools_google_search_and_urlcontext_with_txt]
const {GoogleGenAI} = 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 client = new GoogleGenAI({
vertexai: true,
project: projectId,
location: location,
httpOptions: {apiVersion: 'v1beta1'},
});

// TODO(developer): Here put your URLs!
const url = 'https://www.google.com/search?q=events+in+New+York';

const response = await client.models.generateContent({
model: 'gemini-2.5-flash',
contents: `Give me a three-day events schedule based on ${url}. Also let me know what to take care of considering weather and commute.`,
config: {
tools: [{urlContext: {}}, {googleSearch: {}}],
responseModalities: ['TEXT'],
},
});

const output = [];

console.log('\n--- Model Output ---');
for (const candidate of response.candidates || []) {
for (const part of candidate.content.parts || []) {
if (part.text) {
console.log(part.text);
output.push(part.text);
}
}
}

return output;
}
// [END googlegenaisdk_tools_google_search_and_urlcontext_with_txt]

module.exports = {
generateContent,
};
64 changes: 64 additions & 0 deletions genai/tools/tools-urlcontext-with-txt.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
// 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_tools_urlcontext_with_txt]
const {GoogleGenAI} = 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 client = new GoogleGenAI({
vertexai: true,
project: projectId,
location: location,
});

// TODO(developer): Here put your URLs!
const url1 = 'https://ai.google.dev/gemini-api/docs/models#gemini-2.5-pro';
const url2 = 'https://ai.google.dev/gemini-api/docs/models#gemini-2.5-flash';

const response = await client.models.generateContent({
model: 'gemini-2.5-flash',
contents: `Compare model ${url1} and ${url2}`,
config: {
tools: [{urlContext: {}}],
responseModalities: ['TEXT'],
},
});

const output = [];

console.log('\n--- Model Output ---');
for (const candidate of response.candidates || []) {
for (const part of candidate.content.parts || []) {
if (part.text) {
console.log(part.text);
output.push(part.text);
}
}
}

return output;
}
// [END googlegenaisdk_tools_urlcontext_with_txt]

module.exports = {
generateContent,
};