Skip to content
Snippets Groups Projects
tools.ts 1.63 KiB
Newer Older
  • Learn to ignore specific revisions
  • import { red } from "picocolors";
    
    
    export type Tool = {
      display: string;
      name: string;
      config?: Record<string, any>;
    
      dependencies?: ToolDependencies[];
    };
    export type ToolDependencies = {
      name: string;
      version?: string;
    
    };
    
    export const supportedTools: Tool[] = [
      {
    
        display: "Google Search (configuration required after installation)",
    
        name: "google.GoogleSearchToolSpec",
    
          engine:
            "Your search engine id, see https://developers.google.com/custom-search/v1/overview#prerequisites",
    
          key: "Your search api key",
          num: 2,
        },
    
        dependencies: [
          {
            name: "llama-index-tools-google",
            version: "0.1.2",
          },
        ],
    
      },
      {
        display: "Wikipedia",
    
        name: "wikipedia.WikipediaToolSpec",
        dependencies: [
          {
            name: "llama-index-tools-wikipedia",
            version: "0.1.2",
          },
        ],
    
    export const getTool = (toolName: string): Tool | undefined => {
      return supportedTools.find((tool) => tool.name === toolName);
    };
    
    export const getTools = (toolsName: string[]): Tool[] => {
    
    Marcus Schiesser's avatar
    Marcus Schiesser committed
      const tools: Tool[] = [];
    
      for (const toolName of toolsName) {
        const tool = getTool(toolName);
        if (!tool) {
          console.log(
            red(
              `Error: Tool '${toolName}' is not supported. Supported tools are: ${supportedTools
                .map((t) => t.name)
                .join(", ")}`,
            ),
          );
          process.exit(1);
        }
        tools.push(tool);
      }
      return tools;
    
    export const toolsRequireConfig = (tools?: Tool[]): boolean => {
    
        return tools?.some((tool) => Object.keys(tool.config || {}).length > 0);