fix: align with accepted structure (main.py)
This commit is contained in:
@@ -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__":
|
||||||
|
|||||||
Reference in New Issue
Block a user