Source code for psifx.text.chat.command
"""chatbot command-line interface."""
import argparse
from psifx.text.llm.tool import LLMTool
from psifx.utils.command import Command
from psifx.text.chat.tool import ChatTool
from psifx.text.llm.command import add_llm_argument, format_llm_namespace
from pathlib import Path
[docs]
class ChatCommand(Command):
"""
Command-line interface for a chatbot
"""
[docs]
@staticmethod
def setup(parser: argparse.ArgumentParser):
"""
Sets up the command.
:param parser: The argument parser.
:return:
"""
parser.add_argument(
"--overwrite",
default=False,
action=argparse.BooleanOptionalAction,
help="overwrite existing files, otherwise raises an error",
)
parser.add_argument(
"--verbose",
default=True,
action=argparse.BooleanOptionalAction,
help="verbosity of the script",
)
parser.add_argument(
'--prompt',
type=str,
default="",
help='prompt or path to a .txt file containing the prompt')
parser.add_argument(
'--output',
type=Path,
default=None,
help='path to a .txt save file')
add_llm_argument(parser)
[docs]
@staticmethod
def execute(parser: argparse.ArgumentParser, args: argparse.Namespace):
"""
Executes the command.
:param parser: The argument parser.
:param args: The arguments.
:return:
"""
llm_tool = LLMTool(overwrite=args.overwrite,
verbose=args.verbose)
llm_args = format_llm_namespace(args)
llm = llm_tool.instantiate_llm(**vars(llm_args))
ChatTool(
llm=llm,
overwrite=args.overwrite,
verbose=args.verbose
).chat(
prompt=args.prompt,
save_path=args.output)