Files
VKR_2026/modules/paraGenerator.py
podiukov.iv 23fe47644f add dataset
2026-04-28 06:06:43 +05:00

46 lines
2.3 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 2 модуль - Генератор парафраза на основе llama.cpp
from openai import OpenAI
class ParaphraseGenerator:
"""
Класс для использования генеративной модели на базе llama.cpp
Использование: ParaphraseGenerator([температура], [максимальное количество токенов])
"""
def __init__(self, temperature=0.8, max_tokens=2048):
self.client = OpenAI(base_url='http://127.0.0.1:8080', api_key='')
self.temperature = temperature
self.max_tokens = max_tokens
def generateByPrompt(self, prompt):
try:
response = self.client.chat.completions.create(
model = '',
messages = [{'role': 'user', 'content': prompt}],
temperature = self.temperature,
max_tokens = self.max_tokens
)
return response.choices[0].message.content
except Exception as e:
print(f'Ошибка генерации: {e}')
return None
def generate(self, srcText, entities):
"""
Генерация парафраза.
Использование: generate(<исходный текст>, <сущности>)
Возвращает set сущностей (без повторения)
"""
prompt = (
f'Перефразируй следующий текст, сохранив все именованные сущности "{', '.join(entity for entity in entities)}" в точности такими же, как в оригинале. '
'Не изменяй эти фрагменты текста, не заменяй их синонимами, не переставляй слова внутри них. '
'Можешь изменять грамматическую структуру предложения, порядок слов, использовать синонимы для'
f'остальных частей текста, но именованные сущности должны остаться неизменными.'
f'Исходный текст: "{srcText}". Выводи только сгенерированный текст.'
)
return self.generateByPrompt(prompt)