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
This commit is contained in:
Markov Andrey
2026-06-30 10:33:28 +00:00
parent ea0d42de9c
commit 63900feece
45 changed files with 0 additions and 265 deletions

View File

@@ -0,0 +1,66 @@
# -*- 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 "Ошибка при проверке противоречий."