54 lines
1.9 KiB
Python
54 lines
1.9 KiB
Python
import os
|
|
from rich.console import Console
|
|
|
|
# Импортируем необходимые модули, которые реализованы в отдельных файлах
|
|
from vector_store import get_vector_store
|
|
from agent import RAGAgent
|
|
from init_knowledge_base import init_kb
|
|
|
|
console = Console()
|
|
|
|
# Конфигурация окружения
|
|
QDRANT_HOST = os.getenv("QDRANT_HOST", "localhost")
|
|
QDRANT_PORT = int(os.getenv("QDRANT_PORT", 6333))
|
|
OPENAI_API_KEY = os.getenv("OPENAI_API_KEY")
|
|
if not OPENAI_API_KEY:
|
|
raise RuntimeError("Не задана переменная окружения OPENAI_API_KEY")
|
|
|
|
# Инициализация векторного хранилища
|
|
vector_store = get_vector_store(
|
|
host=QDRANT_HOST,
|
|
port=QDRANT_PORT,
|
|
api_key=OPENAI_API_KEY,
|
|
)
|
|
|
|
# При необходимости загружаем начальные документы
|
|
init_kb(vector_store)
|
|
|
|
# Создаём агента RAG, передавая ему векторное хранилище и ключ OpenAI
|
|
agent = RAGAgent(
|
|
vector_store=vector_store,
|
|
openai_api_key=OPENAI_API_KEY,
|
|
)
|
|
|
|
def main() -> None:
|
|
"""
|
|
Интерактивный цикл: пользователь вводит вопрос, агент отвечает.
|
|
Ввод 'exit' или 'quit' завершает программу.
|
|
"""
|
|
console.print("[bold green]Запуск интерактивного режима. Введите 'exit' для выхода.[/]")
|
|
while True:
|
|
question = input("Вопрос: ")
|
|
if question.lower() in ("exit", "quit"):
|
|
break
|
|
try:
|
|
answer, sources = agent.ask(question)
|
|
console.print(f"[blue]Ответ:[/]\n{answer}")
|
|
console.print("[yellow]Источники:[/]")
|
|
for src in sources:
|
|
console.print(f"- {src}")
|
|
except Exception as e:
|
|
console.print_exception()
|
|
|
|
if __name__ == "__main__":
|
|
main() |