34 lines
2.0 KiB
Python
34 lines
2.0 KiB
Python
# 2 модуль - Генератор парафраза на основе llama.cpp
|
||
|
||
from openai import OpenAI
|
||
|
||
class ParaphraseGenerator:
|
||
"""
|
||
Класс для использования генеративной модели на базе llama.cpp
|
||
"""
|
||
def __init__(self):
|
||
self.client = OpenAI(base_url="http://127.0.0.1:8080", api_key="")
|
||
|
||
def generate(self, srcText, entities):
|
||
"""
|
||
Генерация парафраза по промпту.
|
||
Использование: generate(<исходный текст>, <сущности>)
|
||
"""
|
||
entityList = ', '.join(entity['text'] for entity in entities) # генерация списка выделенных сущностей
|
||
prompt = 'Перефразируй следующий текст, сохранив все именованные сущности "' + entityList + '" в точности такими же, как в оригинале. ' \
|
||
'Не изменяй эти фрагменты текста, не заменяй их синонимами, не переставляй слова внутри них. ' \
|
||
'Можешь изменять грамматическую структуру предложения, порядок слов, использовать синонимы для' \
|
||
'остальных частей текста, но именованные сущности должны остаться неизменными. Исходный текст: "' + srcText + '"'
|
||
try:
|
||
response = self.client.chat.completions.create(
|
||
model = "",
|
||
messages = [{"role": "user", "content": prompt}],
|
||
temperature = 0.8,
|
||
top_p = 0.95,
|
||
max_tokens = 200
|
||
)
|
||
return response.choices[0].message.content
|
||
except Exception as e:
|
||
print(f"Ошибка генерации: {e}")
|
||
return None
|