Epic_2_Sprint_2 Implement a Google Drive connector for Google AI Studio - robbiemu/aclarai GitHub Wiki
Tarea: Implementar un conector de Google Drive para Google AI Studio
Descripción
Desarrollar la lógica de backend y el plugin necesarios para importar conversaciones desde la carpeta "AI Studio" de Google Drive. Esta tarea se centra en la creación de un conector reutilizable que maneje la autenticación OAuth2 y la interacción con la API de Google Drive, así como un plugin para parsear el formato de conversación específico de Google AI Studio.
Recursos de Referencia
- Guía del Sistema de Plugins (
docs/guides/plugin_system_guide.md
): El nuevo plugin debe seguir los patrones de desarrollo y registro descritos en esta guía. - Documentación de la API de Google Drive para Python: Google Drive API Python Quickstart
Alcance
Incluido
- Creación del Conector de Backend:
- Crear una nueva clase o módulo, por ejemplo,
GoogleDriveConnector
enshared/aclarai_shared/connectors/
. - Implementar la lógica para el flujo de autenticación OAuth2. El conector debe exponer métodos claros para:
- Generar una URL de autorización (
get_authorization_url()
). - Recibir un código de autorización y intercambiarlo por un token, guardando
token.json
(exchange_code_for_token(code: str)
).
- Generar una URL de autorización (
- Implementar un método para buscar y descargar ficheros
.json
de la carpeta "AI Studio" (fetch_ai_studio_conversations()
). - Este conector debe ser agnóstico a la UI y estar diseñado para ser llamado por cualquier servicio (en este caso, el servicio de UI).
- Crear una nueva clase o módulo, por ejemplo,
- Nuevo Plugin para Google AI Studio:
- Crear un nuevo fichero de plugin:
shared/aclarai_shared/plugins/google_ai_studio_plugin.py
. can_accept()
: Debe identificar de manera fiable la estructura JSON de una exportación de Google AI Studio.convert()
: Debe parsear la conversación y extraer elid
de la conversación para elplugin_metadata
.
- Crear un nuevo fichero de plugin:
- Integración con el
ImportOrchestrator
:- Asegurar que el conector, después de descargar el contenido de un fichero, pueda pasarlo al
ImportOrchestrator
para que el nuevo plugin lo procese.
- Asegurar que el conector, después de descargar el contenido de un fichero, pueda pasarlo al
- Registro del Plugin y Dependencias:
- Registrar el nuevo
GoogleAIStudioPlugin
enshared/pyproject.toml
a través deentry_points
. - Añadir las librerías cliente de la API de Google al
pyproject.toml
raíz.
- Registrar el nuevo
Excluido
- La implementación de la interfaz de usuario (UI) en Gradio. Esta tarea se limita a crear la lógica de backend. La integración de esta lógica en el
Import Panel
(añadir el botón, manejar el flujo de UI de dos pasos, etc.) se realizará en la tarea separada: "Update the Gradio Import Panel to support Google Drive". - La sincronización en tiempo real o el uso de webhooks.
- El manejo de
attachments
o ficheros adjuntos.
Criterios de Aceptación
- La clase
GoogleDriveConnector
está implementada y expone métodos funcionales para la autenticación y la descarga de ficheros. - El nuevo plugin
GoogleAIStudioPlugin
está implementado y registrado correctamente. - El
ImportOrchestrator
procesa correctamente el contenido de los ficheros descargados de Google Drive cuando se le pasa. - Existen tests unitarios para el conector y el plugin que validan su lógica de forma aislada, sin depender de la UI.
Dependencias (estas son particularmente las cosas en este EPIC que necesitan ser hechas)
- Ninguna. Esta tarea es autocontenida.
Entregables
- Nuevo fichero de conector:
shared/aclarai_shared/connectors/google_drive.py
(o similar). - Nuevo fichero de plugin:
shared/aclarai_shared/plugins/google_ai_studio_plugin.py
. - Fichero modificado:
pyproject.toml
(raíz) con las nuevas dependencias. - Fichero modificado:
shared/pyproject.toml
con el registro del nuevo plugin. - Nuevos tests unitarios para el conector y el plugin.
Estimación de Esfuerzo (en días)
- 3 días
Riesgos y Mitigaciones
- Riesgo: La gestión del flujo OAuth2 y el almacenamiento seguro de tokens (
token.json
) son complejos.- Mitigación: Utilizar la librería cliente oficial de Google para Python. El fichero
token.json
debe ser añadido al.gitignore
global.
- Mitigación: Utilizar la librería cliente oficial de Google para Python. El fichero
- Riesgo: El nombre de la carpeta "AI Studio" podría cambiar o estar localizado.
- Mitigación: Hacer que el nombre de la carpeta sea un parámetro configurable en
settings/aclarai.config.yaml
.
- Mitigación: Hacer que el nombre de la carpeta sea un parámetro configurable en
- Riesgo: La API de Google Drive tiene límites de velocidad (rate limits).
- Mitigación: Implementar un backoff exponencial en las llamadas a la API y procesar los ficheros de forma secuencial.