FEAT: implement temp version of main tooling feedback loop
This commit is contained in:
@@ -0,0 +1,45 @@
|
||||
import { tool } from "@langchain/core/tools";
|
||||
import * as z from "zod";
|
||||
import { queryScraper } from "./webSearch";
|
||||
import { extractWebpageContent } from "./webpageFetch";
|
||||
|
||||
|
||||
function rankAndDisplayData(data: string[]):string {
|
||||
//TODO: hybrid re-ranking of the provided data
|
||||
return data.join("\n")
|
||||
}
|
||||
|
||||
// Define tools
|
||||
const webSearch = tool(
|
||||
async ({ a }) => {
|
||||
const data = await queryScraper(a);
|
||||
return rankAndDisplayData(data);
|
||||
},
|
||||
{
|
||||
name: "WebSearch",
|
||||
description: "Search DuckDuckGo for the provided query",
|
||||
schema: z.object({
|
||||
a: z.string().describe("Search term"),
|
||||
}),
|
||||
}
|
||||
);
|
||||
|
||||
const openWebpage = tool(
|
||||
async ({ a }) => {
|
||||
const data = await extractWebpageContent(a);
|
||||
return rankAndDisplayData(data);
|
||||
},
|
||||
{
|
||||
name: "OpenWebpage",
|
||||
description: "Opens webpage and returns most relevent snippets",
|
||||
schema: z.object({
|
||||
a: z.string().describe("URL"),
|
||||
}),
|
||||
}
|
||||
);
|
||||
|
||||
// Augment the LLM with tools
|
||||
export const triggerEventToolsByName = {
|
||||
[webSearch.name]: webSearch,
|
||||
[openWebpage.name]: openWebpage
|
||||
};
|
||||
Reference in New Issue
Block a user