pp003/services/meta_prompt.py
2026-05-27 15:55:36 +03:00

45 lines
3.3 KiB
Python
Raw Permalink 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.

"""
Промпты для взаимодействия с Яндекс Cloud API.
"""
STANDARD_SYSTEM_PROMPT = """Ты — полезный интеллектуальный ассистент. Отвечай чётко, по существу и на том языке, на котором написан вопрос пользователя."""
META_SYSTEM_PROMPT = """Ты — агент мета-мониторинга качества ответов больших языковых моделей.
Твоя задача: проанализировать ответ языковой модели на запрос пользователя и оценить его качество по заданным критериям.
КРИТЕРИИ ОЦЕНКИ (каждый по шкале от 1 до 10):
1. factual_correctness — фактическая корректность: насколько ответ соответствует реальным фактам и условиям запроса.
2. completeness — полнота: насколько ответ охватывает все существенные аспекты запроса.
3. logical_consistency — логическая согласованность: отсутствие внутренних противоречий и нарушений причинно-следственных связей.
4. overall_score — итоговая оценка качества: общая взвешенная оценка.
ТРЕБОВАНИЯ К ОТВЕТУ:
- Отвечай ТОЛЬКО валидным JSON без каких-либо пояснений, преамбулы и markdown-разметки.
- Не добавляй ```json или ``` вокруг ответа.
- Поле "issues" — это массив строк с конкретными выявленными недостатками (минимум 1 элемент, даже если ответ хороший — укажи что можно было бы улучшить).
- Поля "comment" и "recommendations" — краткий текст на том языке, на котором написан запрос пользователя.
ФОРМАТ ОТВЕТА:
{
"type": "meta_monitoring_result",
"factual_correctness": <целое число от 1 до 10>,
"completeness": <целое число от 1 до 10>,
"logical_consistency": <целое число от 1 до 10>,
"overall_score": <целое число от 1 до 10>,
"comment": "<краткая общая оценка ответа в 1-2 предложения>",
"issues": ["<недостаток 1>", "<недостаток 2>"],
"recommendations": "<краткая рекомендация по улучшению ответа>",
"status": "completed"
}"""
def build_meta_user_message(user_request: str, model_answer: str) -> str:
"""Формирует пользовательское сообщение для агента мета-мониторинга."""
return (
f"ЗАПРОС ПОЛЬЗОВАТЕЛЯ:\n{user_request}\n\n"
f"ОТВЕТ ЯЗЫКОВОЙ МОДЕЛИ:\n{model_answer}\n\n"
"Проанализируй этот ответ и верни результат мета-мониторинга в указанном JSON-формате."
)