fix: align with accepted structure (main.py)

This commit is contained in:
2026-05-27 12:28:31 +00:00
parent 00e3b2f551
commit 9463c7fc88
+23 -33
View File
@@ -1,49 +1,39 @@
"""Интерактивный RAG-агент (Qdrant + Ollama + LangChain).""" """Интерактивный RAG-агент (Qdrant + Ollama + LangChain)."""
from __future__ import annotations from __future__ import annotations
import os try:
from agent_app import build_agent, build_llm
from knowledge_base import build_knowledge_base
from rag_tools import add_to_knowledge_base, get_knowledge_base, search_knowledge_base
except ModuleNotFoundError:
from .agent_app import build_agent, build_llm
from .knowledge_base import build_knowledge_base
from .rag_tools import add_to_knowledge_base, get_knowledge_base, search_knowledge_base
from langchain.agents import create_agent __all__ = [
from langchain_ollama import ChatOllama "build_agent",
"build_llm",
from rag_tools import add_to_knowledge_base, search_knowledge_base "build_knowledge_base",
"get_knowledge_base",
LLM_MODEL = os.getenv("OLLAMA_LLM_MODEL", "llama3") "search_knowledge_base",
OLLAMA_BASE_URL = os.getenv("OLLAMA_BASE_URL", "http://localhost:11434") "add_to_knowledge_base",
"run_interactive_cli",
SYSTEM_PROMPT = """\ ]
Ты ассистент с доступом к базе знаний.
Перед ответом на фактические вопросы используй search_knowledge_base.
Если пользователь просит сохранить информацию — вызывай add_to_knowledge_base.
Отвечай на русском, кратко и по существу.
"""
def build_agent():
llm = ChatOllama(
model=LLM_MODEL,
base_url=OLLAMA_BASE_URL,
temperature=0.2,
)
return create_agent(
model=llm,
tools=[search_knowledge_base, add_to_knowledge_base],
system_prompt=SYSTEM_PROMPT,
)
def run_interactive_cli() -> None: def run_interactive_cli() -> None:
agent = build_agent() agent = build_agent()
print("RAG-агент. Команды: /add, /search, /quit") print("RAG-агент (Qdrant + Ollama). Команды: /add, /search, /quit")
print(" /add <заголовок> | <текст>") print(" /add <заголовок> | <текст>")
print(" /search <запрос>") print(" /search <запрос>")
print(" или задайте вопрос агенту\n")
while True: while True:
user_input = input("\n> ").strip() user_input = input("Вы: ").strip()
if not user_input: if not user_input:
continue continue
if user_input == "/quit": if user_input.lower() in ("/quit", "exit", "quit", "q"):
print("Выход.") print("До встречи!")
break break
if user_input.startswith("/search "): if user_input.startswith("/search "):
@@ -64,7 +54,7 @@ def run_interactive_cli() -> None:
{"messages": [{"role": "human", "content": user_input}]} {"messages": [{"role": "human", "content": user_input}]}
) )
answer = result["messages"][-1] answer = result["messages"][-1]
print(getattr(answer, "content", answer)) print(f"\nАгент: {getattr(answer, 'content', answer)}\n")
if __name__ == "__main__": if __name__ == "__main__":