AUXteam's picture
Set Gemini API version to v1
8c741f6 verified
/**
* @license
* Copyright 2024 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
*
* http://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.
*/
import { expect, use } from "chai";
import * as chaiAsPromised from "chai-as-promised";
import {
FunctionDeclarationSchemaType,
GoogleGenerativeAI,
HarmBlockThreshold,
HarmCategory,
Tool,
} from "../..";
import { Part } from "../../types";
use(chaiAsPromised);
/**
* Integration tests against live backend.
*/
describe("startChat - tools", function () {
const tools: Tool[] = [
{
functionDeclarations: [
{
name: "getTemperature",
description:
"Get current temperature in degrees Celsius in a given city",
parameters: {
type: FunctionDeclarationSchemaType.OBJECT,
properties: {
city: { type: FunctionDeclarationSchemaType.STRING },
},
required: ["city"],
},
},
],
},
];
const part1: Part = {
text: "What is the temperature in New York?",
};
const part2: Part = {
functionResponse: {
name: "getTemperature",
response: {
name: "getTemperature",
content: {
temperature: "30",
},
},
},
};
this.timeout(60e3);
this.slow(10e3);
it("stream false", async () => {
const genAI = new GoogleGenerativeAI(process.env.GEMINI_API_KEY || "");
const model = genAI.getGenerativeModel(
{
model: "gemini-1.5-flash-latest",
safetySettings: [
{
category: HarmCategory.HARM_CATEGORY_HARASSMENT,
threshold: HarmBlockThreshold.BLOCK_ONLY_HIGH,
},
],
tools,
},
{ apiVersion: "v1beta" },
);
const chat = model.startChat();
const result1 = await chat.sendMessage([part1]);
expect(result1.response.text()).to.be.empty;
expect(result1.response.functionCall()).not.to.be.empty;
const result2 = await chat.sendMessage([part2]);
expect(result2.response.text()).to.not.be.empty;
const history = await chat.getHistory();
expect(history[0].parts[0].text).to.equal(part1.text);
expect(history[2].parts[0].functionCall).to.deep.equal(part2.functionCall);
expect(history[3].parts[0].text).to.include("30");
expect(history.length).to.equal(4);
});
});