Spaces:
Paused
Paused
File size: 2,818 Bytes
8c741f6 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 | /**
* @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);
});
});
|