From a62af90d761faf9410a14415f4a417f2b78e1a69 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9A=D0=B8=D1=80=D0=B8=D0=BB=D0=BB=20=D0=A0=D0=BE=D0=BC?= =?UTF-8?q?=D0=B0=D0=BD=D0=BE=D0=B2?= Date: Wed, 3 Jun 2026 09:25:31 +0000 Subject: [PATCH] Add cli.py --- cli.py | 68 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 68 insertions(+) create mode 100644 cli.py diff --git a/cli.py b/cli.py new file mode 100644 index 0000000..9324068 --- /dev/null +++ b/cli.py @@ -0,0 +1,68 @@ +"""Simple CLI for interacting with the RAG agent. + +Commands: + /add <file_path> - Add a document to the knowledge base. + /search <query> [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 <title> <file_path> - Add a document to the knowledge base.\n /search <query> [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 <title> <file_path>") + 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 <query> [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()