introduzione

In questo articolo creeremo un Chatbot per i tuoi documenti Google con OpenAI e Langchain. Ora, perché dobbiamo farlo in primo luogo? Sarebbe noioso copiare e incollare i contenuti di Google Docs su OpenAI. OpenAI ha un limite di token di caratteri in cui puoi aggiungere solo quantità specifiche di informazioni. Quindi, se vuoi farlo su larga scala o vuoi farlo a livello di programmazione, avrai bisogno di una libreria che ti aiuti; con quello, Langchain entra in scena. Puoi creare un impatto aziendale collegando Langchain con Google Drive e aprire l’intelligenza artificiale in modo da poter riepilogare i tuoi documenti e porre domande correlate. Questi documenti potrebbero essere i documenti del prodotto, i documenti di ricerca o la base di conoscenza interna utilizzata dalla tua azienda.

Chatbot per i tuoi documenti Google |  Langchain |  Openai

obiettivi formativi

  • Puoi imparare come recuperare il contenuto dei tuoi documenti Google utilizzando Langchain.
  • Scopri come integrare i contenuti dei tuoi documenti Google con OpenAI LLM.
  • Puoi imparare a riassumere e porre domande sul contenuto del tuo documento.
  • Puoi imparare come creare un file Chatbot che risponde alle domande in base ai tuoi documenti.

Questo articolo è stato pubblicato come parte del Blogathon sulla scienza dei dati.

Carica i tuoi documenti

Prima di iniziare, dobbiamo impostare i nostri documenti su Google Drive. La parte critica qui è un caricatore di documenti fornito da langchain chiamato GoogleDriveLoader. Utilizzando questo, puoi inizializzare questa classe e quindi passarle un elenco di ID documento.

from langchain.document_loaders import GoogleDriveLoader
import os
loader = GoogleDriveLoader(document_ids=("YOUR DOCUMENT ID's'"),
                          credentials_path="PATH TO credentials.json FILE")
docs = loader.load()

Puoi trovare l’ID del tuo documento dal link del documento. Puoi trovare l’ID tra le barre dopo /d/ nel collegamento.

Ad esempio, se il collegamento al documento è https://docs.google.com/document/d/1zqC3_bYM8Jw4NgF, l’ID del documento è “1zqC3_bYM8Jw4NgF”.

Puoi passare l’elenco di questi ID documento al parametro document_ids e la parte interessante è che puoi anche passare un ID cartella Google Drive che contiene i tuoi documenti. Se il collegamento alla cartella è https://drive.google.com/drive/u/0/folders/OuKkeghlPiGgWZdM quindi l’ID della cartella è “OuKkeghlPiGgWZdM1TzuzM”.

Autorizza le credenziali di Google Drive

Passo 1:

Abilita l’API GoogleDrive utilizzando questo collegamento https://console.cloud.google.com/flows/enableapi?apiid=drive.googleapis.com. Assicurati di aver effettuato l’accesso allo stesso account Gmail in cui sono archiviati i tuoi documenti nell’unità.

Chatbot per i tuoi documenti Google |  Langchain |  Openai

Passo 2: vai alla console Google Cloud facendo clic qui collegamento . Seleziona “ID client OAuth”. Fornisci il tipo di applicazione come app desktop.

Chatbot per i tuoi documenti Google |  Langchain |  Openai
Chatbot per i tuoi documenti Google |  Langchain |  Openai

Passaggio 3: Dopo aver creato il client OAuth, scaricare il file dei segreti facendo clic su “DOWNLOAD JSON”. Puoi seguire I passaggi di Google in caso di dubbi durante la creazione di un file delle credenziali.

Chatbot per i tuoi documenti Google |  Langchain |  Openai

Passaggio 4: aggiorna il tuo client Python dell’API di Google eseguendo il comando pip di seguito

pip install --upgrade google-api-python-client google-auth-httplib2 google-auth-oauthlib

Quindi dobbiamo trasferire il percorso del nostro file json in GoogleDriveLoader.

Riepilogare i tuoi documenti

Assicurati di avere con te le chiavi API OpenAI. In caso contrario, seguire i passaggi seguenti:

1. Vai su https://openai.com/ e crea il tuo account.

2. Accedi al tuo account e seleziona “API” sulla dashboard.

3. Ora fai clic sull’icona del tuo profilo, quindi seleziona “Visualizza chiavi API”.

4. Seleziona “Crea nuova chiave segreta”, copiala e salvala.

Successivamente, dobbiamo caricare il nostro OpenAI LLM. Riassumiamo i documenti caricati utilizzando OpenAI. Nel codice seguente, abbiamo utilizzato un algoritmo di riepilogo chiamato summary_chain fornito da langchain per creare un processo di riepilogo che abbiamo archiviato in una variabile denominata chain che accetta documenti di input e produce riepiloghi concisi utilizzando l’approccio map_reduce. Sostituisci la tua chiave API nel codice seguente.

from langchain.llms import OpenAI
from langchain.chains.summarize import load_summarize_chain
llm = OpenAI(temperature=0, openai_api_key=os.environ('OPENAI_API_KEY'))
chain = load_summarize_chain(llm, chain_type="map_reduce", verbose= False)
chain.run(docs)

Otterrai un riepilogo dei tuoi documenti se esegui questo codice. Se vuoi vedere cosa stava facendo LangChain sotto le coperte, cambia verbose in True e poi potrai vedere la logica utilizzata da Langchain e come pensa. Puoi osservare che LangChain inserirà automaticamente la query per riepilogare il tuo documento e l’intero testo (query + contenuto del documento) verrà passato a OpenAI. Ora OpenAI genererà il riepilogo.

Di seguito è riportato un caso d’uso in cui ho inviato un documento in Google Drive relativo a un prodotto SecondaryEquityHub e ho riepilogato il documento utilizzando il tipo di catena map_reduce e la funzione load_summarize_chain(). Ho impostato verbose=True per vedere come funziona Langchain internamente.

from langchain.document_loaders import GoogleDriveLoader
import os
loader = GoogleDriveLoader(document_ids=("ceHbuZXVTJKe1BT5apJMTUvG9_59-yyknQsz9ZNIEwQ8"),
                          credentials_path="../../desktop_credetnaisl.json")
docs = loader.load()
from langchain.llms import OpenAI
from langchain.chains.summarize import load_summarize_chain
llm = OpenAI(temperature=0, openai_api_key=os.environ('OPENAI_API_KEY'))
chain = load_summarize_chain(llm, chain_type="map_reduce", verbose=True)
chain.run(docs)

Produzione:

    Fonte: Autore

Possiamo osservare che Langchain ha inserito la richiesta di generare un riepilogo per un determinato documento.

    Fonte: Autore

Possiamo vedere il riepilogo sintetico e le caratteristiche del prodotto presenti nel documento generato da Langchain utilizzando OpenAI LLM.

Altri casi d’uso

1. Ricerca: Possiamo utilizzare questa funzionalità mentre facciamo ricerche. Invece di leggere intensamente l’intero documento di ricerca parola per parola, possiamo utilizzare la funzionalità di riepilogo per dare rapidamente un’occhiata al documento.

2. Istruzione: Gli istituti scolastici possono ottenere riepiloghi curati dei contenuti dei libri di testo da dati estesi, libri accademici e documenti.

3. Intelligenza aziendale: Gli analisti di dati devono esaminare un ampio set di documenti per estrarre informazioni approfondite dai documenti. Utilizzando questa funzionalità, possono ridurre l’enorme quantità di sforzo.

4. Analisi del caso legale: I professionisti legali possono utilizzare questa funzionalità per ottenere rapidamente argomenti critici in modo più efficiente dalla loro grande quantità di precedenti documenti di casi simili.

Diciamo che vogliamo porre domande sul contenuto di un determinato documento, dobbiamo caricarlo in una catena diversa denominata load_qa_chain . Successivamente, inizializziamo questa catena con un parametro chain_type. Nel nostro caso, abbiamo utilizzato chain_type come “roba”. Questo è un tipo di catena semplice; prende tutto il contenuto, lo concatena e lo passa a LLM.

Altri tipi_di catena:

  • Riduci mappa: All’inizio, il modello esaminerà individualmente ciascun documento e memorizzerà le sue intuizioni e, alla fine, combinerà tutte queste intuizioni ed esaminerà nuovamente queste intuizioni combinate per ottenere la risposta finale.
  • perfezionare: Esamina in modo iterativo ogni documento fornito nell’elenco document_id, quindi perfeziona le risposte con le informazioni recenti trovate nel documento man mano che procede.
  • Riclassificazione della mappa: il modello esaminerà individualmente ciascun documento e assegnerà un punteggio agli approfondimenti. Infine, restituirà quello con il punteggio più alto.

Successivamente, eseguiamo la nostra catena passando i documenti di input e le query.

from langchain.chains.question_answering import load_qa_chain
query = "Who is founder of analytics vidhya?"
chain = load_qa_chain(llm, chain_type="stuff")
chain.run(input_documents=docs, question=query)

Quando esegui questo codice, langchain inserisce automaticamente il prompt con il contenuto del documento prima di inviarlo a OpenAI LLM. Dietro le quinte, langchain ci aiuta con l’ingegneria tempestiva fornendo istruzioni ottimizzate per estrarre il contenuto richiesto dai documenti. Se vuoi vedere quali prompt stanno utilizzando internamente, imposta semplicemente verbose=True, quindi potrai vedere il prompt nell’output.

from langchain.chains.question_answering import load_qa_chain
query = "Who is founder of analytics vidhya?"
chain = load_qa_chain(llm, chain_type="stuff", verbose=True)
chain.run(input_documents=docs, question=query)

Costruisci il tuo Chatbot

Ora dobbiamo trovare un modo per rendere questo modello un Chatbot che risponde a domande. Principalmente dobbiamo seguire le tre cose seguenti per creare un Chatbot.

1. Chatbot dovrebbe ricordare la cronologia della chat per comprendere il contesto relativo alla conversazione in corso.

2. La cronologia chat deve essere aggiornata dopo ogni richiesta che l’utente richiede al bot.

2. Chatbot dovrebbe funzionare finché l’utente non desidera uscire dalla conversazione.

from langchain.chains.question_answering import load_qa_chain

# Function to load the Langchain question-answering chain
def load_langchain_qa():
    llm = OpenAI(temperature=0, openai_api_key=os.environ('OPENAI_API_KEY'))  
    chain = load_qa_chain(llm, chain_type="stuff", verbose=True)
    return chain

# Function to handle user input and generate responses
def chatbot():
    print("Chatbot: Hi! I'm your friendly chatbot. Ask me anything or type 'exit' to end the conversation.")
    from langchain.document_loaders import GoogleDriveLoader
    loader = GoogleDriveLoader(document_ids=("YOUR DOCUMENT ID's'"),
                          credentials_path="PATH TO credentials.json FILE")
    docs = loader
    # Initialize the Langchain question-answering chain
    chain = load_langchain_qa()
    
    # List to store chat history
    chat_history = ()
    
    while True:
        user_input = input("You: ")
        
        if user_input.lower() == "exit":
            print("Chatbot: Goodbye! Have a great day.")
            break

        # Append the user's question to chat history
        chat_history.append(user_input)

        # Process the user's question using the question-answering chain
        response = chain.run(input_documents=chat_history, question=user_input)
        
        # Extract the answer from the response
        answer = response('answers')(0)('answer') if response('answers') else "I couldn't find an answer to your question."

        # Append the chatbot's response to chat history
        chat_history.append("Chatbot: " + answer)

        # Print the chatbot's response
        print("Chatbot:", answer)

if __name__ == "__main__":
    chatbot()

Abbiamo inizializzato i nostri documenti Google Drive e OpenAI LLM. Successivamente, abbiamo creato un elenco per archiviare la cronologia della chat e abbiamo aggiornato l’elenco dopo ogni richiesta. Quindi abbiamo creato un ciclo while infinito che si interrompe quando l’utente fornisce “exit” come prompt.

Conclusione

In questo articolo abbiamo visto come creare un Chatbot per fornire approfondimenti sui contenuti dei tuoi documenti Google. L’integrazione di Langchain, OpenAI e Google Drive è uno dei casi d’uso più vantaggiosi in qualsiasi campo, sia esso medico, di ricerca, industriale o ingegneristico. Invece di leggere interi dati e analizzarli per ottenere approfondimenti, questo costa molto tempo e impegno umano. Possiamo implementare questa tecnologia per automatizzare la descrizione, il riepilogo, l’analisi e l’estrazione di approfondimenti dai nostri file di dati.

Punti chiave

  • I documenti Google possono essere recuperati in Python utilizzando la classe GoogleDriveLoader di Python e le credenziali API di Google Drive.
  • Integrando OpenAI LLM con Langchain, possiamo riassumere i nostri documenti e porre domande relative ai documenti.
  • Possiamo ottenere approfondimenti da più documenti scegliendo tipi di catena appropriati come map_reduce, stuff, refine e map rerank.

Domande frequenti

Q1. Come costruire un chatbot intelligente con Langchain e ChatGPT?

R. Per creare un chatbot intelligente, devi disporre di dati appropriati, quindi devi consentire l’accesso a ChatGPT per questi dati. Infine, è necessario fornire memoria di conversazione al bot per archiviare la cronologia della chat per comprendere il contesto.

Q2. Come posso condividere un documento Google con ChatGPT di OpenAI?

R. Una delle soluzioni è che puoi utilizzare GoogleDriveLoader di Langchain per recuperare un documento Google, quindi puoi inizializzare OpenAI LLM utilizzando le tue chiavi API, quindi puoi condividere il file su questo LLM.

Q3. Come collego ChatGPT direttamente a un file Google Drive?

R. Innanzitutto, devi abilitare l’API di Google Drive, quindi ottenere le tue credenziali per l’API di Google Drive, quindi puoi passare l’ID documento del tuo file al modello OpenAI ChatGPT utilizzando Langchain GoogleDriveLoader.

Q4. ChatGPT può accedere ai documenti?

R. ChatGPT non può accedere direttamente ai nostri documenti. Tuttavia, possiamo copiare e incollare il contenuto in ChatGPT o recuperare direttamente il contenuto dei documenti utilizzando Langchain, quindi possiamo passare il contenuto a ChatGPT inizializzandolo utilizzando chiavi segrete.

I media mostrati in questo articolo non sono di proprietà di Analytics Vidhya e vengono utilizzati a discrezione dell’autore.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *