Update cli.py
This commit is contained in:
@@ -1,68 +1,49 @@
|
|||||||
"""Simple CLI for interacting with the RAG agent.
|
"""Simple interactive CLI for the RAG agent.
|
||||||
|
|
||||||
Commands:
|
Commands:
|
||||||
/add <title> <file_path> - Add a document to the knowledge base.
|
/add title content – add a document to the knowledge base.
|
||||||
/search <query> [max] - Search the knowledge base.
|
/search query – perform a semantic search.
|
||||||
/quit - Exit the CLI.
|
/quit – exit.
|
||||||
|
any other text – will be sent to the agent for normal answering.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
import sys
|
import sys
|
||||||
from pathlib import Path
|
|
||||||
|
|
||||||
# Import the tools directly. They are decorated with @tool but can be called like normal functions.
|
from .agent import create_agent_executor
|
||||||
from rag_tools import add_to_knowledge_base, search_knowledge_base
|
|
||||||
|
|
||||||
|
agent = create_agent_executor()
|
||||||
|
|
||||||
def main():
|
print("RAG Agent CLI. Type /quit to exit.")
|
||||||
print("Welcome to the RAG Agent CLI. Type /help for commands.")
|
while True:
|
||||||
while True:
|
|
||||||
try:
|
try:
|
||||||
user_input = input(">> ")
|
user_input = input(">>> ")
|
||||||
except (EOFError, KeyboardInterrupt):
|
except EOFError:
|
||||||
print("\nExiting.")
|
|
||||||
break
|
break
|
||||||
if not user_input:
|
if not user_input:
|
||||||
continue
|
continue
|
||||||
if user_input.startswith("/help"):
|
if user_input.lower() == "/quit":
|
||||||
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!")
|
print("Goodbye!")
|
||||||
break
|
break
|
||||||
if user_input.startswith("/add"):
|
if user_input.startswith("/add "):
|
||||||
parts = user_input.split(maxsplit=2)
|
# Expected format: /add title content
|
||||||
|
parts = user_input.split(" ", 2)
|
||||||
if len(parts) < 3:
|
if len(parts) < 3:
|
||||||
print("Usage: /add <title> <file_path>")
|
print("Usage: /add title content")
|
||||||
continue
|
continue
|
||||||
title, file_path = parts[1], parts[2]
|
title, content = parts[1], parts[2]
|
||||||
try:
|
# Directly call the tool via the agent
|
||||||
content = Path(file_path).read_text(encoding="utf-8")
|
result = agent.run({"input": f"Add document: {title} – {content}"})
|
||||||
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)
|
print(result)
|
||||||
continue
|
continue
|
||||||
if user_input.startswith("/search"):
|
if user_input.startswith("/search "):
|
||||||
parts = user_input.split(maxsplit=2)
|
query = user_input[8:].strip()
|
||||||
if len(parts) < 2:
|
result = agent.run({"input": f"Search for: {query}"})
|
||||||
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)
|
print(result)
|
||||||
continue
|
continue
|
||||||
print("Unknown command. Type /help for a list of commands.")
|
# Normal conversation
|
||||||
|
result = agent.run({"input": user_input})
|
||||||
|
print(result)
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
main()
|
# The CLI is already running in the main thread
|
||||||
|
pass
|
||||||
Reference in New Issue
Block a user