Пошаговые инструкции advanced 14 мин

Как сделать ИИ-агента для Google Drive и Docs

Пошаговая инструкция по AI-агенту для Google Drive: Drive API, Docs API, экспорт файлов, RAG, индексация, ACL, права доступа и ответы с источниками.

RAG AI-агенты Инструкция документы Google Drive Google Docs Drive API права доступа

Что получится

ИИ-агент для Google Drive и Docs ищет ответы в рабочих файлах: Google Docs, Sheets, Slides, PDF, DOCX и других документах. Он индексирует доступные файлы, отвечает с цитатами и ссылками, а главное - не показывает пользователю то, к чему у него нет доступа.

Такой агент полезен для внутренней базы знаний, регламентов, коммерческих предложений, проектной документации, инструкций, договорных шаблонов и командных папок.

Главный риск

Самая опасная ошибка - сделать “один общий индекс Drive” и отвечать всем из него. Тогда сотрудник может получить фрагменты документов, к которым у него нет прав.

Поэтому агент должен учитывать ACL: права доступа к файлам, папкам и пользователям. Если пользователь не имеет права открыть документ в Google Drive, агент не должен показывать текст этого документа в ответе.

Шаг 1. Определите область индексации

Не начинайте с “весь Google Drive компании”. Выберите узкую область:

  • папка с базой знаний;
  • папка отдела продаж;
  • проектная папка;
  • набор регламентов;
  • документы для поддержки;
  • публичные для команды инструкции.

Для MVP лучше индексировать одну папку и ее подпапки. Так проще проверить права, качество ответов и обновление документов.

Шаг 2. Выберите способ доступа

Для Google Workspace обычно используют Google Drive API. Он позволяет искать файлы, читать метаданные, получать права доступа, скачивать обычные файлы и экспортировать Google Docs/Sheets/Slides в поддерживаемые форматы.

Для текста Google Docs можно использовать Google Docs API: он возвращает структуру документа и текстовые элементы. Для Google Sheets - Google Sheets API. Но для универсального индекса часто удобнее начинать с Drive API и export: документ превращается в text/html, plain text, PDF или DOCX, а дальше идет обычный pipeline извлечения текста.

Шаг 3. Настройте минимальные права

Не выдавайте приложению лишние scopes.

Минимальный подход:

  • читать только файлы, к которым пользователь дал доступ;
  • или читать только конкретную папку через сервисный аккаунт;
  • не давать право на удаление и изменение файлов;
  • не хранить refresh token без защиты;
  • разделять индексацию и ответы пользователям.

Если агент работает внутри компании, заранее решите: он действует “от имени пользователя” или “от имени сервисного аккаунта”. Это влияет на безопасность и ACL.

Шаг 4. Соберите список файлов

Индексатор должен получать не только текст, но и метаданные.

Для каждого файла сохраняйте:

  • file id;
  • название;
  • MIME type;
  • владельца;
  • папку;
  • ссылку;
  • дату изменения;
  • список прав доступа или наследуемые правила;
  • checksum или версию, если доступно;
  • источник текста: export, download, Docs API, OCR.

Не индексируйте корзину, временные файлы, старые архивы и документы без нужных прав.

Шаг 5. Извлеките текст

Разные файлы читаются по-разному.

  • Google Docs: через Docs API или export в текст/HTML.
  • Google Sheets: через Sheets API или export, если нужна таблица целиком.
  • Google Slides: export в текст/HTML/PDF, если нужны заметки и слайды.
  • PDF: загрузка файла и извлечение текста; для сканов нужен OCR.
  • DOCX: скачивание и парсинг как обычного документа.
  • Изображения: OCR только если это действительно нужно.

Сохраняйте ссылку на исходный файл и позицию фрагмента. Ответ без ссылки на источник хуже проверяется.

Шаг 6. Нарежьте документы на фрагменты

Не отправляйте большой документ целиком в модель. Разбейте текст на chunks.

Правила:

  • chunk должен сохранять смысловой блок;
  • заголовки и путь к файлу добавляйте в metadata;
  • таблицы лучше хранить как структурированный текст;
  • у каждого chunk должен быть file id;
  • у каждого chunk должны быть ACL-метаданные;
  • старые версии нужно заменять при обновлении файла.

Если документ часто меняется, храните `modifiedTime` и переиндексируйте только измененные файлы.

Шаг 7. Добавьте поиск с проверкой доступа

RAG-поиск должен проходить в два этапа:

  • найти релевантные chunks;
  • отфильтровать chunks по правам текущего пользователя.

Без второго этапа агент может случайно процитировать закрытый документ. Проверку можно делать по сохраненным ACL или онлайн через Drive API, если нужна максимальная точность.

В ответе показывайте только те источники, которые пользователь может открыть.

Шаг 8. Настройте ответ с цитатами

Хороший ответ агента:

  • коротко отвечает на вопрос;
  • показывает 2-5 источников;
  • дает ссылки на документы;
  • указывает, если данных недостаточно;
  • не делает выводы, которых нет в документах;
  • не пересказывает закрытые файлы;
  • предлагает уточнить папку, проект или период.

Если найдено несколько противоречащих документов, агент должен сказать об этом и показать даты обновления.

Шаг 9. Обработайте таблицы

Google Sheets часто используют как базу процессов: клиенты, статусы, контент-планы, финансы, задачи. Не всегда их нужно превращать в обычный текст.

Для таблиц полезно:

  • определить листы;
  • прочитать заголовки колонок;
  • понять типы данных;
  • индексировать строки с ключевыми колонками;
  • не отправлять всю таблицу в модель;
  • для расчетов использовать код или SQL-подобный слой, а не “считать глазами”.

Если задача аналитическая, лучше подключить отдельный табличный агент или экспортировать данные в аналитическую базу.

Шаг 10. Настройте обновления

Индекс должен обновляться, иначе агент будет отвечать по старым регламентам.

Варианты:

  • регулярный cron: проверять измененные файлы раз в час или день;
  • incremental sync по `modifiedTime`;
  • webhook/notifications, если инфраструктура готова;
  • ручная кнопка “переиндексировать папку”.

При удалении доступа к файлу chunk тоже должен перестать участвовать в ответах.

Шаг 11. Добавьте guardrails

Документный агент должен отказываться от опасных действий.

  • Не показывать документы без доступа.
  • Не раскрывать персональные данные без основания.
  • Не отвечать по устаревшему документу, если есть новая версия.
  • Не придумывать, если источник не найден.
  • Не обобщать договоры и юридические условия как окончательную консультацию.
  • Не давать ссылку на файл, если пользователь не имеет доступа.

Для важных ответов можно добавить режим “только с источниками”: если источников нет, ответа нет.

Шаг 12. Проверьте на тестовой папке

Соберите папку с 20-50 документами:

  • инструкции;
  • таблица с разными листами;
  • PDF с текстом;
  • PDF-скан;
  • старый документ;
  • закрытый документ;
  • документ с похожим названием;
  • файл, доступный только части пользователей.

Проверьте вопросы от разных ролей: админ, менеджер, новый сотрудник, внешний подрядчик. Самый важный тест - пользователь без доступа не должен получить ответ из закрытого файла.

Минимальная архитектура

ИИ-агент для Google Drive состоит из восьми блоков.

  • Drive connector: список файлов, metadata, permissions, download/export.
  • Extractor: Docs, Sheets, Slides, PDF, DOCX, OCR.
  • Chunker: нарезка с заголовками, file id и metadata.
  • Vector index: embeddings и поиск по смыслу.
  • ACL filter: проверка прав пользователя перед ответом.
  • Answer generator: ответ с цитатами и ссылками.
  • Sync worker: обновление измененных и удаленных файлов.
  • Audit layer: кто что спросил, какие источники использованы, какие файлы отфильтрованы.

Модель отвечает за формулировку ответа. Доступ к документам должен контролировать код.

Частые вопросы

Можно ли просто скачать весь Google Drive и сделать общий индекс?

Технически можно, но для компании это опасно. Нужен учет прав доступа. Иначе агент может раскрыть документы сотрудникам, которые не должны их видеть.

Что лучше: Drive API или Docs API?

Drive API нужен для файлов, папок, прав доступа, поиска, download и export. Docs API полезен, когда нужно аккуратно разобрать структуру Google Docs. На практике часто используют оба.

Как отвечать по Google Sheets?

Если таблица небольшая и справочная, ее можно индексировать как текст. Если там много строк и расчеты, лучше читать структуру таблицы и использовать отдельный табличный/аналитический слой.

Как часто обновлять индекс?

Для регламентов может хватить обновления раз в день. Для рабочих папок лучше incremental sync по времени изменения или webhook-уведомления. В любом случае удаление доступа должно учитываться быстро.

Что делать, если источник найден, но у пользователя нет доступа?

Не показывать этот фрагмент и не пересказывать его. Агент может сказать, что доступных источников недостаточно, или предложить запросить доступ к документу обычным способом.

Дальше по теме

Похожие материалы