Source code for langchain.agents.agent_toolkits.vectorstore.base

"""向量存储代理。"""
from typing import Any, Dict, Optional

from langchain_core.callbacks.base import BaseCallbackManager
from langchain_core.language_models import BaseLanguageModel

from langchain.agents.agent import AgentExecutor
from langchain.agents.agent_toolkits.vectorstore.prompt import PREFIX, ROUTER_PREFIX
from langchain.agents.agent_toolkits.vectorstore.toolkit import (
    VectorStoreRouterToolkit,
    VectorStoreToolkit,
)
from langchain.agents.mrkl.base import ZeroShotAgent
from langchain.chains.llm import LLMChain


[docs]def create_vectorstore_agent( llm: BaseLanguageModel, toolkit: VectorStoreToolkit, callback_manager: Optional[BaseCallbackManager] = None, prefix: str = PREFIX, verbose: bool = False, agent_executor_kwargs: Optional[Dict[str, Any]] = None, **kwargs: Any, ) -> AgentExecutor: """从LLM和工具构建一个VectorStore代理。 参数: llm (BaseLanguageModel): 将被代理使用的LLM toolkit (VectorStoreToolkit): 代理的工具集 callback_manager (Optional[BaseCallbackManager], optional): 用于处理回调的对象 [默认为None] prefix (str, optional): 代理的前缀提示。如果未提供,则使用默认的PREFIX。 verbose (bool, optional): 如果您想查看scratchpad的内容。[默认为False] agent_executor_kwargs (Optional[Dict[str, Any]], optional): 如果有任何其他参数要发送给代理。[默认为None] **kwargs: 要传递给ZeroShotAgent的其他命名参数。 返回: AgentExecutor: 返回一个可调用的AgentExecutor对象。您可以调用它或使用run方法与查询一起获取响应。 """ # noqa: E501 tools = toolkit.get_tools() prompt = ZeroShotAgent.create_prompt(tools, prefix=prefix) llm_chain = LLMChain( llm=llm, prompt=prompt, callback_manager=callback_manager, ) tool_names = [tool.name for tool in tools] agent = ZeroShotAgent(llm_chain=llm_chain, allowed_tools=tool_names, **kwargs) return AgentExecutor.from_agent_and_tools( agent=agent, tools=tools, callback_manager=callback_manager, verbose=verbose, **(agent_executor_kwargs or {}), )
[docs]def create_vectorstore_router_agent( llm: BaseLanguageModel, toolkit: VectorStoreRouterToolkit, callback_manager: Optional[BaseCallbackManager] = None, prefix: str = ROUTER_PREFIX, verbose: bool = False, agent_executor_kwargs: Optional[Dict[str, Any]] = None, **kwargs: Any, ) -> AgentExecutor: """从LLM和工具构建一个VectorStore路由代理。 参数: llm (BaseLanguageModel): 将被代理使用的LLM toolkit (VectorStoreRouterToolkit): 代理的工具集,具有与多个向量存储进行路由的能力 callback_manager (Optional[BaseCallbackManager], optional): 处理回调的对象 [默认为None] prefix (str, optional): 路由代理的前缀提示。如果未提供,则使用默认的ROUTER_PREFIX。 verbose (bool, optional): 如果您想查看scratchpad的内容。[默认为False] agent_executor_kwargs (Optional[Dict[str, Any]], optional): 如果有任何其他参数要发送给代理。[默认为None] **kwargs: 传递给ZeroShotAgent的其他命名参数。 返回: AgentExecutor: 返回一个可调用的AgentExecutor对象。您可以调用它或使用run方法与查询一起获取响应。 """ # noqa: E501 tools = toolkit.get_tools() prompt = ZeroShotAgent.create_prompt(tools, prefix=prefix) llm_chain = LLMChain( llm=llm, prompt=prompt, callback_manager=callback_manager, ) tool_names = [tool.name for tool in tools] agent = ZeroShotAgent(llm_chain=llm_chain, allowed_tools=tool_names, **kwargs) return AgentExecutor.from_agent_and_tools( agent=agent, tools=tools, callback_manager=callback_manager, verbose=verbose, **(agent_executor_kwargs or {}), )