feat: solution for 'Повторный экзамен: FAQ-бот — ChromaDB + один MCP-tool'
This commit is contained in:
@@ -0,0 +1,41 @@
|
||||
import argparse
|
||||
import sys
|
||||
from src.vector_store_utils import load_faq_to_chroma
|
||||
from src.langchain_agent import create_agent
|
||||
|
||||
def run_preset_questions(preset: str, agent):
|
||||
questions = [q.strip() for q in preset.split(",") if q.strip()]
|
||||
for q in questions:
|
||||
print(f"\nQuestion: {q}")
|
||||
answer = agent.run(q)
|
||||
print(f"Answer:\n{answer}")
|
||||
|
||||
def interactive_mode(agent):
|
||||
print("Enter your question (type 'exit' to quit):")
|
||||
while True:
|
||||
q = input("> ")
|
||||
if q.lower() in ("exit", "quit"):
|
||||
break
|
||||
answer = agent.run(q)
|
||||
print(f"Answer:\n{answer}")
|
||||
|
||||
def main():
|
||||
parser = argparse.ArgumentParser(description="FAQ Bot CLI")
|
||||
parser.add_argument("--preset", type=str, help="Comma‑separated preset questions")
|
||||
parser.add_argument("--interactive", action="store_true", help="Interactive mode")
|
||||
args = parser.parse_args()
|
||||
|
||||
# Load vector store
|
||||
collection = load_faq_to_chroma()
|
||||
agent = create_agent(collection)
|
||||
|
||||
if args.preset:
|
||||
run_preset_questions(args.preset, agent)
|
||||
elif args.interactive:
|
||||
interactive_mode(agent)
|
||||
else:
|
||||
print("No mode selected. Use --preset or --interactive.")
|
||||
sys.exit(1)
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
Reference in New Issue
Block a user