Imports:
  - Types:
      - MCPTool
    From: sententia/endpoints
  - Types:
      - Index
    From: sententia/index
  - Types:
      - OpenaiProvider
      - AnthropicProvider
    Usages:
      - llm_generating
    From: sententia/llm
  - Usages:
      - asking
    From: sententia/rag

Usages:
  conventions: .goga/usages/conventions.md
  pydantic: .goga/usages/cooks/pydantic.md
  hexagonal: .goga/usages/cooks/hexagonal.md

Annotations: |
  Использовать `conventions` для правил написания кода и тестов.

  MCP tool для вопрос-ответ с RAG.
  Использовать практику `hexagonal` для понимания роли адаптера.
  Использовать практику `asking` для выполнения RAG pipeline.
  Использовать практику `llm_generating` для понимания работы с LLM-провайдерами.

---

"AskToolResult()":
  location: models.py
  annotations: |
    Модель результата ask для MCP tool.
    Использовать `pydantic` для реализации (conventions: kw_only=True, дефолты).
  properties:
    answer -> str: |
      Сгенерированный ответ. Значение по умолчанию — пустая строка.
    sources -> list: |
      Список файлов-источников. Значение по умолчанию — пустой список.

"MCPTool::AskTool(index: Index, llm_provider: OpenaiProvider | AnthropicProvider, top: int = 10)":
  location: ask.py
  annotations: |
    MCP tool для вопрос-ответ с RAG.

    `index`: экземпляр `Index`.
    `llm_provider`: LLM-провайдер (`OpenaiProvider` или `AnthropicProvider`).
    `top`: количество чанков для контекста. По умолчанию 10.

    Использовать практику `asking` для выполнения RAG pipeline.
    Использовать практику `hexagonal` для понимания роли адаптера.
  properties:
    name -> str: |
      "ask"
    description -> str: |
      "Ask a question and get an answer based on indexed documents"
  methods:
    "execute(query: str) -> result:AskToolResult": |
      Вопрос-ответ с RAG.

      `query`: текст вопроса.
      `result`: `AskToolResult` с полями answer и sources.

      Использовать практику `asking` для выполнения RAG pipeline.

---

Author: Goga
CreatedAt: 16/05/26
Description: |
  MCP tool вопроса — ask.
