LangChain offre parti riutilizzabili per collegare modelli e strumenti. Il loro valore è compreso seguendo i messaggi che viaggiano tra l'applicazione, il modello e le funzioni che eseguono le azioni.
Concetti Chiave
LangChain è un framework di applicazione con LLM. Unifica alcuni dei giochi con i fornitori e consente di comporre prompts, modelli, strumenti e processi di elaborazione dei risultati. LangGraph fornisce Flow Control e stato per gli agenti LangSmith Serve come osservazione e valutazione. Imparare il livello di base non richiede simultaneamente di padroneggiare l'intero ecosistema.
Uno. Catena a catena Collega le fasi definite dallo sviluppatore. Un agente permette al modello di proporre strumenti e ordine da esecuzione entro i confini. Condivisione di un'interfaccia tra i modelli facilita le modifiche ma non garantisce capacità identiche: verifica la chiamata degli strumenti, i parametri, i confini e le prestazioni del fornitore scelto.
Modulo Obiettivi
- Riconoscere il modello, il modello del prompt, la catena, il parser e memoria.
- Differenziato
model.invoke,chain.invokeyagent.invokeper il lavoro che hanno avuto. - Ricostruire lo scambio di uno chiamata a strumento e il suo risultato.
- Per rilevare malfunzionamenti, schemi e esecuzione senza incolpare automaticamente il modello.
Blocchi riutilizzabili
A dose pronta Combina istruzioni costanti con variabili. "Spiega {concepto} con un esempio" separa la struttura dall'argomento. La chat del prompt A conserva i ruoli: istruzioni di sistema, messaggi utente e risposte precedenti. L'esempio di poche immagini A illustra il formato atteso. rimane diverso da una regola di autorizzazione.
Composizione A come prompt | model | parser descrive una sequenza usando LCEL, LangChain Expression Language. Il prompt prepara l'ingresso, il modello produce una risposta e un parser rimuove o valida il modulo di uscita. Il parser di testo A non controlla che le dichiarazioni siano vere: il formato e la veridicità sono problemi separati.
Gli strumenti sono di solito espressi come funzioni con tipi e descrizioni. L'arredatore @tool consente un'esposizione di metadati al quadro. create_agent riunisce il modello e gli strumenti, e agent.invoke avviare la esecuzione. Questa semplicità di utilizzo di lavoro utile nascosto non rimuove le responsabilità di sicurezza. The Documentazione attuale degli agenti spiegare questa costruzione e la sua configurazione.
Che succede sotto il cofano?
Il runtime prepara i messaggi e gli schemi degli strumenti. Il modello può restituire il testo, chiamate a strumenti o altri blocchi supportati; Non pensare che sia finita solo perche' e' arrivato il messaggio. Quando c'è uno chiamata eccezionale, l'applicazione identifica il nome registrato, analizza gli argomenti e gestisce lo strumento consentito.
Ogni risultato è collegato con l'identificatore chiamata appropriato. Quindi entra nel contesto del seguente richiesta. Così il modello può utilizzare il valore ottenuto, richiedere un'altra operazione o produrre una risposta finale. Il loop dovrebbe anche avere limiti e gestire gli errori: finire non dipende esclusivamente da come il modello decide di farlo.
Conservare stato non significa che lo LLM modifichi i suoi pesi o impari definitivamente il suo nome utente. L'applicazione o un servizio ha un contesto e contribuisce all'interferenza futura. Non è neppure obbligatorio inviare nuovamente in rete l’intera cronologia letterale in ogni integrazione: possono essere disponibili meccanismi di continuazione, riduzione e riepilogo. Ciò che è necessario è preservare il contesto rilevante e relazione tra chiamate e risultati.
Esempio guidato
Considerare "18 Multiples di 5 e dividere il risultato tra 3." Gli strumenti disponibili sono multiplicar y dividir.
| Passaggio | Responsabile | Evidenza osservabile |
|---|---|---|
| 1 | Applicazione | Aggiungi la domanda ai messaggi e chiamata agent.invoke. |
| 2 | Modello | Richieste multiplicar(18, 5) con un identificatore call-a. |
| 3 | Tempo di esecuzione | Esegui il registro delle funzioni 90 per call-a. |
| 4 | Modello | Richieste dividir(90, 3) come call-b. |
| 5 | Tempo di esecuzione | divisore valido diverso da zero; torna indietro 30. |
| 6 | Modello e tempo di esecuzione | Producono e consegnano la risposta finale: 30. |
La funzione di moltiplicazione non chiamata la LLM. E' un codice normale all'interno di un'applicazione che usa un modello. Per controllare la dimostrazione, controllare sia il risultato che gli argomenti: ottenere 30 per caso non dimostra che gli strumenti giusti sono stati utilizzati.
Prova dopo "dividere tra zero". Il risultato atteso è un errore controllato o una correzione richiesta, non un'eccezione senza gestire un numero inventato. Infine, rimuove deliberatamente il risultato di call-a e spiegare perché perdiamo le prove che l'operazione secondo richiesto.
Errori comuni
- Replay
invokecome una singola rete chiamata: un agente può eseguire diversi. - Salva risponde solo assistente e perde le osservazioni degli strumenti.
- Espandi una funzione generica che esegue qualsiasi codice ricevuto.
- Supponiamo che cambiare il nome del fornitore mantiene il risultato e il costo dell'applicazione.
- Per fondere le tracce di chiamate con il ragionamento interno completo.
Esercizio di pensionamento
La moltiplicazione restituisce 90 correttamente, ma l'agente lo recupera più volte. Quali due punti esamineresti prima di aumentare il limite di passaggio?
Soluzione
In primo luogo, confermare che il risultato appare nel contesto con l'identificatore chiamata giusto. In secondo luogo, controllare le istruzioni, la descrizione degli strumenti e le condizioni di completamento per verificare che l'agente riconosce il risultato. Per aumentare il limite potrebbe fare più affrontare un difettoso esecuzione senza rivestire la causa. Aggiunge anche un limite per il mancato mantenimento del controllo.
Fonti e recensioni
Query Agenti, Tools y Messaggi Documentazione ufficiale di LangChain. L'apprendimento chiave è quello di essere in grado di capire, in ogni freccia del diagramma, quale messaggio circola, che interpreta e dove viene eseguito il codice.