36 lines
906 B
JavaScript
36 lines
906 B
JavaScript
import 'dotenv/config';
|
|
import Exa from "exa-js";
|
|
|
|
const exaApiKey = process.env.EXA_API_KEY;
|
|
if (!exaApiKey) {
|
|
throw new Error("Missing EXA_API_KEY environment variable for websearch");
|
|
}
|
|
const exa = new Exa(exaApiKey);
|
|
|
|
export default {
|
|
type: 'function',
|
|
name: 'websearch',
|
|
description: 'Perform a google web search.',
|
|
strict: true,
|
|
parameters: {
|
|
type: 'object',
|
|
required: ['query'],
|
|
additionalProperties: false,
|
|
properties: {
|
|
query: { type: 'string', description: 'The search query.' }
|
|
}
|
|
}
|
|
};
|
|
|
|
export async function run(args) {
|
|
try
|
|
{
|
|
console.log('Google search: ', args.query);
|
|
const result = await exa.search( args.query,{ type: "auto", userLocation: "DE", numResults: 20} );
|
|
console.log('Google search result: ', result.results[0]);
|
|
return result;
|
|
} catch (error) {
|
|
return `websearch error: ${error?.message || String(error)}`;
|
|
}
|
|
}
|