networkbot / functions /summarize.py
Adieva-15's picture
fixed summarize.py
5bb03c8
Raw
History Blame Contribute Delete
2.91 kB
# from config import model_sum
# from transformers import AutoTokenizer, T5ForConditionalGeneration
# import torch
#
#
# tokenizer = AutoTokenizer.from_pretrained(model_sum)
# model=T5ForConditionalGeneration.from_pretrained(model_sum)
#
#
# def summarize_text(text:str)->str:
# try:
# tokenizer.pad_token=tokenizer.eos_token
# input_text = "summarize: " + text #Обязательный префикс для задачи суммаризации в T5
# input_ids=tokenizer([input_text],
# max_length=600,
# add_special_tokens=True,
# padding='max_length',
# truncation=True,
# return_tensors='pt')['input_ids']
# with torch.no_grad():
# output_ids=model.generate(
# input_ids=input_ids,
# max_length=200,
# min_length=30,
# no_repeat_ngram_size=4, #Запрещает повторение 4-грамм — текст становится более связным
# num_beams=4, # поиск по лучам для улучшения качества
# early_stopping=True #Останавливает генерацию, когда все лучи достигли конца
# )[0]
#
# summary = tokenizer.decode(output_ids, skip_special_tokens=True)
# return summary
# except Exception as e:
# return f"Error {str(e)}"
import os
import requests
API_URL = "https://router.huggingface.co/hf-inference/models/cointegrated/rut5-base-absum"
headers = {
"Authorization": f"Bearer {os.environ['HF_TOKEN']}",
}
def summarize_text(text: str) -> str:
if not text.strip():
return "Текст пуст."
payload = {
"inputs": text,
"parameters": {
"max_length": 200,
"min_length": 30,
"num_beams": 4,
"early_stopping": True
}
}
try:
response = requests.post(API_URL, headers=headers, json=payload, timeout=30)
response.raise_for_status() # выбросит исключение при HTTP-ошибке
result = response.json()
# Для T5 результат — список с полем 'summary_text'
if isinstance(result, list) and len(result) > 0:
summary = result[0].get('summary_text')
if summary is None:
summary = result[0].get('generated_text', 'Не удалось получить пересказ')
return summary
else:
return str(result)
return str(result)
except requests.exceptions.RequestException as e:
return f"Ошибка сети при вызове API: {str(e)}"
except Exception as e:
return f"Ошибка API: {str(e)}"