Files
fckbot/rag/functions/check_consistency.py
Markov Andrey 63900feece Update 86 files
- /rag/commands/expert.py
- /core/services/__init__.py
- /core/services/embedding_service.py
- /core/services/file_service.py
- /core/services/giga_client.py
- /core/services/kb_service.py
- /core/services/postgres_service.py
- /core/services/qdrant_service.py
- /core/services/reranker_service.py
- /core/functions/__init__.py
- /core/functions/check_consistency.py
- /core/functions/check_spelling.py
- /core/functions/critique_answer.py
- /core/functions/expand_query.py
- /core/functions/extract_metrics.py
- /core/functions/file_processor.py
- /core/functions/generate_document.py
- /core/functions/intent_classify.py
- /core/functions/rerank_context.py
- /core/functions/summarize_document.py
- /core/utils/__init__.py
- /core/utils/arg_parser.py
- /core/utils/config_loader.py
- /core/utils/layout_converter.py
- /core/utils/logger.py
- /core/utils/text_utils.py
- /core/utils/web_utils.py
- /bots/commands/__init__.py
- /bots/commands/base.py
- /bots/commands/create.py
- /core/commands/global_remove.py
- /core/commands/help.py
- /core/commands/info.py
- /core/commands/kb.py
- /core/commands/learn.py
- /core/commands/other.py
- /core/commands/registry.py
- /core/commands/stats.py
- /core/commands/template.py
- /core/handlers/__init__.py
- /core/handlers/message_handler.py
- /core/workers/__init__.py
- /core/workers/indexing_worker.py
- /core/xmpp/__init__.py
- /core/xmpp/client.py
- /bots/commands/global_remove.py
- /bots/commands/help.py
- /bots/commands/info.py
- /bots/commands/kb.py
- /bots/commands/registry.py
- /bots/commands/other.py
- /bots/commands/template.py
- /bots/commands/learn.py
- /bots/commands/stats.py
- /bots/handlers/message_handler.py
- /bots/handlers/__init__.py
- /bots/workers/__init__.py
- /bots/workers/indexing_worker.py
- /bots/xmpp/__init__.py
- /bots/xmpp/client.py
- /rag/services/qdrant_service.py
- /rag/services/giga_client.py
- /rag/services/embedding_service.py
- /rag/services/reranker_service.py
- /rag/services/__init__.py
- /rag/services/file_service.py
- /rag/services/postgres_service.py
- /rag/services/kb_service.py
- /rag/functions/check_spelling.py
- /rag/functions/__init__.py
- /rag/functions/extract_metrics.py
- /rag/functions/generate_document.py
- /rag/functions/expand_query.py
- /rag/functions/critique_answer.py
- /rag/functions/file_processor.py
- /rag/functions/check_consistency.py
- /rag/functions/summarize_document.py
- /rag/functions/rerank_context.py
- /rag/functions/intent_classify.py
- /rag/utils/__init__.py
- /rag/utils/layout_converter.py
- /rag/utils/text_utils.py
- /rag/utils/arg_parser.py
- /rag/utils/config_loader.py
- /rag/utils/logger.py
- /rag/utils/web_utils.py
2026-06-30 10:33:28 +00:00

66 lines
2.7 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.
# -*- coding: utf-8 -*-
"""
Модуль проверки противоречий между несколькими фрагментами текста.
Анализирует логические, числовые и терминологические расхождения.
АДАПТАЦИЯ: теперь функция принимает промпт как аргумент.
"""
import logging
from typing import List
from core.services.giga_client import GigaClient
logger = logging.getLogger(__name__)
async def check_consistency(
giga: GigaClient,
chunks: List[str],
query: str,
prompt_text: str,
bot_config,
) -> str:
"""
Проверяет, есть ли противоречия между переданными фрагментами.
Аргументы:
giga (GigaClient): клиент GigaChat
chunks (List[str]): список текстовых фрагментов (минимум 2)
query (str): исходный вопрос пользователя
prompt_text (str): содержимое промпта проверки согласованности
bot_config (BotConfig): объект конфигурации
Возвращает:
str: "[OK]" или "[CONFLICT] ..." с описанием
"""
if len(chunks) < 2:
return "Недостаточно фрагментов для проверки (нужно минимум 2)."
if not prompt_text:
logger.warning("Промпт проверки согласованности не загружен")
return "Промпт проверки согласованности не загружен."
cons_cfg = getattr(bot_config, 'consistency', {})
temperature = cons_cfg.get('temperature', 0.1)
max_fragments = cons_cfg.get('max_fragments', 5)
if len(chunks) > max_fragments:
logger.debug(f"Ограничиваем количество фрагментов с {len(chunks)} до {max_fragments}")
chunks = chunks[:max_fragments]
combined = "\n\n---\n\n".join(
[f"Фрагмент {i+1}:\n{chunk}" for i, chunk in enumerate(chunks)]
)
full_prompt = f"{prompt_text}\n\nЗапрос: {query}\n\nФрагменты:\n{combined}"
try:
response = await giga.chat(
history=[],
query=full_prompt,
system_prompt=None,
file_id=None,
temperature=temperature
)
return response.strip()
except Exception as e:
logger.error(f"Ошибка проверки согласованности: {e}", exc_info=True)
return "Ошибка при проверке противоречий."