GRAPH_FIELD_SEP = "<SEP>"

PROMPTS = {}

PROMPTS["DEFAULT_TUPLE_DELIMITER"] = "<|>"
PROMPTS["DEFAULT_RECORD_DELIMITER"] = "##"
PROMPTS["DEFAULT_COMPLETION_DELIMITER"] = "<|COMPLETE|>"
PROMPTS["DEFAULT_LANGUAGE"] = "Russian"

PROMPTS["DEFAULT_USER_PROMPT"] = "n/a"

PROMPTS["DEFAULT_ENTITY_TYPES"] = [
    "интеграция",           # REST API, SOAP, MQ, способы интеграции между системами
    "архитектура",          # микросервисная, монолитная, слоистая архитектура
    "взаимодействие_систем", # синхронное/асинхронное взаимодействие, протоколы
    "требование",           # функциональные, нефункциональные, производительности
    "мониторинг",           # метрики, логирование, алерты, мониторинг состояния
    "член_команды",         # разработчики, тестировщики, аналитики, роли
    "цель",                 # бизнес-цели, технические цели, KPI
    "roadmap",              # план развития, этапы реализации, милестоуны
    "срок",                 # дедлайны, временные рамки, планируемые даты
    "система",              # внешние системы, подсистемы, платформы
    "компонент",            # модули, сервисы, библиотеки
    "задача",               # конкретные рабочие задачи, тикеты
    "документ",             # техническая документация, спецификации
]

PROMPTS["entity_extraction"] = """
-Цель-
Дан текстовый документ, потенциально релевантный данной задаче, и список типов сущностей. Определите все сущности указанных типов из текста и все взаимосвязи между обнаруженными сущностями.

-Этапы-
1. Определите все сущности. Для каждой обнаруженной сущности извлеките следующую информацию:
- entity_name: Название сущности; используйте тот же язык, что и в исходном тексте. Если текст на английском, название должно писаться с заглавной буквы.
- entity_type: Один из следующих типов: [{entity_types}]
- entity_description: Подробное описание атрибутов и деятельности сущности.
Форматируйте каждую сущность как ("entity"{tuple_delimiter}<entity_name>{tuple_delimiter}<entity_type>{tuple_delimiter}<entity_description>)

2. Из сущностей, определённых на этапе 1, выделите все пары (source_entity, target_entity), которые *явно связаны* друг с другом.
Для каждой пары связанных сущностей извлеките следующую информацию:
- source_entity: название исходной сущности, как определено на этапе 1.
- target_entity: название целевой сущности, как определено на этапе 1.
- relationship_description: объяснение, почему, по вашему мнению, исходная и целевая сущности связаны между собой.
- relationship_strength: числовое значение, указывающее на силу связи между исходной и целевой сущностями.
- relationship_keywords: одно или несколько ключевых слов высокого уровня, обобщающих суть связи, с акцентом на концепции или темы, а не на конкретные детали.
Форматируйте каждую связь как ("relationship"{tuple_delimiter}<source_entity>{tuple_delimiter}<target_entity>{tuple_delimiter}<relationship_description>{tuple_delimiter}<relationship_keywords>{tuple_delimiter}<relationship_strength>)

3. Определите ключевые слова высокого уровня, которые обобщают основные концепции, темы или вопросы всего текста. Они должны отражать основные идеи, присутствующие в документе.
Форматируйте ключевые слова на уровне содержания как ("content_keywords"{tuple_delimiter}<high_level_keywords>)

4. Верните результат в виде единого списка всех сущностей и связей, определённых на этапах 1 и 2. Используйте **{record_delimiter}** в качестве разделителя элементов списка.

5. По завершении выведите {completion_delimiter}

######################
-Примеры-
######################
{examples}

#############################
-Реальные данные-
######################
Типы сущностей: {entity_types}
Текст: {input_text}
######################

Вывод:
"""

PROMPTS["entity_extraction_examples"] = [
    """Пример 1:

Типы сущностей: [интеграция, архитектура, взаимодействие_систем, требование, мониторинг, член_команды, цель, roadmap, срок, система, компонент, задача, документ]
Текст:
Система управления заказами должна интегрироваться с CRM через REST API для получения данных клиентов. Архитектура должна поддерживать микросервисный подход с отдельными компонентами для обработки заказов и уведомлений. Ведущий разработчик Иванов И.И. отвечает за реализацию интеграционного слоя. Требования к производительности: система должна обрабатывать до 1000 запросов в секунду. Мониторинг системы должен включать метрики производительности и логирование ошибок. Цель проекта - увеличить конверсию продаж на 20%. Дедлайн по интеграции - 15 марта.

################
Вывод:
("entity"{tuple_delimiter}"Система управления заказами"{tuple_delimiter}"система"{tuple_delimiter}"Основная система проекта, предназначенная для управления процессом оформления и обработки заказов."){record_delimiter}
("entity"{tuple_delimiter}"CRM"{tuple_delimiter}"система"{tuple_delimiter}"Система управления взаимоотношениями с клиентами, источник данных о клиентах."){record_delimiter}
("entity"{tuple_delimiter}"REST API интеграция"{tuple_delimiter}"интеграция"{tuple_delimiter}"Способ интеграции между системой управления заказами и CRM для получения данных клиентов через REST API."){record_delimiter}
("entity"{tuple_delimiter}"Микросервисная архитектура"{tuple_delimiter}"архитектура"{tuple_delimiter}"Архитектурный подход с разделением функциональности на отдельные независимые сервисы."){record_delimiter}
("entity"{tuple_delimiter}"Компонент обработки заказов"{tuple_delimiter}"компонент"{tuple_delimiter}"Отдельный модуль системы, отвечающий за логику обработки заказов."){record_delimiter}
("entity"{tuple_delimiter}"Компонент уведомлений"{tuple_delimiter}"компонент"{tuple_delimiter}"Отдельный модуль системы, отвечающий за отправку уведомлений пользователям."){record_delimiter}
("entity"{tuple_delimiter}"Иванов И.И."{tuple_delimiter}"член_команды"{tuple_delimiter}"Ведущий разработчик, ответственный за реализацию интеграционного слоя системы."){record_delimiter}
("entity"{tuple_delimiter}"Требование производительности"{tuple_delimiter}"требование"{tuple_delimiter}"Нефункциональное требование: система должна обрабатывать до 1000 запросов в секунду."){record_delimiter}
("entity"{tuple_delimiter}"Мониторинг производительности"{tuple_delimiter}"мониторинг"{tuple_delimiter}"Система отслеживания метрик производительности и логирования ошибок."){record_delimiter}
("entity"{tuple_delimiter}"Увеличение конверсии"{tuple_delimiter}"цель"{tuple_delimiter}"Бизнес-цель проекта - увеличить конверсию продаж на 20 процентов."){record_delimiter}
("entity"{tuple_delimiter}"Дедлайн интеграции"{tuple_delimiter}"срок"{tuple_delimiter}"Временные рамки для завершения интеграции - 15 марта."){record_delimiter}
("relationship"{tuple_delimiter}"Система управления заказами"{tuple_delimiter}"CRM"{tuple_delimiter}"Система управления заказами интегрируется с CRM для получения данных клиентов."{tuple_delimiter}"системная интеграция, обмен данными"{tuple_delimiter}9){record_delimiter}
("relationship"{tuple_delimiter}"REST API интеграция"{tuple_delimiter}"Система управления заказами"{tuple_delimiter}"REST API используется для интеграции системы управления заказами с внешними системами."{tuple_delimiter}"техническая реализация, интеграция"{tuple_delimiter}8){record_delimiter}
("relationship"{tuple_delimiter}"Микросервисная архитектура"{tuple_delimiter}"Компонент обработки заказов"{tuple_delimiter}"Компонент обработки заказов является частью микросервисной архитектуры системы."{tuple_delimiter}"архитектурная структура, модульность"{tuple_delimiter}9){record_delimiter}
("relationship"{tuple_delimiter}"Иванов И.И."{tuple_delimiter}"REST API интеграция"{tuple_delimiter}"Иванов И.И. отвечает за реализацию интеграционного слоя, включая REST API."{tuple_delimiter}"ответственность, техническая реализация"{tuple_delimiter}10){record_delimiter}
("relationship"{tuple_delimiter}"Мониторинг производительности"{tuple_delimiter}"Требование производительности"{tuple_delimiter}"Мониторинг необходим для контроля соблюдения требований производительности системы."{tuple_delimiter}"контроль качества, мониторинг"{tuple_delimiter}8){record_delimiter}
("relationship"{tuple_delimiter}"Увеличение конверсии"{tuple_delimiter}"Система управления заказами"{tuple_delimiter}"Система управления заказами создается для достижения цели увеличения конверсии продаж."{tuple_delimiter}"бизнес-цель, системная функция"{tuple_delimiter}7){record_delimiter}
("content_keywords"{tuple_delimiter}"системная интеграция, микросервисная архитектура, управление проектом, производительность"){completion_delimiter}
#############################""",
    
    """Пример 2:

Типы сущностей: [интеграция, архитектура, взаимодействие_систем, требование, мониторинг, член_команды, цель, roadmap, срок, система, компонент, задача, документ]
Текст:
Команда разработки состоит из тимлида Петрова А.В., двух backend-разработчиков и одного QA-инженера Смирновой Е.К. Первый этап roadmap включает анализ требований до 1 февраля, второй этап - проектирование архитектуры до 15 февраля. Система должна обеспечивать асинхронное взаимодействие между модулями через message queue. Техническое задание определяет требования к масштабируемости и отказоустойчивости. Мониторинг должен включать dashboard с метриками в реальном времени.

################
Вывод:
("entity"{tuple_delimiter}"Петров А.В."{tuple_delimiter}"член_команды"{tuple_delimiter}"Тимлид команды разработки, руководящий процессом разработки системы."){record_delimiter}
("entity"{tuple_delimiter}"Backend-разработчики"{tuple_delimiter}"член_команды"{tuple_delimiter}"Два специалиста, ответственных за серверную логику и архитектуру системы."){record_delimiter}
("entity"{tuple_delimiter}"Смирнова Е.К."{tuple_delimiter}"член_команды"{tuple_delimiter}"QA-инженер, ответственный за тестирование и обеспечение качества системы."){record_delimiter}
("entity"{tuple_delimiter}"Анализ требований"{tuple_delimiter}"задача"{tuple_delimiter}"Первый этап работы, включающий детальный анализ и документирование требований к системе."){record_delimiter}
("entity"{tuple_delimiter}"Проектирование архитектуры"{tuple_delimiter}"задача"{tuple_delimiter}"Второй этап работы, включающий создание архитектурного решения системы."){record_delimiter}
("entity"{tuple_delimiter}"Roadmap разработки"{tuple_delimiter}"roadmap"{tuple_delimiter}"План развития проекта, включающий этапы анализа требований и проектирования архитектуры."){record_delimiter}
("entity"{tuple_delimiter}"Дедлайн анализа"{tuple_delimiter}"срок"{tuple_delimiter}"Временные рамки для завершения анализа требований - 1 февраля."){record_delimiter}
("entity"{tuple_delimiter}"Дедлайн проектирования"{tuple_delimiter}"срок"{tuple_delimiter}"Временные рамки для завершения проектирования архитектуры - 15 февраля."){record_delimiter}
("entity"{tuple_delimiter}"Асинхронное взаимодействие"{tuple_delimiter}"взаимодействие_систем"{tuple_delimiter}"Способ коммуникации между модулями системы через очереди сообщений без блокировки."){record_delimiter}
("entity"{tuple_delimiter}"Message Queue"{tuple_delimiter}"интеграция"{tuple_delimiter}"Технология для обеспечения асинхронного взаимодействия между компонентами системы."){record_delimiter}
("entity"{tuple_delimiter}"Техническое задание"{tuple_delimiter}"документ"{tuple_delimiter}"Документ, определяющий технические требования к системе, включая масштабируемость и отказоустойчивость."){record_delimiter}
("entity"{tuple_delimiter}"Требования масштабируемости"{tuple_delimiter}"требование"{tuple_delimiter}"Нефункциональные требования к способности системы увеличивать производительность при росте нагрузки."){record_delimiter}
("entity"{tuple_delimiter}"Требования отказоустойчивости"{tuple_delimiter}"требование"{tuple_delimiter}"Нефункциональные требования к способности системы продолжать работу при сбоях компонентов."){record_delimiter}
("entity"{tuple_delimiter}"Dashboard мониторинга"{tuple_delimiter}"мониторинг"{tuple_delimiter}"Интерфейс для отображения метрик системы в реальном времени."){record_delimiter}
("relationship"{tuple_delimiter}"Петров А.В."{tuple_delimiter}"Backend-разработчики"{tuple_delimiter}"Петров А.В. как тимлид руководит работой backend-разработчиков."{tuple_delimiter}"управление командой, лидерство"{tuple_delimiter}9){record_delimiter}
("relationship"{tuple_delimiter}"Roadmap разработки"{tuple_delimiter}"Анализ требований"{tuple_delimiter}"Анализ требований является первым этапом в roadmap разработки."{tuple_delimiter}"планирование, последовательность задач"{tuple_delimiter}10){record_delimiter}
("relationship"{tuple_delimiter}"Анализ требований"{tuple_delimiter}"Дедлайн анализа"{tuple_delimiter}"Анализ требований должен быть завершен к установленному дедлайну."{tuple_delimiter}"временные ограничения, планирование"{tuple_delimiter}8){record_delimiter}
("relationship"{tuple_delimiter}"Message Queue"{tuple_delimiter}"Асинхронное взаимодействие"{tuple_delimiter}"Message Queue обеспечивает техническую реализацию асинхронного взаимодействия."{tuple_delimiter}"техническая реализация, архитектурное решение"{tuple_delimiter}9){record_delimiter}
("relationship"{tuple_delimiter}"Техническое задание"{tuple_delimiter}"Требования масштабируемости"{tuple_delimiter}"Техническое задание содержит и определяет требования к масштабируемости системы."{tuple_delimiter}"документирование требований, спецификация"{tuple_delimiter}9){record_delimiter}
("relationship"{tuple_delimiter}"Смирнова Е.К."{tuple_delimiter}"Требования отказоустойчивости"{tuple_delimiter}"QA-инженер отвечает за тестирование соответствия системы требованиям отказоустойчивости."{tuple_delimiter}"контроль качества, тестирование"{tuple_delimiter}7){record_delimiter}
("content_keywords"{tuple_delimiter}"управление командой, планирование разработки, архитектурное проектирование, асинхронные коммуникации"){completion_delimiter}
#############################""",

    """Пример 3:

Типы сущностей: [интеграция, архитектура, взаимодействие_систем, требование, мониторинг, член_команды, цель, roadmap, срок, система, компонент, задача, документ]
Текст:
Целью проекта является создание единой платформы для мониторинга всех микросервисов компании. Система должна интегрироваться с Kafka для получения логов и с Prometheus для сбора метрик. Архитектурное решение предусматривает использование контейнеризации Docker и оркестрации Kubernetes. Взаимодействие с внешними системами происходит через gRPC протокол. Системный администратор Козлов Д.М. настраивает инфраструктуру мониторинга. План проекта предусматривает запуск MVP к концу квартала.

################
Вывод:
("entity"{tuple_delimiter}"Единая платформа мониторинга"{tuple_delimiter}"система"{tuple_delimiter}"Центральная система для мониторинга всех микросервисов компании."){record_delimiter}
("entity"{tuple_delimiter}"Создание платформы мониторинга"{tuple_delimiter}"цель"{tuple_delimiter}"Основная цель проекта - создание единой платформы для мониторинга микросервисов."){record_delimiter}
("entity"{tuple_delimiter}"Kafka интеграция"{tuple_delimiter}"интеграция"{tuple_delimiter}"Интеграция с Apache Kafka для получения и обработки логов от микросервисов."){record_delimiter}
("entity"{tuple_delimiter}"Prometheus интеграция"{tuple_delimiter}"интеграция"{tuple_delimiter}"Интеграция с Prometheus для сбора и анализа метрик производительности."){record_delimiter}
("entity"{tuple_delimiter}"Docker контейнеризация"{tuple_delimiter}"архитектура"{tuple_delimiter}"Архитектурное решение с использованием контейнеризации для изоляции и портабельности приложений."){record_delimiter}
("entity"{tuple_delimiter}"Kubernetes оркестрация"{tuple_delimiter}"архитектура"{tuple_delimiter}"Система оркестрации контейнеров для автоматизации развертывания и управления."){record_delimiter}
("entity"{tuple_delimiter}"gRPC взаимодействие"{tuple_delimiter}"взаимодействие_систем"{tuple_delimiter}"Протокол для высокопроизводительного взаимодействия с внешними системами."){record_delimiter}
("entity"{tuple_delimiter}"Козлов Д.М."{tuple_delimiter}"член_команды"{tuple_delimiter}"Системный администратор, ответственный за настройку инфраструктуры мониторинга."){record_delimiter}
("entity"{tuple_delimiter}"План проекта"{tuple_delimiter}"roadmap"{tuple_delimiter}"Стратегический план развития проекта с ключевыми milestone."){record_delimiter}
("entity"{tuple_delimiter}"Запуск MVP"{tuple_delimiter}"задача"{tuple_delimiter}"Ключевая задача по запуску минимально жизнеспособного продукта."){record_delimiter}
("entity"{tuple_delimiter}"Дедлайн MVP"{tuple_delimiter}"срок"{tuple_delimiter}"Временное ограничение для запуска MVP - конец текущего квартала."){record_delimiter}
("entity"{tuple_delimiter}"Инфраструктура мониторинга"{tuple_delimiter}"мониторинг"{tuple_delimiter}"Техническая инфраструктура для обеспечения мониторинга системы."){record_delimiter}
("relationship"{tuple_delimiter}"Единая платформа мониторинга"{tuple_delimiter}"Kafka интеграция"{tuple_delimiter}"Платформа использует интеграцию с Kafka для получения логов от микросервисов."{tuple_delimiter}"сбор данных, логирование"{tuple_delimiter}9){record_delimiter}
("relationship"{tuple_delimiter}"Единая платформа мониторинга"{tuple_delimiter}"Prometheus интеграция"{tuple_delimiter}"Платформа интегрируется с Prometheus для сбора метрик производительности."{tuple_delimiter}"мониторинг метрик, сбор данных"{tuple_delimiter}9){record_delimiter}
("relationship"{tuple_delimiter}"Docker контейнеризация"{tuple_delimiter}"Kubernetes оркестрация"{tuple_delimiter}"Kubernetes управляет Docker контейнерами в рамках архитектурного решения."{tuple_delimiter}"управление контейнерами, оркестрация"{tuple_delimiter}10){record_delimiter}
("relationship"{tuple_delimiter}"Козлов Д.М."{tuple_delimiter}"Инфраструктура мониторинга"{tuple_delimiter}"Козлов Д.М. отвечает за настройку и поддержку инфраструктуры мониторинга."{tuple_delimiter}"администрирование, техническая поддержка"{tuple_delimiter}8){record_delimiter}
("relationship"{tuple_delimiter}"План проекта"{tuple_delimiter}"Запуск MVP"{tuple_delimiter}"Запуск MVP является ключевым элементом плана проекта."{tuple_delimiter}"планирование, milestone"{tuple_delimiter}9){record_delimiter}
("relationship"{tuple_delimiter}"Запуск MVP"{tuple_delimiter}"Дедлайн MVP"{tuple_delimiter}"Запуск MVP должен быть завершен к установленному дедлайну."{tuple_delimiter}"временные ограничения, планирование"{tuple_delimiter}8){record_delimiter}
("relationship"{tuple_delimiter}"Создание платформы мониторинга"{tuple_delimiter}"Единая платформа мониторинга"{tuple_delimiter}"Цель проекта направлена на создание единой платформы мониторинга."{tuple_delimiter}"целеполагание, реализация проекта"{tuple_delimiter}10){record_delimiter}
("content_keywords"{tuple_delimiter}"мониторинг микросервисов, контейнеризация, системная интеграция, управление проектом"){completion_delimiter}
#############################""",
]

PROMPTS[
    "summarize_entity_descriptions"
] = """
Вы полезный помощник, ответственный за составление исчерпывающего обзора представленных ниже данных.
Даны одна или две сущности и список описаний, все из которых связаны с одной сущностью или группой сущностей.
Пожалуйста, объедините их в одно целостное описание. Обязательно включите всю информацию, собранную из описаний.
Если предоставленные описания противоречивы, устраните противоречия и сформируйте единое логичное резюме.
Убедитесь, что текст написан в третьем лице и включает имена сущностей для обеспечения полного контекста.

#######
-Данные-
Сущности: {entity_name}
Список описаний: {description_list}

Вывод:
"""

PROMPTS[
    "entity_continue_extraction"
] = """МНОГИЕ сущности были пропущены в последнем извлечении.  Добавьте их ниже, используя тот же формат:
"""

PROMPTS[
    "entity_if_loop_extraction"
] = """
Похоже, некоторые сущности могли быть пропущены.  Ответьте "ДА" | "НЕТ", если есть еще сущности, которые нужно добавить. 

Ответ:
"""

PROMPTS["fail_response"] = (
    "Извините, я не могу ответить на этот вопрос.[no-context]"
)

PROMPTS["rag_response"] = """
Ты эксперт бизнес-аналитик компании IBS, описывающий требования для российских заказчиков программного обеспечения профессиональным и технически грамотным тоном. Твоя задача - создавать требования в том же стиле и формате, как в примерах, которые тебе предоставят. Твоим ответом на запрос пользователя должна быть сформулированная строго по шаблону документация, аналогично предложенным примерам, но без заимствований из самих примеров.

КЛЮЧЕВЫЕ МОМЕНТЫ:  
1. Внимательно анализируй стиль, терминологию и уровень детализации в предоставленных примерах
2. Сохраняй согласованность с контекстом и шаблоном
3. Используй те же паттерны формулировок, что и в примерах
4. Поддерживай аналогичный уровень технической детализации
5. Сохраняй максимальное количество сущностей, таких как название и признаки таблиц, методы API и т.п. 

При написании требований:
- Следуй структуре и стилю примеров
- Используй схожие языковые конструкции
- Поддерживай тот же уровень формальности
- Применяй аналогичный подход к декомпозиции требований
- Используй ТОЛЬКО информацию, которая тебе точно известна

Если не уверен в какой-то части, используй слово "Пример".

ВАЖНО: Твоя главная цель - максимально точно воспроизвести стиль и подход эталонных требований, адаптируя их под новый контекст без искажений и неточностей.
### Контекст: 
{context_data}
Ответ:
"""

PROMPTS["keywords_extraction"] = """
---Роль---
Вы полезный помощник, отвечающий на вопросы пользователя о базе знаний, представленной ниже.

---Цель---
Дан запрос и история разговора, перечислите как высокие, так и низкие ключевые слова. Высокие ключевые слова (high_level_keywords) фокусируются на общих концепциях или темах, в то время как низкие ключевые слова (low_level_keywords) фокусируются на конкретных сущностях, деталях или конкретных терминах.

---Инструкции---
- Выведите ключевые слова в формате JSON
- JSON должен иметь два ключа:
  - "high_level_keywords" для общих концепций или тем
  - "low_level_keywords" дословные фразы, а также конкретные сущности

Для low_level_keywords:
- Сохраняйте оригинальные формулировки из запроса, а также включайте контекстные сочетания слов
- Извлекайте явные сущности (коды, модели, локации)
- Учитывайте числовые параметры и специальные символы
- Добавляйте подразумеваемые действия из контекста

######################
-Примеры-
######################
{examples}

#############################
-Реальные данные-
######################

Текущий запрос: {query}
######################


Вывод:
"""

PROMPTS["keywords_extraction_examples"] = [
    """Пример 1:

Запрос: "Как реализовать интеграцию с CRM через REST API для получения данных клиентов?"
################
Вывод:
{
  "high_level_keywords": ["системная интеграция", "управление данными клиентов"],
  "low_level_keywords": ["интеграция с CRM", "REST API", "данные клиентов", "реализация интеграции", "CRM система"]
}
#############################""",
    """Пример 2:

Запрос: "Какие требования к производительности нужно учесть при проектировании микросервисной архитектуры?"
################
Вывод:
{
  "high_level_keywords": ["архитектурное проектирование", "требования к производительности"],
  "low_level_keywords": ["микросервисная архитектура", "требования производительности", "проектирование архитектуры", "производительность системы"]
}
#############################""",
    """Пример 3:

Запрос: "Настройка мониторинга для системы с dashboard в реальном времени до 31 декабря"
################
Вывод:
{
  "high_level_keywords": ["системный мониторинг", "управление проектом"],
  "low_level_keywords": ["настройка мониторинга", "dashboard", "реальное время", "31 декабря", "система мониторинга", "дедлайн проекта"]
}
#############################""",
    """Пример 4:

Запрос: "Кто из команды отвечает за интеграцию с Kafka и когда планируется завершение?"
################
Вывод:
{
  "high_level_keywords": ["управление командой", "планирование проекта"],
  "low_level_keywords": ["член команды", "интеграция с Kafka", "ответственность за задачу", "сроки завершения", "Kafka интеграция"]
}
#############################""",
]

PROMPTS["naive_rag_response"] = """
Ты эксперт бизнес-аналитик компании IBS, описывающий требования для российских заказчиков программного обеспечения профессиональным и технически грамотным тоном. Твоя задача - создавать требования в том же стиле и формате, как в примерах, которые тебе предоставят. Твоим ответом на запрос пользователя должна быть сформулированная строго по шаблону документация, аналогично предложенным примерам, но без заимствований из самих примеров.

КЛЮЧЕВЫЕ МОМЕНТЫ:  
1. Внимательно анализируй стиль, терминологию и уровень детализации в предоставленных примерах
2. Сохраняй согласованность с контекстом и шаблоном
3. Используй те же паттерны формулировок, что и в примерах
4. Поддерживай аналогичный уровень технической детализации
5. Сохраняй максимальное количество сущностей, таких как название и признаки таблиц, методы API и т.п. 

При написании требований:
- Следуй структуре и стилю примеров
- Используй схожие языковые конструкции
- Поддерживай тот же уровень формальности
- Применяй аналогичный подход к декомпозиции требований
- Используй ТОЛЬКО информацию, которая тебе точно известна

Если не уверен в какой-то части, используй слово "Пример".

ВАЖНО: Твоя главная цель - максимально точно воспроизвести стиль и подход эталонных требований, адаптируя их под новый контекст без искажений и неточностей.

### Контекст: 
{content_data}
Ответ:
"""

PROMPTS["mix_rag_response"] = """
Ты эксперт бизнес-аналитик компании IBS, описывающий требования для российских заказчиков программного обеспечения профессиональным и технически грамотным тоном. Твоя задача - создавать требования в том же стиле и формате, как в примерах, которые тебе предоставят. Твоим ответом на запрос пользователя должна быть сформулированная строго по шаблону документация, аналогично предложенным примерам, но без заимствований из самих примеров.

КЛЮЧЕВЫЕ МОМЕНТЫ:  
1. Внимательно анализируй стиль, терминологию и уровень детализации в предоставленных примерах
2. Сохраняй согласованность с контекстом и шаблоном
3. Используй те же паттерны формулировок, что и в примерах
4. Поддерживай аналогичный уровень технической детализации
5. Сохраняй максимальное количество сущностей, таких как название и признаки таблиц, методы API и т.п. 

При написании требований:
- Следуй структуре и стилю примеров
- Используй схожие языковые конструкции
- Поддерживай тот же уровень формальности
- Применяй аналогичный подход к декомпозиции требований
- Используй ТОЛЬКО информацию, которая тебе точно известна

Если не уверен в какой-то части, используй слово "Пример".

ВАЖНО: Твоя главная цель - максимально точно воспроизвести стиль и подход эталонных требований, адаптируя их под новый контекст без искажений и неточностей.

---Контекст---
1. Из Knowledge Graph(KG):
{kg_context}

2. Из Document Chunks(DC):
{vector_context}
"""
