import argparse from pathlib import Path from ..configuration import Config from ..chat import ChatDB from ..message import Message, Question from ..ai_factory import create_ai from ..ai import AI, AIResponse def question_cmd(args: argparse.Namespace, config: Config) -> None: """ Handler for the 'question' command. """ chat = ChatDB.from_dir(cache_path=Path('.'), db_path=Path(config.db)) # if it's a new question, create and store it immediately if args.ask or args.create: # FIXME: add sources to the question message = Message(question=Question(args.question), tags=args.ouput_tags, # FIXME ai=args.ai, model=args.model) chat.add_to_cache([message]) if args.create: return # create the correct AI instance ai: AI = create_ai(args, config) if args.ask: response: AIResponse = ai.request(message, chat, args.num_answers, # FIXME args.otags) # FIXME assert response # TODO: # * add answer to the message above (and create # more messages for any additional answers) pass elif args.repeat: lmessage = chat.latest_message() assert lmessage # TODO: repeat either the last question or the # one(s) given in 'args.repeat' (overwrite # existing ones if 'args.overwrite' is True) pass elif args.process: # TODO: process either all questions without an # answer or the one(s) given in 'args.process' pass