Skip to content

CLI

Command-line interface (CLI) entry point for RAG-based chatbot and evaluation tool.

chat_command(args)

Execute the chat command with parsed CLI arguments.

Parameters:

Name Type Description Default
args Namespace

Parsed argparse namespace containing chat config.

required
Source code in ragbot\cli.py
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
def chat_command(args: argparse.Namespace):
    """Execute the chat command with parsed CLI arguments.

    Args:
        args: Parsed argparse namespace containing chat config.
    """
    chat(
        project_name=args.proj,
        llm_provider=args.llm_provider,
        llm=args.llm,
        llm_temperature=args.temperature,
        llm_top_p=args.top_p,
        llm_top_k=args.top_k,
        embeddings_provider=args.emb_provider,
        embedding_model=args.emb_model,
        chunk_size=args.chunk_size,
        chunk_overlap=args.chunk_overlap,
        search_type=args.search_type,
        k_docs=args.k,
    )

evaluate_command(args)

Execute the evaluate command with parsed CLI arguments.

Parameters:

Name Type Description Default
args Namespace

Parsed argparse namespace containing evaluation config.

required
Source code in ragbot\cli.py
 95
 96
 97
 98
 99
100
101
102
103
104
105
def evaluate_command(args: argparse.Namespace):
    """Execute the evaluate command with parsed CLI arguments.

    Args:
        args: Parsed argparse namespace containing evaluation config.
    """
    evaluate(
        project_name=args.proj,
        config_path=args.config_path,
        dataset_name=args.dataset_name,
    )

main()

Main CLI entry point.

Parses command-line arguments and invokes the corresponding function for either chat or evaluation mode.

Source code in ragbot\cli.py
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
def main():
    """Main CLI entry point.

    Parses command-line arguments and invokes the corresponding function for either
    chat or evaluation mode.
    """
    parser = ArgumentParser(
        prog="poetry run python -m ragbot.cli",
        description=":::A RAG-powered chatbot CLI tool:::",
        usage="poetry run python -m ragbot.cli [-h] <command>",
        formatter_class=argparse.ArgumentDefaultsHelpFormatter,
        epilog="Use `ragbot.cli <command> --help` for more information on a command.",
    )
    subparsers = parser.add_subparsers(title="commands", dest="command", required=True)

    # Subcommand: chat
    chat_parser = subparsers.add_parser(
        "chat",
        help="Run the chat interface",
        usage="poetry run python -m ragbot.cli chat -p <project> [options]",
        formatter_class=argparse.MetavarTypeHelpFormatter,
    )
    parse_chat_args(chat_parser)

    # Subcommand: evaluate
    eval_parser = subparsers.add_parser(
        "evaluate",
        help="Evaluate using a config file",
        usage="poetry run python -m ragbot.cli evaluate -p <project> [options]",
        formatter_class=argparse.MetavarTypeHelpFormatter,
    )
    parse_evaluate_args(eval_parser)

    args = parser.parse_args()
    use_langsmith(args.proj)

    try:
        args.func(args)
    except Exception as e:
        print(f"[ERROR] {e}")
        exit(1)

parse_chat_args(subparser)

Add command-line arguments for the 'chat' subcommand.

Parameters:

Name Type Description Default
subparser ArgumentParser

A subparser object from argparse to attach the chat arguments to.

required
Source code in ragbot\cli.py
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
def parse_chat_args(subparser: argparse.ArgumentParser):
    """Add command-line arguments for the 'chat' subcommand.

    Args:
        subparser: A subparser object from argparse to attach the chat arguments to.
    """
    subparser.add_argument(
        "-p", "--proj", type=str, required=True, help="Name of the project"
    )
    subparser.add_argument(
        "--llm-provider", type=str, default="google", help="LLM provider"
    )
    subparser.add_argument(
        "--llm", type=str, default="gemini-1.5-flash", help="LLM model"
    )
    subparser.add_argument(
        "--temperature", type=float, default=0.0, help="LLM temperature"
    )
    subparser.add_argument("--top-p", type=float, default=0.85, help="LLM top-p")
    subparser.add_argument("--top-k", type=int, default=40, help="LLM top-k")
    subparser.add_argument(
        "--emb-provider", type=str, default="google", help="Embeddings provider"
    )
    subparser.add_argument(
        "--emb-model", type=str, default="models/embedding-001", help="Embeddings model"
    )
    subparser.add_argument(
        "--chunk-size", type=int, default=3000, help="Text splitter chunk size"
    )
    subparser.add_argument(
        "--chunk-overlap", type=int, default=600, help="Text splitter chunk overlap"
    )
    subparser.add_argument(
        "--search-type", type=str, default="similarity", help="Retrieval search type"
    )
    subparser.add_argument(
        "--k", type=int, default=4, help="Number of documents to retrieve"
    )
    subparser.set_defaults(func=chat_command)

parse_evaluate_args(subparser)

Add command-line arguments for the 'evaluate' subcommand.

Parameters:

Name Type Description Default
subparser ArgumentParser

A subparser object from argparse to attach the evaluate arguments to.

required
Source code in ragbot\cli.py
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
def parse_evaluate_args(subparser: argparse.ArgumentParser):
    """Add command-line arguments for the 'evaluate' subcommand.

    Args:
        subparser: A subparser object from argparse to attach the evaluate arguments to.
    """
    subparser.add_argument(
        "-p", "--proj", type=str, required=True, help="Name of the project"
    )
    subparser.add_argument(
        "--config-path",
        type=str,
        default="configs/default.json",
        help="Path to config file",
    )
    subparser.add_argument(
        "--dataset-name", type=str, default="ds-test", help="Name of the dataset"
    )
    subparser.set_defaults(func=evaluate_command)