File size: 1,465 Bytes
8cbfc52
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
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
50
51
52
53
54
"""Simple command-line client for testing the API."""

from __future__ import annotations

import argparse
import os
import sys

import requests

DEFAULT_ENDPOINT = "http://127.0.0.1:8000"


def ask(endpoint: str, question: str) -> dict:
    r = requests.post(f"{endpoint}/query", json={"question": question}, timeout=120)
    r.raise_for_status()
    return r.json()


def main():
    parser = argparse.ArgumentParser()
    parser.add_argument("--endpoint", default=DEFAULT_ENDPOINT)
    parser.add_argument("--question", default=None)
    args = parser.parse_args()

    if args.question:
        questions = [args.question]
    else:
        questions = [
            "ما حكم أكل الضفدع؟",
            "كيف أصوم يوم عاشوراء؟",
            "هل يجوز أخذ أجر على تحصيل الفواتير؟",
        ]

    for q in questions:
        try:
            res = ask(args.endpoint, q)
            print("\n" + "=" * 80)
            print("Question:", res["question_original"])
            print("Topic   :", res["topic"])
            print("Mode    :", res["mode"])
            print("Conf    :", res["confidence"])
            print("Answer  :")
            print(res["answer"])
            print("Sources :")
            for s in res["sources"]:
                print(f"  - [{s['score']:.3f}] {s['question']}")
        except Exception as exc:
            print("Error:", exc)


if __name__ == "__main__":
    main()