ym88659208ym87991671
Суммаризация больших текстов с помощью GigaChain | Документация для разработчиков

Суммаризация больших текстов с помощью GigaChain

Обновлено 6 мая 2024

Раздел содержит пример суммаризации первых двух глав «Мастера и Маргариты» с помощью GigaChain и нескольких шаблонов промптов, доступных в репозитории.

Используйте для суммаризации модель GigaChat, которая поддерживает 8000 токенов и более. Например, GigaChat-Pro или GigaChat-Plus.

Пример:

from langchain.prompts import load_prompt
from langchain.chains.summarize import load_summarize_chain
from langchain.chat_models import GigaChat
from langchain.document_loaders import TextLoader
from langchain.text_splitter import RecursiveCharacterTextSplitter

giga = GigaChat(credentials="<авторизационные_данные>", model="GigaChat-Pro")

loader = TextLoader("../../../../docs/docs/use_cases/мастер_и_маргарита.txt")
documents = loader.load()

text_splitter = RecursiveCharacterTextSplitter(
chunk_size = 7000,
chunk_overlap = 0,
length_function = len,
is_separator_regex = False,
)
documents = text_splitter.split_documents(documents)
print(f"Количество частей книги: {len(documents)}")

book_map_prompt = load_prompt("lc://prompts/summarize/map_reduce/summarize_book_map.yaml")
book_combine_prompt = load_prompt("lc://prompts/summarize/map_reduce/summarize_book_combine.yaml")

chain = load_summarize_chain(giga, chain_type="map_reduce",
map_prompt=book_map_prompt,
combine_prompt=book_combine_prompt,
verbose=False)
res = chain.invoke({"input_documents": documents})
print(res["output_text"].replace(". ", ".\n"))

Используйте дополнительные параметры функции chain.invoke(), для управления объемом текста и изменения количества предложений:

res = chain.invoke({
"input_documents": documents,
"map_size": "одно предложение",
"combine_size": "три предложения"
})
print(res["output_text"].replace(". ", ".\n"))

Смотрите также

ПАО Сбербанк использует cookie для персонализации сервисов и удобства пользователей.
Вы можете запретить сохранение cookie в настройках своего браузера.