LangchainAgent(
model: str,
*,
prompt: typing.Optional[RunnableSerializable] = None,
tools: typing.Optional[
typing.Sequence[typing.Union[typing.Callable, BaseTool]]
] = None,
output_parser: typing.Optional[RunnableSerializable] = None,
chat_history: typing.Optional[GetSessionHistoryCallable] = None,
model_kwargs: typing.Optional[typing.Mapping[str, typing.Any]] = None,
agent_executor_kwargs: typing.Optional[typing.Mapping[str, typing.Any]] = None,
runnable_kwargs: typing.Optional[typing.Mapping[str, typing.Any]] = None,
model_builder: typing.Optional[typing.Callable] = None,
runnable_builder: typing.Optional[typing.Callable] = None
)
Un agente Langchain.
Riferimento:
Metodi
LangchainAgent
LangchainAgent(
model: str,
*,
prompt: typing.Optional[RunnableSerializable] = None,
tools: typing.Optional[
typing.Sequence[typing.Union[typing.Callable, BaseTool]]
] = None,
output_parser: typing.Optional[RunnableSerializable] = None,
chat_history: typing.Optional[GetSessionHistoryCallable] = None,
model_kwargs: typing.Optional[typing.Mapping[str, typing.Any]] = None,
agent_executor_kwargs: typing.Optional[typing.Mapping[str, typing.Any]] = None,
runnable_kwargs: typing.Optional[typing.Mapping[str, typing.Any]] = None,
model_builder: typing.Optional[typing.Callable] = None,
runnable_builder: typing.Optional[typing.Callable] = None
)
Inizializza LangchainAgent.
In sostanza, supponendo che venga chiamato .set_up(), questo corrisponderà a
model = model_builder(model_name=model, model_kwargs=model_kwargs)
runnable = runnable_builder(
prompt=prompt,
model=model,
tools=tools,
output_parser=output_parser,
chat_history=chat_history,
agent_executor_kwargs=agent_executor_kwargs,
runnable_kwargs=runnable_kwargs,
)
Se tutto si basa sui valori predefiniti, corrisponde a
# model_builder
from langchain_google_vertexai import ChatVertexAI
llm = ChatVertexAI(model_name=model, **model_kwargs)
# runnable_builder
from langchain import agents
from langchain_core.runnables.history import RunnableWithMessageHistory
agent_executor = agents.AgentExecutor(
agent=prompt | llm.bind_tools(tools=tools) | output_parser,
tools=tools,
**agent_executor_kwargs,
)
runnable = RunnableWithMessageHistory(
runnable=agent_executor,
get_session_history=chat_history,
**runnable_kwargs,
)
Parametri | |
---|---|
Nome | Description |
model |
str
Facoltativo. Il nome del modello (ad es. "gemini-1.0-pro"). |
prompt |
langchain_core.runnables.RunnableSerializable
Facoltativo. Il modello di prompt per il modello. Il valore predefinito è ChatPromptTemplate. |
tools |
Sequence[langchain_core.tools.BaseTool, Callable]
Facoltativo. Gli strumenti che l'agente può utilizzare. Tutti gli elementi richiamabili di input (ad esempio, il metodo di funzione o di classe) verranno convertiti in un cosiddetto longchain.tools.base.StructuredTool. Il valore predefinito è Nessuno. |
output_parser |
langchain_core.runnables.RunnableSerializable
Facoltativo. Il parser di output per il modello. Il valore predefinito è un parser di output che funzioni con le chiamate di funzione Gemini. |
chat_history |
langchain_core.runnables.history.GetSessionHistoryCallable
Facoltativo. Richiamabile che restituisce un nuovo BaseChatMessage alla cronologia. Il valore predefinito è Nessuno, ad esempio la cronologia chat non viene conservata. |
model_kwargs |
Mapping[str, Any]
Facoltativo. Argomenti parole chiave aggiuntivi per il costruttore di chat_models.ChatVertexAI. Un esempio potrebbe essere { # temperature (float): Sampling temperature, it controls the # degree of randomness in token selection. "temperature": 0.28, # max_output_tokens (int): Token limit determines the # maximum amount of text output from one prompt. "max_output_tokens": 1000, # top_p (float): Tokens are selected from most probable to # least, until the sum of their probabilities equals the # top_p value. "top_p": 0.95, # top_k (int): How the model selects tokens for output, the # next token is selected from among the top_k most probable # tokens. "top_k": 40, } |
agent_executor_kwargs |
Mapping[str, Any]
Facoltativo. Argomenti aggiuntivi per le parole chiave per il costruttore di labchain.agents.AgentExecutor. Un esempio potrebbe essere { # Whether to return the agent's trajectory of intermediate # steps at the end in addition to the final output. "return_intermediate_steps": False, # The maximum number of steps to take before ending the # execution loop. "max_iterations": 15, # The method to use for early stopping if the agent never # returns |
runnable_kwargs |
Mapping[str, Any]
Facoltativo. Altri argomenti per le parole chiave per il costruttore di labchain.runnables.history.RunnableWithMessagehistory se chat_history è specificato. Se chat_history è impostato su None, verrà ignorato. |
model_builder |
Callable
Facoltativo. Chiamabile che restituisce un nuovo modello linguistico. Il valore predefinito è un elemento richiamabile che restituisce ChatVertexAI in base a |
runnable_builder |
Callable
Facoltativo. Richiamabile che restituisce un nuovo elemento eseguibile. Può essere utilizzato per personalizzare la logica di orchestrazione dell'agente in base al modello restituito da |
Eccezioni | |
---|---|
Tipo | Description |
TypeError |
Se è presente uno strumento non valido (ad esempio, una funzione con un input |
tha |
non specifica il tipo). |
query
query(
*,
input: typing.Union[str, typing.Mapping[str, typing.Any]],
config: typing.Optional[RunnableConfig] = None,
**kwargs: typing.Any
) -> typing.Dict[str, typing.Any]
Esegue una query sull'agente con l'input e la configurazione specificati.
Parametri | |
---|---|
Nome | Description |
input |
Union[str, Mapping[str, Any]]
Obbligatorio. L'input da passare all'agente. |
config |
langchain_core.runnables.RunnableConfig
Facoltativo. La configurazione (se presente) da utilizzare per richiamare l'agente. |
set_up
set_up()
Configura l'agente per l'esecuzione delle query in fase di runtime.
Inizializza il modello, lo associa agli strumenti e lo collega al modello di prompt e all'analizzatore sintattico di output.
Questo metodo non deve essere chiamato per un oggetto che viene passato al servizio ReasoningEngine per il deployment, poiché inizializza i client che non possono essere serializzati.