introduzione
Immagina di far conoscere a tua nonna le meraviglie di intelligenza artificiale lasciandola interagire con ChatGPT, assistendo alla sua eccitazione mentre l'IA si impegna in una conversazione fluida. Questo articolo esplora come puoi creare i tuoi agenti AI intelligenti usando LangChain, un potente Libreria Python che semplifica il processo di sviluppo.
Sfruttando LangChain, anche chi ha una minima competenza tecnica può creare applicazioni AI sofisticate, su misura per esigenze specifiche. Ti guideremo nella configurazione di un agente AI in grado di effettuare web scraping e riepilogo dei contenuti, mostrando il potenziale di LangChain per trasformare il tuo approccio a vari compiti. Che tu sia un principiante o un esperto del settore, LangChain ti fornisce gli strumenti per sviluppare soluzioni AI dinamiche e consapevoli del contesto.
Panoramica
- Scopri le caratteristiche principali e i vantaggi dell'utilizzo di LangChain per lo sviluppo di agenti di intelligenza artificiale.
- Scopri come impostare e configurare LangChain in un ambiente Python.
- Ottieni esperienza pratica nella creazione di agenti di intelligenza artificiale per attività quali il web scraping e la sintesi dei contenuti.
- Scopri le differenze tra i chatbot tradizionali e gli agenti LangChain.
- Scopri come personalizzare ed estendere LangChain per soddisfare specifiche esigenze applicative.
Che cos'è LangChain?
LangChain semplifica lo sviluppo di agenti AI intelligenti con la sua innovativa libreria open source. Nel campo in rapida evoluzione di intelligenza artificiale (AI), la capacità di creare agenti in grado di impegnarsi in dialoghi naturali e contestualizzati con gli utenti è diventata sempre più preziosa. LangChain si distingue perché fornisce un framework robusto che si integra perfettamente con vari modelli linguistici, rendendolo una scelta ideale per gli sviluppatori che mirano a creare agenti AI sofisticati.
Definizione e contesto
LangChain risponde alla necessità di agenti AI più avanzati e versatili. I chatbot tradizionali, pur essendo utili, spesso non riescono a mantenere il contesto e a comprendere le interazioni sfumate. LangChain risponde a queste limitazioni sfruttando modelli linguistici all'avanguardia, come GPT-3, per migliorare le capacità conversazionali degli agenti che alimenta.
La libreria è nata dal riconoscimento che, nonostante esistano modelli linguistici potenti, integrarli in applicazioni pratiche può essere impegnativo. LangChain astrae gran parte di questa complessità, offrendo un'interfaccia user-friendly che semplifica il processo di creazione, formazione e distribuzione di agenti AI.
Caratteristiche principali di LangChain
LangChain offre una serie di funzionalità progettate per facilitare lo sviluppo di agenti AI robusti. Uno dei suoi punti di forza principali è la sua architettura modulare, che consente agli sviluppatori di combinare e abbinare i componenti in base alle proprie esigenze. Questa flessibilità garantisce che LangChain possa essere adattato a un'ampia varietà di casi d'uso, dai bot del servizio clienti agli assistenti personali virtuali.
- Integrazione con modelli linguistici avanzati: LangChain supporta l'integrazione di modelli linguistici all'avanguardia come GPT-3, consentendo agli agenti di generare risposte più naturali e contestualmente appropriate. Questa capacità è fondamentale per creare interazioni utente coinvolgenti che imitano la conversazione umana.
- Gestione del contesto: Una delle caratteristiche più importanti di LangChain è la sua capacità di mantenere il contesto durante una conversazione.
- Personalizzazione ed estensibilità: LangChain è progettato per essere altamente personalizzabile. Gli sviluppatori possono estendere la sua funzionalità integrando API e fonti di dati aggiuntive, adattando il comportamento dei loro agenti per soddisfare requisiti specifici.
- Facilità d'uso: Nonostante le sue potenti funzionalità, LangChain rimane per sua natura intuitivo.
Fondamenti degli agenti LangChain
Nella documentazione di LangChain, possiamo leggere: “L'idea fondamentale degli agenti è quella di usare un modello linguistico per scegliere una sequenza di azioni da intraprendere. Una sequenza di azioni è codificata (nel codice) in catene. Negli agenti, un modello linguistico è usato come motore di ragionamento per determinare quali azioni intraprendere e in quale ordine”.
Un agente, nel contesto dell'IA, si riferisce a un sistema più avanzato e autonomo in grado di eseguire una gamma più ampia di attività. Gli agenti sono progettati per comprendere, interpretare e rispondere agli input degli utenti in modo più flessibile e intelligente rispetto ai chatbot. In altre parole, gli agenti ti consentono semplicemente di svolgere l'attività per tuo conto.
Dopodiché, puoi dirmi qual è la differenza con un chatbot classico. A differenza degli agenti, un chatbot è un programma per computer progettato per simulare una conversazione con utenti umani, specialmente su Internet. La grande differenza sta nell'uso di algoritmi LLM e deep learning per generare risposte in modo dinamico. Non si limitano alle interazioni con script e possono adattare le loro risposte in base al contesto e alle sfumature della conversazione. A differenza dei chatbot tradizionali che spesso hanno difficoltà con la conservazione del contesto, LangChain può ricordare le interazioni precedenti, rendendo i dialoghi più coerenti e pertinenti su interazioni estese.
Esempio di codice pratico: creazione di un agente AI
Per dimostrare l'uso di un agente con web scraping e la libreria fundus, possiamo creare uno script Python che utilizza LangChain per creare un agente che estrae articoli dal web e li riassume.
Per iniziare, avrai bisogno di un ambiente Python configurato con le librerie necessarie. Ecco come installare LangChain:
pip install langchain fundus
Importazioni
from langchain.agents import tool
from langchain_openai import ChatOpenAI
from fundus import PublisherCollection, Crawler, Requires
from langchain_core.prompts import ChatPromptTemplate, MessagesPlaceholder
Inizializzazione dell'LLM
llm = ChatOpenAI(modello=”gpt-3.5-turbo”, temperatura=0)
ChatApertaAI: Inizializza un'istanza del modello GPT-3.5 con un'impostazione di temperatura pari a 0, il che rende le risposte del modello più deterministiche.
In questa sezione estraiamo un articolo da un editore di notizie statunitense con fundus library.
@tool
def extract_article(max_article: int):
"""Returns a news article article from USA."""
crawler = Crawler(PublisherCollection.us)
article_extracted = (article.body.text() for article in crawler.crawl(max_articles=max_article))(0)
return str(article_extracted)
- @attrezzo: Decoratore che definisce la funzione come strumento per l'agente.
- Crawler (PublisherCollection.us): Inizializza un crawler per la raccolta degli editori statunitensi.
- crawler.crawl(max_articles=max_articolo): Esegue la scansione del sito web per il numero specificato di articoli.
- articolo.corpo.testo(): Estrae il testo del corpo dell'articolo.
- restituisci str(articolo_estratto): Restituisce il testo dell'articolo estratto come stringa.
Esempio di testo dell'articolo
L'articolo è:
Le famiglie dei civili uccisi dagli Stati Uniti in Somalia condividono le loro idee di giustizia in un nuovo rapporto. Il Pentagono non ha risposto. L'esercito americano ha condotto una campagna militare continua in Somalia dagli anni 2000, lanciando quasi 300 attacchi con droni e incursioni di commando negli ultimi 17 anni. In un attacco aereo dell'aprile 2018, le truppe americane hanno ucciso tre, e forse cinque, civili con un paio di missili. Un'indagine militare statunitense ha riferito che il secondo missile ha ucciso una donna e un bambino, ma il rapporto ha concluso che le loro identità potrebbero rimanere sconosciute.
L'anno scorso, la mia inchiesta per The Intercept ha svelato i dettagli di questo attacco disastroso. Il secondo missile ha ucciso la ventiduenne Luul Dahir Mohamed e la figlia di quattro anni, Mariam Shilow Muse, dopo essere sopravvissute all'attacco iniziale.
Questo è un esempio del testo dell'articolo che potrebbe essere estratto dallo strumento extract_article.
Strumento di quotazione
tools = (extract_article)
Modello di richiesta
prompt = ChatPromptTemplate.from_messages(
(
("system", "You are very powerful assistant, but don't know current events"),
("user", "{input}"),
MessagesPlaceholder(variable_name="agent_scratchpad"),
)
)
- ChatPromptTemplate.da_messaggi: Crea un modello di richiesta per l'agente.
- MessaggiSegnaposto: Segnaposto per lo scratchpad dell'agente (passaggi intermedi).
Strumenti di rilegatura per LLM
Questo codice associa gli strumenti specificati al modello linguistico (`llm`) per migliorarne la funzionalità.
llm_with_tools = llm.bind_tools(tools)
Impostazione dell'agente
Questo codice imposta un agente combinando la gestione degli input, la formattazione dei prompt, l'integrazione dello strumento LLM e l'analisi dell'output utilizzando le funzioni `format_to_openai_tool_messages` e `OpenAIToolsAgentOutputParser`.
from langchain.agents.format_scratchpad.openai_tools import format_to_openai_tool_messages
from langchain.agents.output_parsers.openai_tools import OpenAIToolsAgentOutputParser
agent = (
{
"input": lambda x: x("input"),
"agent_scratchpad": lambda x: format_to_openai_tool_messages(x("intermediate_steps")),
}
| prompt
| llm_with_tools
| OpenAIToolsAgentOutputParser()
)
- format_to_openai_tool_messages: Formatta i passaggi intermedi per l'agente.
- OpenAIToolsAgentOutputParser: Analizza l'output degli strumenti OpenAI.
- agente: Combina tutti i componenti (gestione degli input, prompt, LLM con strumenti e parser di output) in un unico agente.
Esecuzione dell'agente
Questo codice inizializza un `AgentExecutor` per eseguire l'agente con gli strumenti specificati e abilita la registrazione dettagliata impostando `verbose=True`.
from langchain.agents import AgentExecutor
agent_executor = AgentExecutor(agent=agent, tools=tools, verbose=True)
- AgenteEsecutore: Esegue l'agente con gli strumenti e le impostazioni specificati.
- verboso=Vero: Abilita la registrazione dettagliata delle azioni dell'agente.
Esecuzione e test dell'agente
result = list(agent_executor.stream({"input": "What is about this article?"}))
agent_executor.stream({“input”: “Di cosa parla questo articolo in poche parole?”}): Esegue l'agente con la domanda di input, trasmettendo in streaming la risposta.
Produzione:
result(2)('output')
L'articolo discute la mancanza di responsabilità e giustizia per le vittime civili degli attacchi dei droni statunitensi in Somalia. Evidenzia il desiderio delle famiglie di riconoscimento, scuse e risarcimento finanziario, che il governo statunitense non ha fornito nonostante anni di operazioni militari e vittime civili.
Riepilogo del codice
Questo script imposta un agente basato su AI tramite LangChain e integra le capacità di web scraping con la libreria fundus. L'agente esegue lo scraping di articoli, elabora dati e risponde a query in base al contenuto estratto. Questo esempio mostra come creare un agente AI versatile per attività del mondo reale come l'estrazione e l'analisi dei dati.
Conclusione
Questo articolo illustra come utilizzare LangChain per sviluppare agenti AI intelligenti per attività come il riepilogo dei contenuti e il web scraping. Innanzitutto, viene inizializzato il modello GPT-3.5 e vengono definiti gli strumenti per il recupero di articoli da fonti di notizie. Dopodiché, il tutorial illustra la progettazione di un agente per rispondere alle richieste degli utenti, l'associazione di strumenti al modello linguistico e la creazione di un modello di prompt.
Domande frequenti
A. LangChain è una libreria Python che semplifica lo sviluppo di agenti di intelligenza artificiale con interfacce standardizzate, gestione dei prompt e integrazione degli strumenti.
A. Gli agenti AI di LangChain utilizzano modelli linguistici per eseguire azioni in base all'input dell'utente, consentendo interazioni più dinamiche e consapevoli del contesto.
A. Gli agenti LangChain utilizzano modelli linguistici per risposte naturali e consapevoli del contesto, a differenza dei chatbot tradizionali con interazioni basate su script.
Fonte: www.analyticsvidhya.com