"""Simple CLI for interacting with the RAG agent.
Commands:
/add
- Add a document to the knowledge base.
/search [max] - Search the knowledge base.
/quit - Exit the CLI.
"""
import sys
from pathlib import Path
# Import the tools directly. They are decorated with @tool but can be called like normal functions.
from rag_tools import add_to_knowledge_base, search_knowledge_base
def main():
print("Welcome to the RAG Agent CLI. Type /help for commands.")
while True:
try:
user_input = input(">> ")
except (EOFError, KeyboardInterrupt):
print("\nExiting.")
break
if not user_input:
continue
if user_input.startswith("/help"):
print("Commands:\n /add - Add a document to the knowledge base.\n /search [max] - Search the knowledge base.\n /quit - Exit the CLI.")
continue
if user_input.startswith("/quit"):
print("Goodbye!")
break
if user_input.startswith("/add"):
parts = user_input.split(maxsplit=2)
if len(parts) < 3:
print("Usage: /add ")
continue
title, file_path = parts[1], parts[2]
try:
content = Path(file_path).read_text(encoding="utf-8")
except Exception as e:
print(f"Error reading file: {e}")
continue
print("Adding document...", end=" ")
result = add_to_knowledge_base(content=content, title=title)
print(result)
continue
if user_input.startswith("/search"):
parts = user_input.split(maxsplit=2)
if len(parts) < 2:
print("Usage: /search [max_results]")
continue
query = parts[1]
max_results = 5
if len(parts) == 3:
try:
max_results = int(parts[2])
except ValueError:
print("max_results must be an integer.")
continue
print("Searching...", end=" ")
result = search_knowledge_base(query=query, max_results=max_results)
print(result)
continue
print("Unknown command. Type /help for a list of commands.")
if __name__ == "__main__":
main()