{"version":3,"file":"vectorstore.cjs","names":["BaseToolkit","VectorStoreQATool","VECTOR_PREFIX","SUFFIX","ZeroShotAgent","LLMChain","AgentExecutor","VECTOR_ROUTER_PREFIX"],"sources":["../../../../src/agents/toolkits/vectorstore/vectorstore.ts"],"sourcesContent":["import type { BaseLanguageModelInterface } from \"@langchain/core/language_models/base\";\nimport type { VectorStoreInterface } from \"@langchain/core/vectorstores\";\nimport { ToolInterface, BaseToolkit } from \"@langchain/core/tools\";\nimport { VectorStoreQATool } from \"../../../tools/vectorstore.js\";\nimport { ZeroShotCreatePromptArgs, ZeroShotAgent } from \"../../mrkl/index.js\";\nimport { VECTOR_PREFIX, VECTOR_ROUTER_PREFIX } from \"./prompt.js\";\nimport { SUFFIX } from \"../../mrkl/prompt.js\";\nimport { LLMChain } from \"../../../chains/llm_chain.js\";\nimport { AgentExecutor } from \"../../executor.js\";\n\n/**\n * Interface that defines the information about a vector store, including\n * the vector store itself, its name, and description.\n */\nexport interface VectorStoreInfo {\n  vectorStore: VectorStoreInterface;\n  name: string;\n  description: string;\n}\n\n/**\n * Class representing a toolkit for working with a single vector store. It\n * initializes the vector store QA tool based on the provided vector store\n * information and language model.\n * @example\n * ```typescript\n * const toolkit = new VectorStoreToolkit(\n *   {\n *     name: \"state_of_union_address\",\n *     description: \"the most recent state of the Union address\",\n *     vectorStore: new HNSWLib(),\n *   },\n *   new ChatOpenAI({ model: \"gpt-4o-mini\", temperature: 0 }),\n * );\n * const result = await toolkit.invoke({\n *   input:\n *     \"What did biden say about Ketanji Brown Jackson in the state of the union address?\",\n * });\n * console.log(`Got output ${result.output}`);\n * ```\n */\nexport class VectorStoreToolkit extends BaseToolkit {\n  tools: ToolInterface[];\n\n  llm: BaseLanguageModelInterface;\n\n  constructor(\n    vectorStoreInfo: VectorStoreInfo,\n    llm: BaseLanguageModelInterface\n  ) {\n    super();\n    const description = VectorStoreQATool.getDescription(\n      vectorStoreInfo.name,\n      vectorStoreInfo.description\n    );\n    this.llm = llm;\n    this.tools = [\n      new VectorStoreQATool(vectorStoreInfo.name, description, {\n        vectorStore: vectorStoreInfo.vectorStore,\n        llm: this.llm,\n      }),\n    ];\n  }\n}\n\n/**\n * Class representing a toolkit for working with multiple vector stores.\n * It initializes multiple vector store QA tools based on the provided\n * vector store information and language model.\n */\nexport class VectorStoreRouterToolkit extends BaseToolkit {\n  tools: ToolInterface[];\n\n  vectorStoreInfos: VectorStoreInfo[];\n\n  llm: BaseLanguageModelInterface;\n\n  constructor(\n    vectorStoreInfos: VectorStoreInfo[],\n    llm: BaseLanguageModelInterface\n  ) {\n    super();\n    this.llm = llm;\n    this.vectorStoreInfos = vectorStoreInfos;\n    this.tools = vectorStoreInfos.map((vectorStoreInfo) => {\n      const description = VectorStoreQATool.getDescription(\n        vectorStoreInfo.name,\n        vectorStoreInfo.description\n      );\n      return new VectorStoreQATool(vectorStoreInfo.name, description, {\n        vectorStore: vectorStoreInfo.vectorStore,\n        llm: this.llm,\n      });\n    });\n  }\n}\n\nexport function createVectorStoreAgent(\n  llm: BaseLanguageModelInterface,\n  toolkit: VectorStoreToolkit,\n  args?: ZeroShotCreatePromptArgs\n) {\n  const {\n    prefix = VECTOR_PREFIX,\n    suffix = SUFFIX,\n    inputVariables = [\"input\", \"agent_scratchpad\"],\n  } = args ?? {};\n  const { tools } = toolkit;\n  const prompt = ZeroShotAgent.createPrompt(tools, {\n    prefix,\n    suffix,\n    inputVariables,\n  });\n  const chain = new LLMChain({ prompt, llm });\n  const agent = new ZeroShotAgent({\n    llmChain: chain,\n    allowedTools: tools.map((t) => t.name),\n  });\n  return AgentExecutor.fromAgentAndTools({\n    agent,\n    tools,\n    returnIntermediateSteps: true,\n  });\n}\n\nexport function createVectorStoreRouterAgent(\n  llm: BaseLanguageModelInterface,\n  toolkit: VectorStoreRouterToolkit,\n  args?: ZeroShotCreatePromptArgs\n) {\n  const {\n    prefix = VECTOR_ROUTER_PREFIX,\n    suffix = SUFFIX,\n    inputVariables = [\"input\", \"agent_scratchpad\"],\n  } = args ?? {};\n  const { tools } = toolkit;\n  const prompt = ZeroShotAgent.createPrompt(tools, {\n    prefix,\n    suffix,\n    inputVariables,\n  });\n  const chain = new LLMChain({ prompt, llm });\n  const agent = new ZeroShotAgent({\n    llmChain: chain,\n    allowedTools: tools.map((t) => t.name),\n  });\n  return AgentExecutor.fromAgentAndTools({\n    agent,\n    tools,\n    returnIntermediateSteps: true,\n  });\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAyCA,IAAa,qBAAb,cAAwCA,sBAAAA,YAAY;CAClD;CAEA;CAEA,YACE,iBACA,KACA;AACA,SAAO;EACP,MAAM,cAAcC,oBAAAA,kBAAkB,eACpC,gBAAgB,MAChB,gBAAgB,YACjB;AACD,OAAK,MAAM;AACX,OAAK,QAAQ,CACX,IAAIA,oBAAAA,kBAAkB,gBAAgB,MAAM,aAAa;GACvD,aAAa,gBAAgB;GAC7B,KAAK,KAAK;GACX,CAAC,CACH;;;;;;;;AASL,IAAa,2BAAb,cAA8CD,sBAAAA,YAAY;CACxD;CAEA;CAEA;CAEA,YACE,kBACA,KACA;AACA,SAAO;AACP,OAAK,MAAM;AACX,OAAK,mBAAmB;AACxB,OAAK,QAAQ,iBAAiB,KAAK,oBAAoB;GACrD,MAAM,cAAcC,oBAAAA,kBAAkB,eACpC,gBAAgB,MAChB,gBAAgB,YACjB;AACD,UAAO,IAAIA,oBAAAA,kBAAkB,gBAAgB,MAAM,aAAa;IAC9D,aAAa,gBAAgB;IAC7B,KAAK,KAAK;IACX,CAAC;IACF;;;AAIN,SAAgB,uBACd,KACA,SACA,MACA;CACA,MAAM,EACJ,SAASC,iBAAAA,eACT,SAASC,eAAAA,QACT,iBAAiB,CAAC,SAAS,mBAAmB,KAC5C,QAAQ,EAAE;CACd,MAAM,EAAE,UAAU;CAOlB,MAAM,QAAQ,IAAIC,cAAAA,cAAc;EAC9B,UAFY,IAAIC,kBAAAA,SAAS;GAAE,QALdD,cAAAA,cAAc,aAAa,OAAO;IAC/C;IACA;IACA;IACD,CAAC;GACmC;GAAK,CAAC;EAGzC,cAAc,MAAM,KAAK,MAAM,EAAE,KAAK;EACvC,CAAC;AACF,QAAOE,iBAAAA,cAAc,kBAAkB;EACrC;EACA;EACA,yBAAyB;EAC1B,CAAC;;AAGJ,SAAgB,6BACd,KACA,SACA,MACA;CACA,MAAM,EACJ,SAASC,iBAAAA,sBACT,SAASJ,eAAAA,QACT,iBAAiB,CAAC,SAAS,mBAAmB,KAC5C,QAAQ,EAAE;CACd,MAAM,EAAE,UAAU;CAOlB,MAAM,QAAQ,IAAIC,cAAAA,cAAc;EAC9B,UAFY,IAAIC,kBAAAA,SAAS;GAAE,QALdD,cAAAA,cAAc,aAAa,OAAO;IAC/C;IACA;IACA;IACD,CAAC;GACmC;GAAK,CAAC;EAGzC,cAAc,MAAM,KAAK,MAAM,EAAE,KAAK;EACvC,CAAC;AACF,QAAOE,iBAAAA,cAAc,kBAAkB;EACrC;EACA;EACA,yBAAyB;EAC1B,CAAC"}