diff --git a/cli.py b/cli.py
index 9324068..9bfc72a 100644
--- a/cli.py
+++ b/cli.py
@@ -1,68 +1,49 @@
-"""Simple CLI for interacting with the RAG agent.
+"""Simple interactive CLI for the RAG agent.
Commands:
- /add
- Add a document to the knowledge base.
- /search [max] - Search the knowledge base.
- /quit - Exit the CLI.
+ /add title content – add a document to the knowledge base.
+ /search query – perform a semantic search.
+ /quit – exit.
+ any other text – will be sent to the agent for normal answering.
"""
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
+from .agent import create_agent_executor
+agent = create_agent_executor()
-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:
+print("RAG Agent CLI. Type /quit to exit.")
+while True:
+ try:
+ user_input = input(">>> ")
+ except EOFError:
+ break
+ if not user_input:
+ continue
+ if user_input.lower() == "/quit":
+ print("Goodbye!")
+ break
+ if user_input.startswith("/add "):
+ # Expected format: /add title content
+ parts = user_input.split(" ", 2)
+ if len(parts) < 3:
+ print("Usage: /add title content")
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.")
-
+ title, content = parts[1], parts[2]
+ # Directly call the tool via the agent
+ result = agent.run({"input": f"Add document: {title} – {content}"})
+ print(result)
+ continue
+ if user_input.startswith("/search "):
+ query = user_input[8:].strip()
+ result = agent.run({"input": f"Search for: {query}"})
+ print(result)
+ continue
+ # Normal conversation
+ result = agent.run({"input": user_input})
+ print(result)
if __name__ == "__main__":
- main()
+ # The CLI is already running in the main thread
+ pass
\ No newline at end of file