Codice: https://github.com/swsychen/Boomark2Sheet_Chromeplugin
Per trasportare i segnalibri in un foglio Google per ulteriori elaborazioni, dobbiamo prima creare un plug-in (o un'estensione) Chrome personalizzato.
Il file più importante per un'estensione di Chrome è il manifest.jsonche definisce la struttura e il comportamento di alto livello del plugin. Qui aggiungiamo il necessario autorizzazioni per utilizzare l'API dei segnalibri di Google Chrome e tenere traccia delle modifiche nei segnalibri. Abbiamo anche un campo per oauth2 autenticazione perché utilizzeremo l'API di Google Sheet. Dovrai mettere il tuo Identificativo cliente in questo campo. Puoi seguire principalmente il Configura il tuo ambiente sezione in questo collegamento prendere il Identificativo cliente e una chiave API di Google Sheet (la useremo in seguito). Qualcosa che dovresti notare è:
- In Schermata di consenso OAuthdevi aggiungere te stesso (indirizzo Gmail) come utente di prova. In caso contrario, non ti sarà consentito utilizzare le API.
- In Crea l'ID client OAuthil tipo di applicazione che dovresti scegliere è Estensione di Chrome (non l'applicazione Web come nel collegamento di avvio rapido). IL Numero identificativo dell'oggetto quello che occorre specificare è l'ID del plugin (lo avremo quando caricheremo il nostro plugin e potrai trovarlo nel gestore estensioni).
Il file funzionale principale è background.jsche può eseguire tutte le sincronizzazioni in background. Ho preparato il codice per te nel collegamento GitHub, l'unica cosa che devi modificare è il file ID foglio di calcolo all'inizio del file javascript. Puoi identificare questo ID nel link di condivisione del tuo foglio Google creato (dopo d/ e prima di /edit, e sì, devi prima creare manualmente un foglio Google!):
https://docs.google.com/spreadsheets/d/{ID foglio di calcolo}/modifica#gid=0
La logica principale del codice è ascoltare qualsiasi modifica nei tuoi segnalibri e aggiornare (cancella + scrivi) il tuo file Fogli con tutti i segnalibri che hai quando il plugin viene attivato (ad esempio quando aggiungi un nuovo segnalibro). Scrive l'ID, il titolo e l'URL di ciascun segnalibro in una riga separata nel foglio Google specificato.
L'ultimo fascicolo popup.html fondamentalmente non è così utile in quanto definisce solo il contenuto che mostra nella finestra popup quando fai clic sul pulsante del plug-in nel browser Chrome.
Dopo esserti assicurato che tutti i file siano in un'unica cartella, ora sei pronto per caricare il tuo plugin:
- Vai a Estensioni>Gestisci estensioni del tuo browser Chrome e attiva il modalità sviluppatore in alto a destra della pagina.
- Clicca il Caricare senza imballo e scegli la cartella del codice. Quindi il tuo plugin verrà caricato e funzionante. Fare clic sul collegamento ipertestuale lavoratore del servizio per vedere le informazioni di registro stampate dal codice.
Una volta caricato, il plug-in rimarrà operativo finché il browser Chrome sarà aperto. E inizierà automaticamente l'esecuzione anche quando riapri il browser.
Estuary Flow è fondamentalmente un connettore che sincronizza il database con l'origine dati che hai fornito. Nel nostro caso, quando Estuary Flow sincronizza i dati da un foglio Google in un database vettoriale — Pinecone, chiamerà anche un modello di incorporamento per trasformare i dati in vettori di incorporamento che verranno quindi archiviati nel database Pinecone.
Per la configurazione di Estuary Flow e Pinecone, su YouTube è già disponibile un video tutorial abbastanza completo: https://youtu.be/qyUmVW88L_A?si=xZ-atgJortObxDi-
Ma per favore presta attenzione! Perché l'Estuario e la Pigna sono in rapido sviluppo. Alcuni punti del video sono ormai cambiati, il che potrebbe creare confusione. Di seguito elenco alcuni aggiornamenti al video in modo che possiate replicare il tutto facilmente:
1.(Flusso dell'estuario>crea cattura) Nella dimensione batch di righe, puoi impostare numeri più grandi in base ai numeri di riga totali nel tuo foglio Google per i segnalibri. (ad esempio impostalo su 600 se hai già più di 400 righe di segnalibri)
2. (Flusso dell'estuario>crea cattura) Durante l'impostazione Collezioni di obiettivielimina il campo del cursore “row_id” e aggiungine uno nuovo “ID” come nello screenshot seguente. Puoi mantenere lo spazio dei nomi vuoto.
3. (Flusso dell'estuario>crea cattura) Quindi passare a COLLEZIONE sottoscheda, premere MODIFICARE per modificare la chiave da /row_id a /ID. E dovresti anche cambiare il campo “richiesto” del codice dello schema in “ID” come il seguente:
//...skipped
"URL": {
"type": "string"
},
"row_id": {
"type": "integer"
}
},
"required": (
"ID"
),
"type": "object"
}
Dopo “SALVA E PUBBLICA”, puoi vederlo Raccolte>{nome della tua raccolta}>Panoramica>Anteprima dati mostrerà l'ID corretto di ciascun segnalibro.
4. (Flusso dell'estuario>crea cattura) Nell'ultimo passaggio puoi vedere un file Editor delle specifiche avanzate (in fondo alla pagina). Qui puoi aggiungere un campo “intervallo”: 10m per diminuire la frequenza di aggiornamento a 10 minuti (l'impostazione predefinita è ogni 5 minuti se non specificata). Ogni aggiornamento chiamerà il modello di incorporamento OpenAI per ripetere tutto l'incorporamento, il che costerà dei soldi. Diminuire il tasso significa risparmiare la metà del denaro. Puoi ignorare il campo “backfill”.
//...skipped
"syncMode": "full_refresh"
},
"target": "CJQ/mybookmark/bookmarks_v3"
}
),
"interval": "10m"
}
5. (Flusso dell'estuario>crea materializzazione) L'ambiente Pinecone è in genere “gcp-starter” per un indice Pinecone di livello gratuito o come “us-east-1-aws” per gli utenti con piano standard (non utilizzo la modalità serverless in Pinecone perché Estuary Flow non ha ancora fornito un connettore per la modalità serverless Pinecone). L'indice Pinecone è il nome dell'indice quando crei l'indice in Pinecone.
6. (Flusso dell'estuario>crea materializzazione) Ecco alcune parti difficili.
- Innanzitutto, dovresti selezionare la cattura sorgente utilizzando il pulsante blu “SOURCE FROM CAPTURE” e poi lasciare lo spazio dei nomi Pinecone in “CONFIG” VUOTO (il livello gratuito di Pinecone deve avere uno spazio dei nomi vuoto).
- In secondo luogo, dopo aver premuto “AVANTI”, è emerso Editor di specifiche avanzate della materializzazione, è necessario assicurarsi che il campo “vincolante” NON SIA VUOTO. Compila il contenuto come nello screenshot seguente se è vuoto o il campo non esiste, altrimenti non invierà nulla a Pinecone. Inoltre, devi modificare il campo “fonte” utilizzando il tuo percorso di raccolta (lo stesso del “destinazione” nello screenshot precedente). Se compaiono degli errori dopo aver premuto “AVANTI” e prima di poter vedere l'editor, premi nuovamente “AVANTI” e vedrai il Editor di specifiche avanzate. Successivamente è possibile specificare le “associazioni” e premere “SALVA E PUBBLICA”. Tutto dovrebbe essere ok dopo questo passaggio. Gli errori si verificano perché non abbiamo specificato prima i “binding”.
- Se appare un altro messaggio di errore dopo aver pubblicato tutto e sei appena tornato alla pagina Destinazione che ti informa che non hai aggiunto una raccolta, ignoralo semplicemente finché vedi che l'utilizzo non è zero nell'istogramma PANORAMICA (vedi l' screenshot seguenti). L'istogramma indica fondamentalmente la quantità di dati inviati a Pinecone.
"bindings": (
{
"resource": {},
"source": "CJQ/mybookmark/bookmarks_v3",
"fields": {
"recommended": true
}
}
),
7. (Pigna>crea indice) Pinecone ha messo a punto la modalità indice serverless (gratuita ma non ancora supportata da Estuary Flow) ma non la utilizzo in questo progetto. Qui utilizziamo ancora l'opzione basata su pod (non più gratuita dall'ultimo controllo effettuato il 14 aprile 2024) che è abbastanza buona per l'archiviazione di incorporamento dei segnalibri. Quando crei un indice, tutto ciò che serve è impostare il nome e le dimensioni dell'indice.
8. (Pigna>Indici>{Il tuo indice}) Dopo aver terminato la creazione dell'indice Pinecone e accertato che il nome dell'indice e l'ambiente siano compilati correttamente nella materializzazione di Estuary Flow, sei a posto. Nella console Pincone, vai a Indici>{Il tuo indice} e dovresti vedere il conteggio dei vettori che mostra il numero totale dei tuoi segnalibri. Potrebbero essere necessari alcuni minuti prima che Pinecone riceva informazioni da Estuary Flow e mostri il conteggio corretto dei vettori.
Codice: https://github.com/swsychen/BookmarkAI_App
Siamo quasi li! L'ultimo passaggio è creare una bellissima interfaccia proprio come l'originale ChatGPT. Qui utilizziamo un framework molto comodo chiamato Streamlit, con il quale possiamo creare un'app in poche righe di codice. Langchain è anche un framework user-friendly per l'utilizzo di qualsiasi modello linguistico di grandi dimensioni con un codice minimo.
Ho preparato per te anche il codice di questa App. Segui la guida all'installazione e all'utilizzo nel collegamento GitHub e divertiti!
La logica principale del codice è:
ottieni il prompt dell'utente → crea una catena di retriever con ChatGPT e Pinecone → inserisci il prompt nella catena e ottieni una risposta → trasmetti il risultato all'interfaccia utente
Tieni presente che, poiché Langchain è in fase di sviluppo, il codice potrebbe essere deprecato se utilizzi una versione più recente diversa da quella indicata in requisiti.txt. Se vuoi approfondire Langchain e utilizzare un altro LLM per questa ricerca di segnalibri, sentiti libero di esaminare documenti ufficiali di Langchain.
Fonte: towardsdatascience.com