agsamantha/node_modules/langchain/dist/util/testing/tools/tavily_search.cjs
2024-10-02 15:15:21 -05:00

75 lines
2.7 KiB
JavaScript

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.TavilySearchResults = void 0;
const tools_1 = require("@langchain/core/tools");
const env_1 = require("@langchain/core/utils/env");
/**
* Tool for the Tavily search API.
*/
class TavilySearchResults extends tools_1.Tool {
static lc_name() {
return "TavilySearchResults";
}
constructor(fields) {
super(fields);
Object.defineProperty(this, "description", {
enumerable: true,
configurable: true,
writable: true,
value: "A search engine optimized for comprehensive, accurate, and trusted results. Useful for when you need to answer questions about current events. Input should be a search query."
});
Object.defineProperty(this, "name", {
enumerable: true,
configurable: true,
writable: true,
value: "tavily_search_results_json"
});
Object.defineProperty(this, "maxResults", {
enumerable: true,
configurable: true,
writable: true,
value: 5
});
Object.defineProperty(this, "apiKey", {
enumerable: true,
configurable: true,
writable: true,
value: void 0
});
Object.defineProperty(this, "kwargs", {
enumerable: true,
configurable: true,
writable: true,
value: {}
});
this.maxResults = fields?.maxResults ?? this.maxResults;
this.kwargs = fields?.kwargs ?? this.kwargs;
this.apiKey = fields?.apiKey ?? (0, env_1.getEnvironmentVariable)("TAVILY_API_KEY");
if (this.apiKey === undefined) {
throw new Error(`No Tavily API key found. Either set an environment variable named "TAVILY_API_KEY" or pass an API key as "apiKey".`);
}
}
async _call(input, _runManager) {
const body = {
query: input,
max_results: this.maxResults,
api_key: this.apiKey,
};
const response = await fetch("https://api.tavily.com/search", {
method: "POST",
headers: {
"content-type": "application/json",
},
body: JSON.stringify({ ...body, ...this.kwargs }),
});
const json = await response.json();
if (!response.ok) {
throw new Error(`Request failed with status code ${response.status}: ${json.error}`);
}
if (!Array.isArray(json.results)) {
throw new Error(`Could not parse Tavily results. Please try again.`);
}
return JSON.stringify(json.results);
}
}
exports.TavilySearchResults = TavilySearchResults;