matt HOFFNER
cleanup
1c1c1be
raw
history blame
963 Bytes
import { Tool } from 'openai-function-calling-tools';
import { z } from 'zod';
import { getJson } from 'serpapi';
function createSerpApi({ apiKey }: { apiKey: string }) {
const paramsSchema = z.object({
input: z.string(),
});
const name = 'serpApi';
const description = 'A custom search engine. Useful for when you need to answer questions about current events. Input should be a search query. Outputs a JSON array of results.';
const execute = async ({ input }: z.infer<typeof paramsSchema>) => {
try {
const response = await getJson({
engine: "google",
api_key: apiKey,
q: input,
location: "Seattle, Washington",
});
console.log(response);
return JSON.stringify(response);
} catch (error) {
throw new Error(`Error in serpApi: ${error}`);
}
};
return new Tool(paramsSchema, name, description, execute).tool;
}
export { createSerpApi };