|
""" |
|
**Agent** is a class that uses an LLM to choose a sequence of actions to take. |
|
|
|
In Chains, a sequence of actions is hardcoded. In Agents, |
|
a language model is used as a reasoning engine to determine which actions |
|
to take and in which order. |
|
|
|
Agents select and use **Tools** and **Toolkits** for actions. |
|
|
|
**Class hierarchy:** |
|
|
|
.. code-block:: |
|
|
|
BaseSingleActionAgent --> LLMSingleActionAgent |
|
OpenAIFunctionsAgent |
|
XMLAgent |
|
Agent --> <name>Agent # Examples: ZeroShotAgent, ChatAgent |
|
|
|
|
|
BaseMultiActionAgent --> OpenAIMultiFunctionsAgent |
|
|
|
|
|
**Main helpers:** |
|
|
|
.. code-block:: |
|
|
|
AgentType, AgentExecutor, AgentOutputParser, AgentExecutorIterator, |
|
AgentAction, AgentFinish |
|
|
|
""" |
|
|
|
from pathlib import Path |
|
from typing import TYPE_CHECKING, Any |
|
|
|
from langchain_core._api.path import as_import_path |
|
from langchain_core.tools import Tool |
|
from langchain_core.tools.convert import tool |
|
|
|
from langchain._api import create_importer |
|
from langchain.agents.agent import ( |
|
Agent, |
|
AgentExecutor, |
|
AgentOutputParser, |
|
BaseMultiActionAgent, |
|
BaseSingleActionAgent, |
|
LLMSingleActionAgent, |
|
) |
|
from langchain.agents.agent_iterator import AgentExecutorIterator |
|
from langchain.agents.agent_toolkits.vectorstore.base import ( |
|
create_vectorstore_agent, |
|
create_vectorstore_router_agent, |
|
) |
|
from langchain.agents.agent_types import AgentType |
|
from langchain.agents.conversational.base import ConversationalAgent |
|
from langchain.agents.conversational_chat.base import ConversationalChatAgent |
|
from langchain.agents.initialize import initialize_agent |
|
from langchain.agents.json_chat.base import create_json_chat_agent |
|
from langchain.agents.loading import load_agent |
|
from langchain.agents.mrkl.base import MRKLChain, ZeroShotAgent |
|
from langchain.agents.openai_functions_agent.base import ( |
|
OpenAIFunctionsAgent, |
|
create_openai_functions_agent, |
|
) |
|
from langchain.agents.openai_functions_multi_agent.base import OpenAIMultiFunctionsAgent |
|
from langchain.agents.openai_tools.base import create_openai_tools_agent |
|
from langchain.agents.react.agent import create_react_agent |
|
from langchain.agents.react.base import ReActChain, ReActTextWorldAgent |
|
from langchain.agents.self_ask_with_search.base import ( |
|
SelfAskWithSearchChain, |
|
create_self_ask_with_search_agent, |
|
) |
|
from langchain.agents.structured_chat.base import ( |
|
StructuredChatAgent, |
|
create_structured_chat_agent, |
|
) |
|
from langchain.agents.tool_calling_agent.base import create_tool_calling_agent |
|
from langchain.agents.xml.base import XMLAgent, create_xml_agent |
|
|
|
if TYPE_CHECKING: |
|
from langchain_community.agent_toolkits.json.base import create_json_agent |
|
from langchain_community.agent_toolkits.load_tools import ( |
|
get_all_tool_names, |
|
load_huggingface_tool, |
|
load_tools, |
|
) |
|
from langchain_community.agent_toolkits.openapi.base import create_openapi_agent |
|
from langchain_community.agent_toolkits.powerbi.base import create_pbi_agent |
|
from langchain_community.agent_toolkits.powerbi.chat_base import ( |
|
create_pbi_chat_agent, |
|
) |
|
from langchain_community.agent_toolkits.spark_sql.base import create_spark_sql_agent |
|
from langchain_community.agent_toolkits.sql.base import create_sql_agent |
|
|
|
DEPRECATED_CODE = [ |
|
"create_csv_agent", |
|
"create_pandas_dataframe_agent", |
|
"create_spark_dataframe_agent", |
|
"create_xorbits_agent", |
|
] |
|
|
|
|
|
|
|
|
|
DEPRECATED_LOOKUP = { |
|
"create_json_agent": "langchain_community.agent_toolkits.json.base", |
|
"create_openapi_agent": "langchain_community.agent_toolkits.openapi.base", |
|
"create_pbi_agent": "langchain_community.agent_toolkits.powerbi.base", |
|
"create_pbi_chat_agent": "langchain_community.agent_toolkits.powerbi.chat_base", |
|
"create_spark_sql_agent": "langchain_community.agent_toolkits.spark_sql.base", |
|
"create_sql_agent": "langchain_community.agent_toolkits.sql.base", |
|
"load_tools": "langchain_community.agent_toolkits.load_tools", |
|
"load_huggingface_tool": "langchain_community.agent_toolkits.load_tools", |
|
"get_all_tool_names": "langchain_community.agent_toolkits.load_tools", |
|
} |
|
|
|
_import_attribute = create_importer(__package__, deprecated_lookups=DEPRECATED_LOOKUP) |
|
|
|
|
|
def __getattr__(name: str) -> Any: |
|
"""Get attr name.""" |
|
if name in DEPRECATED_CODE: |
|
|
|
HERE = Path(__file__).parents[1] |
|
relative_path = as_import_path( |
|
Path(__file__).parent, suffix=name, relative_to=HERE |
|
) |
|
old_path = "langchain." + relative_path |
|
new_path = "langchain_experimental." + relative_path |
|
raise ImportError( |
|
f"{name} has been moved to langchain experimental. " |
|
"See https://github.com/langchain-ai/langchain/discussions/11680" |
|
"for more information.\n" |
|
f"Please update your import statement from: `{old_path}` to `{new_path}`." |
|
) |
|
return _import_attribute(name) |
|
|
|
|
|
__all__ = [ |
|
"Agent", |
|
"AgentExecutor", |
|
"AgentExecutorIterator", |
|
"AgentOutputParser", |
|
"AgentType", |
|
"BaseMultiActionAgent", |
|
"BaseSingleActionAgent", |
|
"ConversationalAgent", |
|
"ConversationalChatAgent", |
|
"LLMSingleActionAgent", |
|
"MRKLChain", |
|
"OpenAIFunctionsAgent", |
|
"OpenAIMultiFunctionsAgent", |
|
"ReActChain", |
|
"ReActTextWorldAgent", |
|
"SelfAskWithSearchChain", |
|
"StructuredChatAgent", |
|
"ZeroShotAgent", |
|
"create_json_agent", |
|
"create_openapi_agent", |
|
"create_pbi_agent", |
|
"create_pbi_chat_agent", |
|
"create_spark_sql_agent", |
|
"create_sql_agent", |
|
"create_vectorstore_agent", |
|
"create_vectorstore_router_agent", |
|
"get_all_tool_names", |
|
"initialize_agent", |
|
"load_agent", |
|
"load_huggingface_tool", |
|
"load_tools", |
|
"XMLAgent", |
|
"create_openai_functions_agent", |
|
"create_xml_agent", |
|
"create_react_agent", |
|
"create_openai_tools_agent", |
|
"create_self_ask_with_search_agent", |
|
"create_json_chat_agent", |
|
"create_structured_chat_agent", |
|
"create_tool_calling_agent", |
|
"Tool", |
|
"tool", |
|
] |
|
|