Agente de IA: Asistente de Google Calendar
Un asistente tipo secretario que gestiona tus eventos, te da resúmenes y guarda tu agenda en Sheets.
+3
graph TD
%%{init: {'theme': 'mc','layout': 'elk'}}%%
Prompt-pfcxi[<div><img src="/_astro/square-terminal.BMOXc-nZ.svg" style="height: 20px !important;width: 20px !important"/></div>Instrucciones]
style Prompt-pfcxi stroke:#a170ff
LanggraphReactAgent-8scqw[Agent]
style LanggraphReactAgent-8scqw stroke:#a170ff
ChatOutput-g8z2x[<div><img src="/_astro/messages-square.BaSDmT6g.svg" style="height: 20px !important;width: 20px !important"/></div>Chat Output]
style ChatOutput-g8z2x stroke:#a170ff
TextInput-m9s4i[<div><img src="/_astro/type.Dy26vmDy.svg" style="height: 20px !important;width: 20px !important"/></div>Momento a comprobar]
style TextInput-m9s4i stroke:#a170ff
TextInput-c0vec[<div><img src="/_astro/type.Dy26vmDy.svg" style="height: 20px !important;width: 20px !important"/></div>Tema a comprobar]
style TextInput-c0vec stroke:#a170ff
Chroma-uql7r[<div><img src="/_astro/chroma.CDTUBZSx.svg" style="height: 20px !important;width: 20px !important"/></div>Cargar de DB]
style Chroma-uql7r stroke:#a170ff
ParseData-uxz7v[<div><img src="/_astro/braces.Djq0PW4_.svg" style="height: 20px !important;width: 20px !important"/></div>Obtener Texto]
style ParseData-uxz7v stroke:#a170ff
OpenAIEmbeddings-85qva[<div><img src="/_astro/openAI.BhmuxEs3.svg" style="height: 20px !important;width: 20px !important"/></div>OpenAI Embeddings2]
style OpenAIEmbeddings-85qva stroke:#a170ff
GSheetCellComponent-b94wx[Registrar en Agenda de Citas]
style GSheetCellComponent-b94wx stroke:#a170ff
OpenAIModel-4jw7u[<div><img src="/_astro/openAI.BhmuxEs3.svg" style="height: 20px !important;width: 20px !important"/></div>OpenAI]
style OpenAIModel-4jw7u stroke:#a170ff
googlecalendarcomponent-m343k[Obtener Eventos]
style googlecalendarcomponent-m343k stroke:#a170ff
ParseData-64ynd[<div><img src="/_astro/braces.Djq0PW4_.svg" style="height: 20px !important;width: 20px !important"/></div>Obtener Datos de evento]
style ParseData-64ynd stroke:#a170ff
Chroma-jofgi[<div><img src="/_astro/chroma.CDTUBZSx.svg" style="height: 20px !important;width: 20px !important"/></div>Subir a DB]
style Chroma-jofgi stroke:#a170ff
OpenAIEmbeddings-i5sb1[<div><img src="/_astro/openAI.BhmuxEs3.svg" style="height: 20px !important;width: 20px !important"/></div>OpenAI Embeddings]
style OpenAIEmbeddings-i5sb1 stroke:#a170ff
LanguageRecursiveTextSplitter-hfflv[Language Recursive Text Splitter]
style LanguageRecursiveTextSplitter-hfflv stroke:#a170ff
googlecalendarcomponent-m343k -.- ParseData-64ynd
linkStyle 0 stroke:#a170ff
Prompt-pfcxi -.- LanggraphReactAgent-8scqw
linkStyle 1 stroke:#a170ff
OpenAIModel-4jw7u -.- LanggraphReactAgent-8scqw
linkStyle 2 stroke:#a170ff
LanggraphReactAgent-8scqw -.- ChatOutput-g8z2x
linkStyle 3 stroke:#a170ff
TextInput-m9s4i -.- Prompt-pfcxi
linkStyle 4 stroke:#a170ff
GSheetCellComponent-b94wx -.- LanggraphReactAgent-8scqw
linkStyle 5 stroke:#a170ff
TextInput-c0vec -.- Prompt-pfcxi
linkStyle 6 stroke:#a170ff
OpenAIEmbeddings-i5sb1 -.- Chroma-jofgi
linkStyle 7 stroke:#a170ff
OpenAIEmbeddings-85qva -.- Chroma-uql7r
linkStyle 8 stroke:#a170ff
Chroma-uql7r -.- ParseData-uxz7v
linkStyle 9 stroke:#a170ff
ParseData-uxz7v -.- Prompt-pfcxi
linkStyle 10 stroke:#a170ff
ParseData-64ynd -.- LanguageRecursiveTextSplitter-hfflv
linkStyle 11 stroke:#a170ff
LanguageRecursiveTextSplitter-hfflv -.- Chroma-jofgi
linkStyle 12 stroke:#a170ff
📄 Documentación del flujo de trabajo “Agente de IA: Asistente de Google Calendar”
🧩 Descripción general
El flujo automatiza la gestión de eventos de Google Calendar, ofreciendo resúmenes claros y permitiendo registrar la información de las citas en una hoja de cálculo de Google Sheets. Utiliza un agente de LLM para generar respuestas estructuradas a partir de los datos recuperados y aplicar herramientas de Google Calendar y Sheets.
⚙️ Funcionalidades principales
- Obtención y filtrado de eventos de Google Calendar según rango de fechas.
- Procesamiento y formateo de los datos de los eventos en texto plano.
- Indexación de los fragmentos de texto en un vector store para búsquedas semánticas.
- Búsqueda semántica de eventos relevantes mediante embeddings de OpenAI.
- Generación de prompts dinámicos que combinan datos de eventos y contexto de usuario.
- Ejecución de un agente react que puede invocar herramientas (Google Calendar y Sheets).
- Persistencia de la información en Google Sheets como registro de la agenda.
- Salida de chat con respuestas estructuradas y comprensibles.
🔄 Pasos del flujo de trabajo
| Nombre del componente | Rol en el flujo | Entradas clave | Salidas clave |
|---|---|---|---|
| Obtener Eventos | Lee eventos de Google Calendar | Calendar ID, Rango de fechas, Operación “Get” | Datos crudos de eventos |
| Procesar Datos de Evento (ParseData) | Convierte datos de evento a texto | Datos crudos de eventos | Texto estructurado del evento |
| Dividir Texto (Language Recursive Text Splitter) | Segmenta texto en fragmentos manejables | Texto estructurado del evento | Fragmentos de texto (chunks) |
| Indexar en Vector Store (Chroma) | Añade fragmentos a la base de vectores | Fragmentos, Embeddings (OpenAIEmbeddings) | Vector store actualizado |
| Recuperar Información (Chroma) | Busca eventos relevantes mediante embeddings | Pregunta de búsqueda (generada por Prompt) | Resultados de búsqueda (datos) |
| Obtener Texto de resultados (ParseData) | Convierte resultados de búsqueda a texto | Resultados de búsqueda | Texto formateado de resultados |
| Construir Prompt (Prompt) | Genera prompt dinámico para el agente | Tema, Momento, Texto de eventos, Otros datos | Prompt completo |
| Ejecutar Agente (LanggraphReactAgent) | Procesa el prompt con un LLM y herramientas | Prompt, LLM (OpenAIModel), Herramientas (Calendar, Sheets) | Respuesta generada por LLM |
| Mostrar Chat Output (ChatOutput) | Presenta la respuesta al usuario | Respuesta del agente | Mensaje de chat mostrado |
| Registrar en Agenda de Citas (GSheetCellComponent) | Registra la cita en Google Sheets | Datos de la cita (nombre, fecha, estado, etc.) | Confirmación de inserción en la hoja de cálculo |
| Texto de Momento (TextInput) | Entrada de usuario: momento a comprobar | Texto del momento (“mañana”, etc.) | Texto del momento |
| Tema a Comprobar (TextInput) | Entrada de usuario: tema a filtrar | Texto del tema (“Daily”, etc.) | Texto del tema |
Nota: Los componentes LabelComponent se utilizan solo para documentación visual y no intervienen en la lógica del flujo.
🧠 Notas
- El agente se basa en OpenAI GPT‑4‑mini por defecto, pero puede sustituirse por cualquier modelo compatible.
- Las embeddings se generan con OpenAI Embeddings (text‑embedding‑3‑small); se usan tanto para añadir como para buscar en el vector store.
- La búsqueda semántica se limita a los 500 resultados más cercanos (configurable en el componente Chroma).
- El componente GSheetCellComponent solo escribe en la hoja cuando el agente decide registrar una cita; el registro incluye nombre, fecha y estado.
- El flujo permite ajustes de rango de fechas y filtros de tema mediante las entradas de texto de usuario.
- No se incluyen identificadores internos (IDs) en la documentación para mantener la claridad y la confidencialidad.