Опубликовано: 12 марта 2025 г., Последнее обновление: 28 мая 2025 г.
Объяснитель | Интернет | Расширения | Статус Chrome | Намерение |
---|---|---|---|---|
МДН | Вид | Намерение отправить |
API Summarizer помогает создавать сводки информации различной длины и формата. Используйте его с Gemini Nano в Chrome или другими языковыми моделями, встроенными в браузеры, чтобы кратко излагать длинные или сложные тексты.
При работе на стороне клиента вы можете работать с данными локально, что обеспечивает безопасность конфиденциальных данных и масштабируемость. Однако контекстное окно гораздо меньше, чем в серверных моделях, что означает, что суммирование очень больших документов может быть затруднительным. Для решения этой проблемы можно использовать метод суммирования сумм .
Что такое резюме резюме?
Чтобы использовать метод «краткого изложения кратких изложений» , разделите входной текст по ключевым моментам, а затем составьте краткий обзор каждой части. Вы можете объединить результаты каждой части, а затем свести этот объединённый текст в итоговое резюме.

Продуманно разделите свой контент
Важно продумать, как вы будете разбивать большой текст, поскольку разные стратегии могут привести к разным результатам для разных студентов магистратуры. В идеале текст следует разбивать при смене темы, например, при переходе к новому разделу статьи или абзацу. Важно избегать разбиения текста в середине слова или предложения, то есть нельзя использовать количество символов в качестве единственного ориентира для разбиения.
Есть много способов сделать это. В следующем примере мы использовали рекурсивный разделитель текста из LangChain.js , который обеспечивает баланс между производительностью и качеством вывода. Этого должно хватить для большинства рабочих нагрузок.
При создании нового экземпляра есть два ключевых параметра:
-
chunkSize
— максимальное количество символов, разрешенное в каждом разделении. -
chunkOverlap
— это количество символов, перекрывающихся между двумя последовательными фрагментами. Это гарантирует, что каждый фрагмент будет содержать часть контекста предыдущего фрагмента.
Разделите текст с помощью splitText()
чтобы получить массив строк для каждого фрагмента.
В большинстве LLM контекстное окно выражается числом токенов, а не символов. В среднем токен содержит 4 символа. В нашем примере chunkSize
составляет 3000 символов, что составляет примерно 750 токенов.
Определить доступность токенов
Чтобы определить количество токенов, доступных для ввода, используйте метод measureInputUsage()
и свойство inputQuota
. В этом случае реализация не имеет ограничений, поскольку невозможно предсказать, сколько раз будет запущена функция суммирования для обработки всего текста.
Сгенерировать сводки для каждого разделения
После настройки разделения контента вы можете сгенерировать сводки для каждой части с помощью API Summarizer.
Создайте экземпляр реферера с помощью функции create()
. Чтобы сохранить как можно больше контекста, мы установили параметр format
на plain-text
, type
на tldr
и length
на long
.
Затем сгенерируйте сводку для каждого разделения, созданного RecursiveCharacterTextSplitter
, и объедините результаты в новую строку. Мы разделили каждую сводку новой строкой, чтобы чётко обозначить сводку для каждой части.
Хотя эта новая строка не имеет значения при однократном выполнении цикла, она полезна для определения того, как каждое краткое содержание влияет на ценность токена для итогового краткого содержания. В большинстве случаев это решение должно работать для контента средней и большой длины.
Рекурсивное резюме резюме
При слишком длинном тексте длина объединенного резюме может превышать доступное контекстное окно, что приводит к сбою в реферировании. Чтобы решить эту проблему, можно рекурсивно суммировать резюме.

Мы по-прежнему собираем начальные разбиения, сгенерированные функцией RecursiveCharacterTextSplitter
. Затем, в функции recursiveSummarizer()
, мы циклически повторяем процесс суммирования, основываясь на длине объединённых разбиений. Если длина сумм превышает 3000
символов, мы объединяем их в fullSummaries
. Если предел не достигнут, суммирование сохраняется как partialSummaries
.
После того, как все сводки сформированы, окончательные частичные сводки добавляются к полной сводке. Если в fullSummaries
только одна сводка, дополнительная рекурсия не требуется. Функция возвращает окончательную сводку. Если имеется несколько сводок, функция повторяет процесс и продолжает суммировать частичные сводки.
Мы протестировали это решение с помощью RFC протокола Internet Relay Chat (IRC) , который содержит целых 110 030 символов, включая 17 560 слов. API Summarizer предоставил следующую сводку:
Internet Relay Chat (IRC) — это способ онлайн-общения в режиме реального времени с помощью текстовых сообщений. Вы можете общаться в каналах или отправлять личные сообщения, а также использовать команды для управления чатом и взаимодействия с сервером. Это своего рода интернет-чат, где вы можете писать и мгновенно видеть сообщения других пользователей.
Очень эффективно! И всего 309 символов.
Ограничения
Метод «суммирования сводок» помогает работать в рамках контекстного окна модели клиентского размера. Несмотря на множество преимуществ клиентского ИИ , вы можете столкнуться со следующими проблемами:
- Менее точные рефераты : При рекурсии повторение процесса реферата может быть бесконечным, и каждый реферат всё дальше от исходного текста. Это означает, что модель может сгенерировать слишком поверхностное, чтобы быть полезным, итоговое реферат.
- Более низкая производительность : создание каждого резюме занимает время. Опять же, учитывая бесконечное количество резюме в больших текстах, этот подход может занять несколько минут.
У нас есть демонстрационная версия сумматора , и вы можете просмотреть полный исходный код .
Поделитесь своим мнением
Попробуйте использовать метод сводки сводок с разной длиной входного текста, разным размером разделения и разной длиной перекрытия с помощью API Summarizer .
- Чтобы оставить отзыв о реализации Chrome, отправьте отчет об ошибке или запрос на новую функцию .
- Прочтите документацию на MDN
- Пообщайтесь с командой Chrome AI о процессе реферирования или любых других вопросах, связанных со встроенным ИИ.