Cosa sono gli Agent di Langchain
Teoria degli Agent
Nel contesto dei RAG cerchiamo di capire in questo articolo cosa sono gli agent di Langchain: gli agent giocano un ruolo fondamentale quando si desidera interagire con un Large Language Model (LLM) per ottenere informazioni sugli accadimenti attuali, accedere a dati provenienti da database o risorse esterne, o semplicemente utilizzare un’API.
Un esempio più chiaro: come noi essere umani interagiamo con una calcolatrice per calcolare un prodotto tra fattori complicati o effettuiamo una ricerca su google per una nozione che non sappiamo, così anche LLM grazie agli agent interagiscono con il mondo esterno per ottenere risultati e informazioni.
Gli agent usano i Tool che connettono il framework LangChain con terze parti.
Gli Agent sono molto più di un semplice collegamento tra il framework e risorse esterne. Utilizzano il Large Language Model (LLM) per comprendere l’obiettivo assegnato dall’utente, organizzano una lista di passaggi necessari e possiedono la capacità di eseguire tali passaggi. Queste azioni includono la gestione di chiamate API esterne, l’accesso a database, l’esecuzione di sotto-task e la restituzione delle risposte.
Primo Script con Agent di LangChain: Una Calcolatrice Intelligente
Per capire meglio cosa sono gli Agent e per vedere come ragionano, partiamo con uno script molto semplice di un Agent che utilizza un Tool che possiede un LLM specializzato nella computazione di calcoli (LLMMatchChain).
from dotenv import load_dotenv
from langchain_openai import ChatOpenAI
from langchain.chains import LLMMathChain
from langchain.agents import Tool
from langchain.agents import initialize_agent
load_dotenv()
llm = ChatOpenAI(temperature=0, model_name="gpt-3.5-turbo")
#we are going to initializa a calculator tool using LLMathChain (a LLM that perform in calculation)
llm_math = LLMMathChain(llm=llm)
# initialize the math tool
#the tool is basically:
#1. a funcion: in this case, the functionality of the llm_math
#2. a name
#3. and a descrpition (it's basically the prompt): you suggest to the agent
# that this Tool is worth to be used when this description is relevant
math_tool = Tool(
name="Calculator",
func=llm_math.run,
description="Useful for when you need to answer questions about math.",
)
# when giving tools to LLM, we must pass as list of tools
tools = [math_tool]
#for using this tool you have to initilize an agent that contain the tool
zero_shot_agent = initialize_agent(
#zero-shot-react-description:
#ZERO-SHOT: the agent is currently looking at the current prompt (doesn't have any memory)
#REACT: the agent will reason about whatever prompt has been assigned to it
#DESCRIPTION: the agent is based on the description of each of the tools that it has
agent="zero-shot-react-description",
tools=tools,
llm=llm,
verbose=True,
max_iterations=3
)
zero_shot_agent("what is (4.5*2.1)^2.2?")
L’output proveniente da questo script è molto interessante perchè ci lascia vedere (grazie all’opzione verbose = True, nei parametri dell’agent) come un agent ragiona e come arriva al risultato finale:
Un quesito ancora più interessante da porre al Agent potrebbe essere anche sotto forma di testo, per esempio, fornendo al zero_shot_agent:
zero_shot_agent("if Mary has four apples and Giorgio brings two and a half apple "
"boxes (apple box contains eight apples), how many apples do we "
"have?")
si ottiene il seguente output:
Ma come aggiungere un tool a un Agent di LangChain? E perchè?
Il nostro agent, come abbiamo visto, è molto bravo a risolvere problemi matematici di ogni tipo, sia puramente di calcolo che di logica.
Ma se banalmente forniamo una domanda di cultura generale come, per esempio, quale sia la capitale dell’Italia, il nostro agent fornirebbe un’ errore perchè non ha effettivamente alcun tool per poter rispondere.
Per questo, si può aggiungere alla lista dei Tools prima inizializzato con l’unico tool: math_tool
, un tool che sappi eseguire compiti di questo tipo.
Quindi, il nostro codice diventa:
from dotenv import load_dotenv
from langchain.prompts import PromptTemplate
from langchain.chains import LLMChain
from langchain_openai import ChatOpenAI
from langchain.chains import LLMMathChain
from langchain.agents import Tool
from langchain.agents import initialize_agent
load_dotenv()
llm = ChatOpenAI(temperature=0, model_name="gpt-3.5-turbo")
#initailize the prompt that will be used in the llm_chain
prompt = PromptTemplate(
input_variables=["query"],
template="{query}"
)
#we are going to initializa a calculator tool using LLMathChain (a LLM that perform in calculation)
llm_math = LLMMathChain(llm=llm)
#initialize the LLMChain that takes a particular prompt
llm_chain = LLMChain(llm=llm, prompt=prompt)
# initialize the LLM tool
llm_tool = Tool(
name='Language Model',
func=llm_chain.run,
description='use this tool for general purpose queries and logic'
)
# initialize the Math tool
math_tool = Tool(
name="Calculator",
func=llm_math.run,
description="Useful for when you need to answer questions about math.",
)
tools = [math_tool]
tools.append(llm_tool)
# initialize the agent
zero_shot_agent = initialize_agent(
agent="zero-shot-react-description",
tools=tools,
llm=llm,
verbose=True,
max_iterations=3
)
zero_shot_agent("if Mary has four apples and Giorgio brings two and a half apple "
"boxes (apple box contains eight apples), how many apples do we "
"have?")
zero_shot_agent("what is the capital of Italy?")
L’output ottenuto sarà il seguente:
Conclusioni su Cosa sono gli Agent di Langchain
In conclusione, gli Agent di Langchain rappresentano un’avanguardia nel campo dell’intelligenza artificiale, offrendo soluzioni innovative e su misura per superare le sfide sempre più complesse del mondo digitale. La nostra equipe di esperti ha dimostrato come l’impiego di queste tecnologie avanzate possa rivoluzionare il modo in cui interagiamo con l’informazione, ottimizzando processi e incrementando l’efficienza in numerosi settori. Se siete alla ricerca di un partner affidabile e all’avanguardia per esplorare le potenzialità dell’intelligenza artificiale e trasformare le vostre operazioni, Langchain è la soluzione che fa per voi.
Non perdete l’opportunità di far crescere il vostro business con le soluzioni più innovative nel campo dell’intelligenza artificiale. Se siete interessati a scoprire come gli Agent in Langchain possono essere applicati per migliorare le vostre operazioni, vi invitiamo a contattarci tramite il modulo presente sul nostro sito. Un membro del nostro team vi contatterà per una consulenza personalizzata, aiutandovi a esplorare tutte le potenzialità che Langchain può offrire al vostro business. Non aspettate, raggiungeteci oggi stesso per iniziare a trasformare il futuro del vostro settore.