1bepnfu7qpsjf Vkvx9fwga.png

Código: https://github.com/swsychen/Boomark2Sheet_Chromeplugin

Para transportar marcadores a una hoja de Google para su posterior procesamiento, primero debemos crear un complemento (o extensión) de Chrome personalizado.

Descripción general de la estructura del código para un complemento de Chrome. – Instantánea del vscode del autor.

El archivo más importante para una extensión de Chrome es el manifiesto.json, que define la estructura de alto nivel y el comportamiento del complemento. Aqui agregamos lo necesario permisos para utilizar la API de marcadores de Google Chrome y realizar un seguimiento de los cambios en los marcadores. También tenemos un campo para oauth2 autenticación porque usaremos la API de Google Sheet. Tendrás que poner el tuyo Identificación del cliente en este campo. Puedes seguir principalmente el Configura tu entorno sección en esto enlace para obtener el Identificación del cliente y una clave API de Google Sheet (la usaremos más adelante). Algo que debes notar es:

  1. En Pantalla de consentimiento de OAuth, debe agregarse usted mismo (dirección de Gmail) como usuario de prueba. De lo contrario, no se le permitirá utilizar las API.
  2. En Crear ID de cliente de OAuthel tipo de aplicación que debes elegir es Extensión de Chrome (no la aplicación web como en el enlace de inicio rápido). El Identificación del artículo Lo que se debe especificar es el ID del complemento (lo tendremos cuando carguemos nuestro complemento y podrá encontrarlo en el administrador de extensiones).
La parte borrosa es el ID del artículo. — Instantánea del administrador de extensiones de Google Chrome del autor.

El archivo funcional principal es fondo.js, que puede realizar todas las sincronizaciones en segundo plano. He preparado el código para ti en el enlace de GitHub, lo único que necesitas cambiar es el ID de hoja de cálculo al comienzo del archivo javascript. Esta identificación puede identificarla en el enlace para compartir de su hoja de Google creada (después de d/ y antes de /edit, y sí, primero debe crear manualmente una hoja de Google):

https://docs.google.com/spreadsheets/d/{ID de hoja de cálculo}/editar#gid=0

La lógica principal del código es escuchar cualquier cambio en sus marcadores y actualizar (borrar + escribir) su archivo de Hoja con todos los marcadores que tiene cuando se activa el complemento (por ejemplo, cuando agrega un nuevo marcador). Escribe la identificación, el título y la URL de cada marcador en una fila separada en su hoja de Google especificada.

Cómo se ve en tu hoja de Google. — Instantánea de la hoja de Google del autor.

el ultimo archivo ventana emergente.html Básicamente no es tan útil ya que solo define el contenido que muestra en la ventana emergente cuando haces clic en el botón del complemento en tu navegador Chrome.

Después de asegurarse de que todos los archivos estén en una sola carpeta, ahora está listo para cargar su complemento:

  1. Ve a la Extensiones>Administrar extensiones de su navegador Chrome y active el modo desarrollador en la parte superior derecha de la página.
  2. Haga clic en el Cargar desembalado y elija la carpeta de códigos. Luego su complemento se cargará y se ejecutará. Haga clic en el hipervínculo trabajador del servicio para ver la información de registro impresa del código.

Una vez cargado, el complemento permanecerá operativo mientras el navegador Chrome esté abierto. Y también comenzará a ejecutarse automáticamente cuando vuelvas a abrir el navegador.

Estuary Flow es básicamente un conector que sincroniza la base de datos con la fuente de datos que usted proporcionó. En nuestro caso, cuando Estuary Flow sincroniza datos de una hoja de Google con una base de datos vectorial (Pinecone), también llamará a un modelo de incrustación para transformar los datos en vectores de incrustación que luego se almacenarán en la base de datos de Pinecone.

Para configurar Estuary Flow y Pinecone, ya existe un vídeo tutorial bastante completo en YouTube: https://youtu.be/qyUmVW88L_A?si=xZ-atgJortObxDi-

¡Pero por favor presta atención! Porque Estuary Flow y Pinecone están en rápido desarrollo. Algunos puntos del vídeo ya han cambiado, lo que puede causar confusión. Aquí enumero algunas actualizaciones del video para que puedas replicar todo fácilmente:

1.(Flujo del Estuario>crear Captura) En el tamaño del lote de filas, puede establecer algunos números más grandes de acuerdo con el número total de filas en su Hoja de Google para marcadores. (por ejemplo, configúrelo en 600 si ya tiene más de 400 filas de marcadores)

2. (Flujo del Estuario>crear Captura) Al configurar Colecciones objetivo, elimine el campo del cursor «row_id» y agregue uno nuevo «ID» como en la siguiente captura de pantalla. Puede mantener el espacio de nombres vacío.

Cambiar campo del cursor. — Instantánea de la Fuentes sobre el caudal del estuario (abril de 2024)

3. (Flujo del Estuario>crear Captura) Luego cambie al RECOPILACIÓN subpestaña, presione EDITAR para cambiar la clave de /row_id a /ID. Y también debes cambiar el campo «obligatorio» del código del esquema a «ID» como se muestra a continuación:

Cambiar clave y esquema. — Instantánea de la Fuentes sobre el caudal del estuario (abril de 2024)
    //...skipped
"URL": {
"type": "string"
},
"row_id": {
"type": "integer"
}
},
"required": [
"ID"
],
"type": "object"
}

Después de «GUARDAR Y PUBLICAR», podrá ver que Colecciones>{nombre de su colección}>Descripción general>Vista previa de datos mostrará la identificación correcta de cada marcador.

4. (Flujo del Estuario>crear Captura) En el último paso, puedes ver un Editor de especificaciones avanzado (en la parte inferior de la página). Aquí puede agregar un campo «intervalo»: 10 m para disminuir la frecuencia de actualización a cada 10 minutos (la configuración predeterminada es cada 5 minutos si no se especifica). Cada actualización llamará al modelo de incrustación de OpenAI para rehacer toda la incrustación, lo que costará algo de dinero. Disminuir la tasa es ahorrar la mitad del dinero. Puede ignorar el campo «relleno».

Especifique el intervalo. — Instantánea de la Fuentes sobre el caudal del estuario (abril de 2024)
        //...skipped
"syncMode": "full_refresh"
},
"target": "CJQ/mybookmark/bookmarks_v3"
}
],
"interval": "10m"
}

5. (Flujo del Estuario>crear Materialización) El entorno de Pinecone suele ser «gcp-starter» para un índice de Pinecone de nivel gratuito o como «us-east-1-aws» para usuarios de plan estándar (no uso el modo sin servidor en Pinecone porque Estuary Flow aún no tiene proporcionó un conector para el modo sin servidor Pinecone). El índice Pinecone es el nombre del índice cuando se crea el índice en Pinecone.

6. (Flujo del Estuario>crear Materialización) Aquí hay algunas partes difíciles.

  • Primero, debe seleccionar la captura de origen usando el botón azul «FUENTE DE CAPTURA» y luego dejar el espacio de nombres de Pinecone en «CONFIG» VACÍO (El nivel gratuito de Pinecone debe tener un espacio de nombres vacío).
  • En segundo lugar, después de presionar “SIGUIENTE”, en el emergente Editor de especificaciones avanzado de la materialización, debes asegurarte de que el campo “bindings” NO ESTÉ VACÍO. Complete el contenido como en la siguiente captura de pantalla si está vacío o el campo no existe; de ​​lo contrario, no enviará nada a Pinecone. Además, debe cambiar el campo «fuente» utilizando su propia ruta de colección (igual que el «destino» en la captura de pantalla anterior). Si aparecen algunos errores después de presionar «SIGUIENTE» y antes de que pueda ver el editor, presione «SIGUIENTE» nuevamente y verá el Editor de especificaciones avanzado. Luego puede especificar los “enlaces” y presionar “GUARDAR Y PUBLICAR”. Todo debería estar bien después de este paso. Los errores ocurren porque no especificamos los «enlaces» antes.
  • Si aparece otro mensaje de error después de haber publicado todo y haber regresado a la página Destino indicándole que no ha agregado una colección, simplemente ignórelo siempre y cuando vea que el uso no es cero en el histograma DE DESCRIPCIÓN GENERAL (consulte la siguientes capturas de pantalla). El histograma básicamente significa cuántos datos ha enviado a Pinecone.
Asegúrese de que el campo «enlaces» esté completado de esta manera. — Instantánea de la Destinos sobre el caudal del estuario (abril de 2024)
"bindings": [
{
"resource": {},
"source": "CJQ/mybookmark/bookmarks_v3",
"fields": {
"recommended": true
}
}
],
No entre en pánico por el error, presione «SIGUIENTE» nuevamente. — Instantánea de la Destinos sobre el caudal del estuario (abril de 2024)
Asegúrese de que el uso en RESUMEN no esté vacío. — Instantánea de la Destinos sobre el caudal del estuario (abril de 2024)

7. (Piña>crear índice) Pinecone ha creado un modo de índice sin servidor (gratuito pero aún no soportado por Estuary Flow) pero no lo uso en este proyecto. Aquí todavía utilizamos la opción basada en pods (ya no es gratuita desde que la comprobamos por última vez el 14 de abril de 2024), que es lo suficientemente buena para nuestro almacenamiento integrado de marcadores. Al crear un índice, todo lo que necesita es establecer el nombre y las dimensiones del índice.

8. (Piña>Índices>{Tu índice}) Después de terminar la creación del índice Pinecone y asegurarse de que el nombre del índice y el entorno se completen correctamente en la materialización de Estuary Flow, estará listo. En la consola Pincone, vaya a Índices>{Tu índice} y deberías ver el recuento de vectores que muestra el número total de tus marcadores. Es posible que pasen algunos minutos hasta que Pinecone reciba información del flujo del estuario y muestre el recuento de vectores correcto.

Aquí tengo 402 marcadores, por lo que el recuento de vectores muestra 402. — Instantánea de Piña (abril de 2024)

Código: https://github.com/swsychen/BookmarkAI_App

¡Estamos casi alli! El último paso es crear una hermosa interfaz como el ChatGPT original. Aquí utilizamos un marco muy conveniente llamado Streamlit, con el que podemos crear una aplicación en solo unas pocas líneas de código. Langchain también es un marco fácil de usar para utilizar cualquier modelo de lenguaje grande con un código mínimo.

También preparé el código de esta aplicación para ti. ¡Sigue la guía de instalación y uso en el enlace de GitHub y disfruta!

La lógica principal del código es:

obtener un mensaje de usuario → crear una cadena de recuperación con ChatGPT y Pinecone → ingresar el mensaje a la cadena y obtener una respuesta → transmitir el resultado a la interfaz de usuario

La parte central del código. – Instantánea del vscode del autor.

Tenga en cuenta que, debido a que Langchain está en desarrollo, el código puede quedar obsoleto si utiliza una versión más nueva que no sea la indicada en requisitos.txt. Si desea profundizar en Langchain y utilizar otro LLM para esta búsqueda de marcadores, no dude en consultar el documentos oficiales de Langchain.