Spaces:
Paused
Paused
UX-agent / backend /node_modules /@google /generative-ai /test-integration /node /start-chat-tools.test.ts
| /** | |
| * @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); | |
| }); | |
| }); | |