Spaces:
Sleeping
Sleeping
Worked on passage finder
Browse files- Pipfile +2 -0
- Pipfile.lock +563 -347
- app2.py +187 -0
- prompts/quote_finder_prompts.py +28 -0
- src/passage_finder.py +236 -0
- src/utils/qdrant_manager.py +2 -1
Pipfile
CHANGED
@@ -15,6 +15,8 @@ jupyter = "*"
|
|
15 |
ipykernel = "*"
|
16 |
langgraph = "*"
|
17 |
streamlit = "*"
|
|
|
|
|
18 |
|
19 |
[dev-packages]
|
20 |
|
|
|
15 |
ipykernel = "*"
|
16 |
langgraph = "*"
|
17 |
streamlit = "*"
|
18 |
+
fuzzywuzzy = "*"
|
19 |
+
python-levenshtein = "*"
|
20 |
|
21 |
[dev-packages]
|
22 |
|
Pipfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1 |
{
|
2 |
"_meta": {
|
3 |
"hash": {
|
4 |
-
"sha256": "
|
5 |
},
|
6 |
"pipfile-spec": 6,
|
7 |
"requires": {
|
@@ -26,108 +26,108 @@
|
|
26 |
},
|
27 |
"aiohappyeyeballs": {
|
28 |
"hashes": [
|
29 |
-
"sha256:
|
30 |
-
"sha256:
|
31 |
],
|
32 |
"markers": "python_version >= '3.8'",
|
33 |
-
"version": "==2.4.
|
34 |
},
|
35 |
"aiohttp": {
|
36 |
"hashes": [
|
37 |
-
"sha256:
|
38 |
-
"sha256:
|
39 |
-
"sha256:
|
40 |
-
"sha256:
|
41 |
-
"sha256:
|
42 |
-
"sha256:
|
43 |
-
"sha256:
|
44 |
-
"sha256:
|
45 |
-
"sha256:
|
46 |
-
"sha256:
|
47 |
-
"sha256:
|
48 |
-
"sha256:
|
49 |
-
"sha256:
|
50 |
-
"sha256:
|
51 |
-
"sha256:
|
52 |
-
"sha256:
|
53 |
-
"sha256:
|
54 |
-
"sha256:
|
55 |
-
"sha256:
|
56 |
-
"sha256:
|
57 |
-
"sha256:
|
58 |
-
"sha256:
|
59 |
-
"sha256:
|
60 |
-
"sha256:
|
61 |
-
"sha256:
|
62 |
-
"sha256:
|
63 |
-
"sha256:
|
64 |
-
"sha256:
|
65 |
-
"sha256:
|
66 |
-
"sha256:
|
67 |
-
"sha256:
|
68 |
-
"sha256:
|
69 |
-
"sha256:
|
70 |
-
"sha256:
|
71 |
-
"sha256:
|
72 |
-
"sha256:
|
73 |
-
"sha256:
|
74 |
-
"sha256:
|
75 |
-
"sha256:
|
76 |
-
"sha256:
|
77 |
-
"sha256:
|
78 |
-
"sha256:
|
79 |
-
"sha256:
|
80 |
-
"sha256:
|
81 |
-
"sha256:
|
82 |
-
"sha256:
|
83 |
-
"sha256:
|
84 |
-
"sha256:
|
85 |
-
"sha256:
|
86 |
-
"sha256:
|
87 |
-
"sha256:
|
88 |
-
"sha256:
|
89 |
-
"sha256:
|
90 |
-
"sha256:
|
91 |
-
"sha256:
|
92 |
-
"sha256:
|
93 |
-
"sha256:
|
94 |
-
"sha256:
|
95 |
-
"sha256:
|
96 |
-
"sha256:
|
97 |
-
"sha256:
|
98 |
-
"sha256:
|
99 |
-
"sha256:
|
100 |
-
"sha256:
|
101 |
-
"sha256:
|
102 |
-
"sha256:
|
103 |
-
"sha256:
|
104 |
-
"sha256:
|
105 |
-
"sha256:
|
106 |
-
"sha256:
|
107 |
-
"sha256:
|
108 |
-
"sha256:
|
109 |
-
"sha256:
|
110 |
-
"sha256:
|
111 |
-
"sha256:
|
112 |
-
"sha256:
|
113 |
-
"sha256:
|
114 |
-
"sha256:
|
115 |
-
"sha256:
|
116 |
-
"sha256:
|
117 |
-
"sha256:
|
118 |
-
"sha256:
|
119 |
-
"sha256:
|
120 |
-
"sha256:
|
121 |
-
"sha256:
|
122 |
-
"sha256:
|
123 |
-
"sha256:
|
124 |
-
"sha256:
|
125 |
-
"sha256:
|
126 |
-
"sha256:
|
127 |
-
"sha256:
|
128 |
-
],
|
129 |
-
"markers": "python_version >= '3.8'",
|
130 |
-
"version": "==3.10.
|
131 |
},
|
132 |
"aiosignal": {
|
133 |
"hashes": [
|
@@ -790,6 +790,14 @@
|
|
790 |
"markers": "python_version >= '3.8'",
|
791 |
"version": "==2024.9.0"
|
792 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
793 |
"gitdb": {
|
794 |
"hashes": [
|
795 |
"sha256:81a3407ddd2ee8df444cbacea00e2d038e40150acfa3001696fe0dcf1d3adfa4",
|
@@ -808,12 +816,12 @@
|
|
808 |
},
|
809 |
"gradio": {
|
810 |
"hashes": [
|
811 |
-
"sha256:
|
812 |
-
"sha256:
|
813 |
],
|
814 |
"index": "pypi",
|
815 |
"markers": "python_version >= '3.8'",
|
816 |
-
"version": "==4.44.
|
817 |
},
|
818 |
"gradio-client": {
|
819 |
"hashes": [
|
@@ -904,107 +912,125 @@
|
|
904 |
},
|
905 |
"grpcio": {
|
906 |
"hashes": [
|
907 |
-
"sha256:
|
908 |
-
"sha256:
|
909 |
-
"sha256:
|
910 |
-
"sha256:
|
911 |
-
"sha256:
|
912 |
-
"sha256:
|
913 |
-
"sha256:
|
914 |
-
"sha256:
|
915 |
-
"sha256:
|
916 |
-
"sha256:
|
917 |
-
"sha256:
|
918 |
-
"sha256:
|
919 |
-
"sha256:
|
920 |
-
"sha256:
|
921 |
-
"sha256:
|
922 |
-
"sha256:
|
923 |
-
"sha256:
|
924 |
-
"sha256:
|
925 |
-
"sha256:
|
926 |
-
"sha256:
|
927 |
-
"sha256:
|
928 |
-
"sha256:
|
929 |
-
"sha256:
|
930 |
-
"sha256:
|
931 |
-
"sha256:
|
932 |
-
"sha256:
|
933 |
-
"sha256:
|
934 |
-
"sha256:
|
935 |
-
"sha256:
|
936 |
-
"sha256:
|
937 |
-
"sha256:
|
938 |
-
"sha256:
|
939 |
-
"sha256:
|
940 |
-
"sha256:
|
941 |
-
"sha256:
|
942 |
-
"sha256:
|
943 |
-
"sha256:
|
944 |
-
"sha256:
|
945 |
-
"sha256:
|
946 |
-
"sha256:
|
947 |
-
"sha256:
|
948 |
-
"sha256:
|
949 |
-
"sha256:
|
950 |
-
"sha256:
|
951 |
-
"sha256:
|
952 |
-
"sha256:
|
953 |
-
|
954 |
-
|
955 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
956 |
},
|
957 |
"grpcio-tools": {
|
958 |
"hashes": [
|
959 |
-
"sha256:
|
960 |
-
"sha256:
|
961 |
-
"sha256:
|
962 |
-
"sha256:
|
963 |
-
"sha256:
|
964 |
-
"sha256:
|
965 |
-
"sha256:
|
966 |
-
"sha256:
|
967 |
-
"sha256:
|
968 |
-
"sha256:
|
969 |
-
"sha256:
|
970 |
-
"sha256:
|
971 |
-
"sha256:
|
972 |
-
"sha256:
|
973 |
-
"sha256:
|
974 |
-
"sha256:
|
975 |
-
"sha256:
|
976 |
-
"sha256:
|
977 |
-
"sha256:
|
978 |
-
"sha256:
|
979 |
-
"sha256:
|
980 |
-
"sha256:
|
981 |
-
"sha256:
|
982 |
-
"sha256:
|
983 |
-
"sha256:
|
984 |
-
"sha256:
|
985 |
-
"sha256:
|
986 |
-
"sha256:
|
987 |
-
"sha256:
|
988 |
-
"sha256:
|
989 |
-
"sha256:
|
990 |
-
"sha256:
|
991 |
-
"sha256:
|
992 |
-
"sha256:
|
993 |
-
"sha256:
|
994 |
-
"sha256:
|
995 |
-
"sha256:
|
996 |
-
"sha256:
|
997 |
-
"sha256:
|
998 |
-
"sha256:
|
999 |
-
"sha256:
|
1000 |
-
"sha256:
|
1001 |
-
"sha256:
|
1002 |
-
"sha256:
|
1003 |
-
"sha256:
|
1004 |
-
"sha256:
|
1005 |
-
|
1006 |
-
|
1007 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1008 |
},
|
1009 |
"h11": {
|
1010 |
"hashes": [
|
@@ -1456,29 +1482,29 @@
|
|
1456 |
},
|
1457 |
"langchain": {
|
1458 |
"hashes": [
|
1459 |
-
"sha256:
|
1460 |
-
"sha256:
|
1461 |
],
|
1462 |
"index": "pypi",
|
1463 |
"markers": "python_version >= '3.9' and python_version < '4.0'",
|
1464 |
-
"version": "==0.3.
|
1465 |
},
|
1466 |
"langchain-core": {
|
1467 |
"hashes": [
|
1468 |
-
"sha256:
|
1469 |
-
"sha256:
|
1470 |
],
|
1471 |
"markers": "python_version >= '3.9' and python_version < '4.0'",
|
1472 |
-
"version": "==0.3.
|
1473 |
},
|
1474 |
"langchain-openai": {
|
1475 |
"hashes": [
|
1476 |
-
"sha256:
|
1477 |
-
"sha256:
|
1478 |
],
|
1479 |
"index": "pypi",
|
1480 |
"markers": "python_version >= '3.9' and python_version < '4.0'",
|
1481 |
-
"version": "==0.2.
|
1482 |
},
|
1483 |
"langchain-qdrant": {
|
1484 |
"hashes": [
|
@@ -1499,28 +1525,115 @@
|
|
1499 |
},
|
1500 |
"langgraph": {
|
1501 |
"hashes": [
|
1502 |
-
"sha256:
|
1503 |
-
"sha256:
|
1504 |
],
|
1505 |
"index": "pypi",
|
1506 |
"markers": "python_version < '4.0' and python_full_version >= '3.9.0'",
|
1507 |
-
"version": "==0.2.
|
1508 |
},
|
1509 |
"langgraph-checkpoint": {
|
1510 |
"hashes": [
|
1511 |
-
"sha256:
|
1512 |
-
"sha256:
|
1513 |
],
|
1514 |
"markers": "python_full_version >= '3.9.0' and python_full_version < '4.0.0'",
|
1515 |
-
"version": "==1.0.
|
1516 |
},
|
1517 |
"langsmith": {
|
1518 |
"hashes": [
|
1519 |
-
"sha256:
|
1520 |
-
"sha256:
|
1521 |
],
|
1522 |
"markers": "python_version < '4.0' and python_full_version >= '3.8.1'",
|
1523 |
-
"version": "==0.1.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1524 |
},
|
1525 |
"markdown-it-py": {
|
1526 |
"hashes": [
|
@@ -1836,11 +1949,11 @@
|
|
1836 |
},
|
1837 |
"narwhals": {
|
1838 |
"hashes": [
|
1839 |
-
"sha256:
|
1840 |
-
"sha256:
|
1841 |
],
|
1842 |
"markers": "python_version >= '3.8'",
|
1843 |
-
"version": "==1.
|
1844 |
},
|
1845 |
"nbclient": {
|
1846 |
"hashes": [
|
@@ -1935,11 +2048,11 @@
|
|
1935 |
},
|
1936 |
"openai": {
|
1937 |
"hashes": [
|
1938 |
-
"sha256:
|
1939 |
-
"sha256:
|
1940 |
],
|
1941 |
"markers": "python_full_version >= '3.7.1'",
|
1942 |
-
"version": "==1.
|
1943 |
},
|
1944 |
"orjson": {
|
1945 |
"hashes": [
|
@@ -2474,13 +2587,22 @@
|
|
2474 |
"markers": "python_version >= '3.6'",
|
2475 |
"version": "==2.0.7"
|
2476 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2477 |
"python-multipart": {
|
2478 |
"hashes": [
|
2479 |
-
"sha256:
|
2480 |
-
"sha256:
|
2481 |
],
|
2482 |
"markers": "python_version >= '3.8'",
|
2483 |
-
"version": "==0.0.
|
2484 |
},
|
2485 |
"pytz": {
|
2486 |
"hashes": [
|
@@ -2671,6 +2793,100 @@
|
|
2671 |
"markers": "python_version >= '3.8'",
|
2672 |
"version": "==1.11.3"
|
2673 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2674 |
"referencing": {
|
2675 |
"hashes": [
|
2676 |
"sha256:25b42124a6c8b632a425174f24087783efb348a6f1e0008e63cd4466fedf703c",
|
@@ -2805,11 +3021,11 @@
|
|
2805 |
},
|
2806 |
"rich": {
|
2807 |
"hashes": [
|
2808 |
-
"sha256:
|
2809 |
-
"sha256:
|
2810 |
],
|
2811 |
-
"markers": "python_full_version >= '3.
|
2812 |
-
"version": "==13.
|
2813 |
},
|
2814 |
"rpds-py": {
|
2815 |
"hashes": [
|
@@ -2922,27 +3138,27 @@
|
|
2922 |
},
|
2923 |
"ruff": {
|
2924 |
"hashes": [
|
2925 |
-
"sha256:
|
2926 |
-
"sha256:
|
2927 |
-
"sha256:
|
2928 |
-
"sha256:
|
2929 |
-
"sha256:
|
2930 |
-
"sha256:
|
2931 |
-
"sha256:
|
2932 |
-
"sha256:
|
2933 |
-
"sha256:
|
2934 |
-
"sha256:
|
2935 |
-
"sha256:
|
2936 |
-
"sha256:
|
2937 |
-
"sha256:
|
2938 |
-
"sha256:
|
2939 |
-
"sha256:
|
2940 |
-
"sha256:
|
2941 |
-
"sha256:
|
2942 |
-
"sha256:
|
2943 |
],
|
2944 |
"markers": "sys_platform != 'emscripten'",
|
2945 |
-
"version": "==0.6.
|
2946 |
},
|
2947 |
"semantic-version": {
|
2948 |
"hashes": [
|
@@ -3251,11 +3467,11 @@
|
|
3251 |
},
|
3252 |
"uvicorn": {
|
3253 |
"hashes": [
|
3254 |
-
"sha256:
|
3255 |
-
"sha256:
|
3256 |
],
|
3257 |
"markers": "sys_platform != 'emscripten'",
|
3258 |
-
"version": "==0.
|
3259 |
},
|
3260 |
"wcwidth": {
|
3261 |
"hashes": [
|
@@ -3374,101 +3590,101 @@
|
|
3374 |
},
|
3375 |
"yarl": {
|
3376 |
"hashes": [
|
3377 |
-
"sha256:
|
3378 |
-
"sha256:
|
3379 |
-
"sha256:
|
3380 |
-
"sha256:
|
3381 |
-
"sha256:
|
3382 |
-
"sha256:
|
3383 |
-
"sha256:
|
3384 |
-
"sha256:
|
3385 |
-
"sha256:
|
3386 |
-
"sha256:
|
3387 |
-
"sha256:
|
3388 |
-
"sha256:
|
3389 |
-
"sha256:
|
3390 |
-
"sha256:
|
3391 |
-
"sha256:
|
3392 |
-
"sha256:
|
3393 |
-
"sha256:
|
3394 |
-
"sha256:
|
3395 |
-
"sha256:
|
3396 |
-
"sha256:
|
3397 |
-
"sha256:
|
3398 |
-
"sha256:
|
3399 |
-
"sha256:
|
3400 |
-
"sha256:
|
3401 |
-
"sha256:
|
3402 |
-
"sha256:
|
3403 |
-
"sha256:
|
3404 |
-
"sha256:
|
3405 |
-
"sha256:
|
3406 |
-
"sha256:
|
3407 |
-
"sha256:
|
3408 |
-
"sha256:
|
3409 |
-
"sha256:
|
3410 |
-
"sha256:
|
3411 |
-
"sha256:
|
3412 |
-
"sha256:
|
3413 |
-
"sha256:
|
3414 |
-
"sha256:
|
3415 |
-
"sha256:
|
3416 |
-
"sha256:
|
3417 |
-
"sha256:
|
3418 |
-
"sha256:
|
3419 |
-
"sha256:
|
3420 |
-
"sha256:
|
3421 |
-
"sha256:
|
3422 |
-
"sha256:
|
3423 |
-
"sha256:
|
3424 |
-
"sha256:
|
3425 |
-
"sha256:
|
3426 |
-
"sha256:
|
3427 |
-
"sha256:
|
3428 |
-
"sha256:
|
3429 |
-
"sha256:
|
3430 |
-
"sha256:
|
3431 |
-
"sha256:
|
3432 |
-
"sha256:
|
3433 |
-
"sha256:
|
3434 |
-
"sha256:
|
3435 |
-
"sha256:
|
3436 |
-
"sha256:
|
3437 |
-
"sha256:
|
3438 |
-
"sha256:
|
3439 |
-
"sha256:
|
3440 |
-
"sha256:
|
3441 |
-
"sha256:
|
3442 |
-
"sha256:
|
3443 |
-
"sha256:
|
3444 |
-
"sha256:
|
3445 |
-
"sha256:
|
3446 |
-
"sha256:
|
3447 |
-
"sha256:
|
3448 |
-
"sha256:
|
3449 |
-
"sha256:
|
3450 |
-
"sha256:
|
3451 |
-
"sha256:
|
3452 |
-
"sha256:
|
3453 |
-
"sha256:
|
3454 |
-
"sha256:
|
3455 |
-
"sha256:
|
3456 |
-
"sha256:
|
3457 |
-
"sha256:
|
3458 |
-
"sha256:
|
3459 |
-
"sha256:
|
3460 |
-
"sha256:
|
3461 |
-
"sha256:
|
3462 |
-
"sha256:
|
3463 |
-
"sha256:
|
3464 |
-
"sha256:
|
3465 |
-
"sha256:
|
3466 |
-
"sha256:
|
3467 |
-
"sha256:
|
3468 |
-
"sha256:
|
3469 |
-
],
|
3470 |
-
"markers": "python_version >= '3.8'",
|
3471 |
-
"version": "==1.
|
3472 |
}
|
3473 |
},
|
3474 |
"develop": {}
|
|
|
1 |
{
|
2 |
"_meta": {
|
3 |
"hash": {
|
4 |
+
"sha256": "7e2ace76430fd0b8f93737daf0040979ad0aa7e763b75c9694e736a017af375e"
|
5 |
},
|
6 |
"pipfile-spec": 6,
|
7 |
"requires": {
|
|
|
26 |
},
|
27 |
"aiohappyeyeballs": {
|
28 |
"hashes": [
|
29 |
+
"sha256:75cf88a15106a5002a8eb1dab212525c00d1f4c0fa96e551c9fbe6f09a621586",
|
30 |
+
"sha256:8a7a83727b2756f394ab2895ea0765a0a8c475e3c71e98d43d76f22b4b435572"
|
31 |
],
|
32 |
"markers": "python_version >= '3.8'",
|
33 |
+
"version": "==2.4.3"
|
34 |
},
|
35 |
"aiohttp": {
|
36 |
"hashes": [
|
37 |
+
"sha256:10c7932337285a6bfa3a5fe1fd4da90b66ebfd9d0cbd1544402e1202eb9a8c3e",
|
38 |
+
"sha256:177126e971782769b34933e94fddd1089cef0fe6b82fee8a885e539f5b0f0c6a",
|
39 |
+
"sha256:1ce46dfb49cfbf9e92818be4b761d4042230b1f0e05ffec0aad15b3eb162b905",
|
40 |
+
"sha256:1e7a6af57091056a79a35104d6ec29d98ec7f1fb7270ad9c6fff871b678d1ff8",
|
41 |
+
"sha256:21a72f4a9c69a8567a0aca12042f12bba25d3139fd5dd8eeb9931f4d9e8599cd",
|
42 |
+
"sha256:21c1925541ca84f7b5e0df361c0a813a7d6a56d3b0030ebd4b220b8d232015f9",
|
43 |
+
"sha256:21f8225f7dc187018e8433c9326be01477fb2810721e048b33ac49091b19fb4a",
|
44 |
+
"sha256:22cdeb684d8552490dd2697a5138c4ecb46f844892df437aaf94f7eea99af879",
|
45 |
+
"sha256:270e653b5a4b557476a1ed40e6b6ce82f331aab669620d7c95c658ef976c9c5e",
|
46 |
+
"sha256:2df786c96c57cd6b87156ba4c5f166af7b88f3fc05f9d592252fdc83d8615a3c",
|
47 |
+
"sha256:32710d6b3b6c09c60c794d84ca887a3a2890131c0b02b3cefdcc6709a2260a7c",
|
48 |
+
"sha256:33a68011a38020ed4ff41ae0dbf4a96a202562ecf2024bdd8f65385f1d07f6ef",
|
49 |
+
"sha256:365783e1b7c40b59ed4ce2b5a7491bae48f41cd2c30d52647a5b1ee8604c68ad",
|
50 |
+
"sha256:3a95d2686bc4794d66bd8de654e41b5339fab542b2bca9238aa63ed5f4f2ce82",
|
51 |
+
"sha256:3b2036479b6b94afaaca7d07b8a68dc0e67b0caf5f6293bb6a5a1825f5923000",
|
52 |
+
"sha256:3c7f270f4ca92760f98a42c45a58674fff488e23b144ec80b1cc6fa2effed377",
|
53 |
+
"sha256:3f6d47e392c27206701565c8df4cac6ebed28fdf6dcaea5b1eea7a4631d8e6db",
|
54 |
+
"sha256:40d2d719c3c36a7a65ed26400e2b45b2d9ed7edf498f4df38b2ae130f25a0d01",
|
55 |
+
"sha256:4618f0d2bf523043866a9ff8458900d8eb0a6d4018f251dae98e5f1fb699f3a8",
|
56 |
+
"sha256:471a8c47344b9cc309558b3fcc469bd2c12b49322b4b31eb386c4a2b2d44e44a",
|
57 |
+
"sha256:4954e6b06dd0be97e1a5751fc606be1f9edbdc553c5d9b57d72406a8fbd17f9d",
|
58 |
+
"sha256:497a7d20caea8855c5429db3cdb829385467217d7feb86952a6107e033e031b9",
|
59 |
+
"sha256:4b91f4f62ad39a8a42d511d66269b46cb2fb7dea9564c21ab6c56a642d28bff5",
|
60 |
+
"sha256:4dbf252ac19860e0ab56cd480d2805498f47c5a2d04f5995d8d8a6effd04b48c",
|
61 |
+
"sha256:4e10b04542d27e21538e670156e88766543692a0a883f243ba8fad9ddea82e53",
|
62 |
+
"sha256:5284997e3d88d0dfb874c43e51ae8f4a6f4ca5b90dcf22995035187253d430db",
|
63 |
+
"sha256:57359785f27394a8bcab0da6dcd46706d087dfebf59a8d0ad2e64a4bc2f6f94f",
|
64 |
+
"sha256:597128cb7bc5f068181b49a732961f46cb89f85686206289d6ccb5e27cb5fbe2",
|
65 |
+
"sha256:5aa1a073514cf59c81ad49a4ed9b5d72b2433638cd53160fd2f3a9cfa94718db",
|
66 |
+
"sha256:680dbcff5adc7f696ccf8bf671d38366a1f620b5616a1d333d0cb33956065395",
|
67 |
+
"sha256:6984dda9d79064361ab58d03f6c1e793ea845c6cfa89ffe1a7b9bb400dfd56bd",
|
68 |
+
"sha256:69de056022e7abf69cb9fec795515973cc3eeaff51e3ea8d72a77aa933a91c52",
|
69 |
+
"sha256:6c7efa6616a95e3bd73b8a69691012d2ef1f95f9ea0189e42f338fae080c2fc6",
|
70 |
+
"sha256:6d1ad868624f6cea77341ef2877ad4e71f7116834a6cd7ec36ec5c32f94ee6ae",
|
71 |
+
"sha256:713dff3f87ceec3bde4f3f484861464e722cf7533f9fa6b824ec82bb5a9010a7",
|
72 |
+
"sha256:71462f8eeca477cbc0c9700a9464e3f75f59068aed5e9d4a521a103692da72dc",
|
73 |
+
"sha256:7c38cfd355fd86c39b2d54651bd6ed7d63d4fe3b5553f364bae3306e2445f847",
|
74 |
+
"sha256:8296edd99d0dd9d0eb8b9e25b3b3506eef55c1854e9cc230f0b3f885f680410b",
|
75 |
+
"sha256:85431c9131a9a0f65260dc7a65c800ca5eae78c4c9931618f18c8e0933a0e0c1",
|
76 |
+
"sha256:85e4d7bd05d18e4b348441e7584c681eff646e3bf38f68b2626807f3add21aa2",
|
77 |
+
"sha256:8885ca09d3a9317219c0831276bfe26984b17b2c37b7bf70dd478d17092a4772",
|
78 |
+
"sha256:8960fabc20bfe4fafb941067cda8e23c8c17c98c121aa31c7bf0cdab11b07842",
|
79 |
+
"sha256:9443d9ebc5167ce1fbb552faf2d666fb22ef5716a8750be67efd140a7733738c",
|
80 |
+
"sha256:9721554bfa9e15f6e462da304374c2f1baede3cb06008c36c47fa37ea32f1dc4",
|
81 |
+
"sha256:98a4eb60e27033dee9593814ca320ee8c199489fbc6b2699d0f710584db7feb7",
|
82 |
+
"sha256:98fae99d5c2146f254b7806001498e6f9ffb0e330de55a35e72feb7cb2fa399b",
|
83 |
+
"sha256:9a281cba03bdaa341c70b7551b2256a88d45eead149f48b75a96d41128c240b3",
|
84 |
+
"sha256:a087c84b4992160ffef7afd98ef24177c8bd4ad61c53607145a8377457385100",
|
85 |
+
"sha256:a1ba7bc139592339ddeb62c06486d0fa0f4ca61216e14137a40d626c81faf10c",
|
86 |
+
"sha256:a3081246bab4d419697ee45e555cef5cd1def7ac193dff6f50be761d2e44f194",
|
87 |
+
"sha256:a72f89aea712c619b2ca32c6f4335c77125ede27530ad9705f4f349357833695",
|
88 |
+
"sha256:a78ba86d5a08207d1d1ad10b97aed6ea48b374b3f6831d02d0b06545ac0f181e",
|
89 |
+
"sha256:a961ee6f2cdd1a2be4735333ab284691180d40bad48f97bb598841bfcbfb94ec",
|
90 |
+
"sha256:ab1546fc8e00676febc81c548a876c7bde32f881b8334b77f84719ab2c7d28dc",
|
91 |
+
"sha256:ab2d6523575fc98896c80f49ac99e849c0b0e69cc80bf864eed6af2ae728a52b",
|
92 |
+
"sha256:aff048793d05e1ce05b62e49dccf81fe52719a13f4861530706619506224992b",
|
93 |
+
"sha256:b1a012677b8e0a39e181e218de47d6741c5922202e3b0b65e412e2ce47c39337",
|
94 |
+
"sha256:b667e2a03407d79a76c618dc30cedebd48f082d85880d0c9c4ec2faa3e10f43e",
|
95 |
+
"sha256:b91557ee0893da52794b25660d4f57bb519bcad8b7df301acd3898f7197c5d81",
|
96 |
+
"sha256:badb51d851358cd7535b647bb67af4854b64f3c85f0d089c737f75504d5910ec",
|
97 |
+
"sha256:c36074b26f3263879ba8e4dbd33db2b79874a3392f403a70b772701363148b9f",
|
98 |
+
"sha256:c4916070e12ae140110aa598031876c1bf8676a36a750716ea0aa5bd694aa2e7",
|
99 |
+
"sha256:c6769d71bfb1ed60321363a9bc05e94dcf05e38295ef41d46ac08919e5b00d19",
|
100 |
+
"sha256:c887019dbcb4af58a091a45ccf376fffe800b5531b45c1efccda4bedf87747ea",
|
101 |
+
"sha256:cd9716ef0224fe0d0336997eb242f40619f9f8c5c57e66b525a1ebf9f1d8cebe",
|
102 |
+
"sha256:ceacea31f8a55cdba02bc72c93eb2e1b77160e91f8abd605969c168502fd71eb",
|
103 |
+
"sha256:d088ca05381fd409793571d8e34eca06daf41c8c50a05aeed358d2d340c7af81",
|
104 |
+
"sha256:d3a79200a9d5e621c4623081ddb25380b713c8cf5233cd11c1aabad990bb9381",
|
105 |
+
"sha256:d82404a0e7b10e0d7f022cf44031b78af8a4f99bd01561ac68f7c24772fed021",
|
106 |
+
"sha256:d95ae4420669c871667aad92ba8cce6251d61d79c1a38504621094143f94a8b4",
|
107 |
+
"sha256:da57af0c54a302b7c655fa1ccd5b1817a53739afa39924ef1816e7b7c8a07ccb",
|
108 |
+
"sha256:ddb9b9764cfb4459acf01c02d2a59d3e5066b06a846a364fd1749aa168efa2be",
|
109 |
+
"sha256:de23085cf90911600ace512e909114385026b16324fa203cc74c81f21fd3276a",
|
110 |
+
"sha256:e1f0f7b27171b2956a27bd8f899751d0866ddabdd05cbddf3520f945130a908c",
|
111 |
+
"sha256:e32148b4a745e70a255a1d44b5664de1f2e24fcefb98a75b60c83b9e260ddb5b",
|
112 |
+
"sha256:e45fdfcb2d5bcad83373e4808825b7512953146d147488114575780640665027",
|
113 |
+
"sha256:e56bb7e31c4bc79956b866163170bc89fd619e0581ce813330d4ea46921a4881",
|
114 |
+
"sha256:e860985f30f3a015979e63e7ba1a391526cdac1b22b7b332579df7867848e255",
|
115 |
+
"sha256:ee3587506898d4a404b33bd19689286ccf226c3d44d7a73670c8498cd688e42c",
|
116 |
+
"sha256:ee97c4e54f457c366e1f76fbbf3e8effee9de57dae671084a161c00f481106ce",
|
117 |
+
"sha256:ef9b484604af05ca745b6108ca1aaa22ae1919037ae4f93aaf9a37ba42e0b835",
|
118 |
+
"sha256:f21e8f2abed9a44afc3d15bba22e0dfc71e5fa859bea916e42354c16102b036f",
|
119 |
+
"sha256:f23a6c1d09de5de89a33c9e9b229106cb70dcfdd55e81a3a3580eaadaa32bc92",
|
120 |
+
"sha256:f5d5d5401744dda50b943d8764508d0e60cc2d3305ac1e6420935861a9d544bc",
|
121 |
+
"sha256:f78e2a78432c537ae876a93013b7bc0027ba5b93ad7b3463624c4b6906489332",
|
122 |
+
"sha256:f8179855a4e4f3b931cb1764ec87673d3fbdcca2af496c8d30567d7b034a13db",
|
123 |
+
"sha256:fc0e7f91705445d79beafba9bb3057dd50830e40fe5417017a76a214af54e122",
|
124 |
+
"sha256:fe285a697c851734285369614443451462ce78aac2b77db23567507484b1dc6f",
|
125 |
+
"sha256:fe3d79d6af839ffa46fdc5d2cf34295390894471e9875050eafa584cb781508d",
|
126 |
+
"sha256:fecd55e7418fabd297fd836e65cbd6371aa4035a264998a091bbf13f94d9c44d",
|
127 |
+
"sha256:ffef3d763e4c8fc97e740da5b4d0f080b78630a3914f4e772a122bbfa608c1db"
|
128 |
+
],
|
129 |
+
"markers": "python_version >= '3.8'",
|
130 |
+
"version": "==3.10.8"
|
131 |
},
|
132 |
"aiosignal": {
|
133 |
"hashes": [
|
|
|
790 |
"markers": "python_version >= '3.8'",
|
791 |
"version": "==2024.9.0"
|
792 |
},
|
793 |
+
"fuzzywuzzy": {
|
794 |
+
"hashes": [
|
795 |
+
"sha256:45016e92264780e58972dca1b3d939ac864b78437422beecebb3095f8efd00e8",
|
796 |
+
"sha256:928244b28db720d1e0ee7587acf660ea49d7e4c632569cad4f1cd7e68a5f0993"
|
797 |
+
],
|
798 |
+
"index": "pypi",
|
799 |
+
"version": "==0.18.0"
|
800 |
+
},
|
801 |
"gitdb": {
|
802 |
"hashes": [
|
803 |
"sha256:81a3407ddd2ee8df444cbacea00e2d038e40150acfa3001696fe0dcf1d3adfa4",
|
|
|
816 |
},
|
817 |
"gradio": {
|
818 |
"hashes": [
|
819 |
+
"sha256:a68a52498ac6b63f8864ef84bf7866a70e7d07ebe913edf921e1d2a3708ad5ae",
|
820 |
+
"sha256:c908850c638e4a176b22f95a758ce6a63ffbc2a7a5a74b23186ceeeedc23f4d9"
|
821 |
],
|
822 |
"index": "pypi",
|
823 |
"markers": "python_version >= '3.8'",
|
824 |
+
"version": "==4.44.1"
|
825 |
},
|
826 |
"gradio-client": {
|
827 |
"hashes": [
|
|
|
912 |
},
|
913 |
"grpcio": {
|
914 |
"hashes": [
|
915 |
+
"sha256:02697eb4a5cbe5a9639f57323b4c37bcb3ab2d48cec5da3dc2f13334d72790dd",
|
916 |
+
"sha256:03b0b307ba26fae695e067b94cbb014e27390f8bc5ac7a3a39b7723fed085604",
|
917 |
+
"sha256:05bc2ceadc2529ab0b227b1310d249d95d9001cd106aa4d31e8871ad3c428d73",
|
918 |
+
"sha256:06de8ec0bd71be123eec15b0e0d457474931c2c407869b6c349bd9bed4adbac3",
|
919 |
+
"sha256:0be4e0490c28da5377283861bed2941d1d20ec017ca397a5df4394d1c31a9b50",
|
920 |
+
"sha256:12fda97ffae55e6526825daf25ad0fa37483685952b5d0f910d6405c87e3adb6",
|
921 |
+
"sha256:1caa38fb22a8578ab8393da99d4b8641e3a80abc8fd52646f1ecc92bcb8dee34",
|
922 |
+
"sha256:2018b053aa15782db2541ca01a7edb56a0bf18c77efed975392583725974b249",
|
923 |
+
"sha256:20657d6b8cfed7db5e11b62ff7dfe2e12064ea78e93f1434d61888834bc86d75",
|
924 |
+
"sha256:2335c58560a9e92ac58ff2bc5649952f9b37d0735608242973c7a8b94a6437d8",
|
925 |
+
"sha256:31fd163105464797a72d901a06472860845ac157389e10f12631025b3e4d0453",
|
926 |
+
"sha256:38b68498ff579a3b1ee8f93a05eb48dc2595795f2f62716e797dc24774c1aaa8",
|
927 |
+
"sha256:3b00efc473b20d8bf83e0e1ae661b98951ca56111feb9b9611df8efc4fe5d55d",
|
928 |
+
"sha256:3ed71e81782966ffead60268bbda31ea3f725ebf8aa73634d5dda44f2cf3fb9c",
|
929 |
+
"sha256:45a3d462826f4868b442a6b8fdbe8b87b45eb4f5b5308168c156b21eca43f61c",
|
930 |
+
"sha256:49f0ca7ae850f59f828a723a9064cadbed90f1ece179d375966546499b8a2c9c",
|
931 |
+
"sha256:4e504572433f4e72b12394977679161d495c4c9581ba34a88d843eaf0f2fbd39",
|
932 |
+
"sha256:4ea1d062c9230278793820146c95d038dc0f468cbdd172eec3363e42ff1c7d01",
|
933 |
+
"sha256:563588c587b75c34b928bc428548e5b00ea38c46972181a4d8b75ba7e3f24231",
|
934 |
+
"sha256:6001e575b8bbd89eee11960bb640b6da6ae110cf08113a075f1e2051cc596cae",
|
935 |
+
"sha256:66a0cd8ba6512b401d7ed46bb03f4ee455839957f28b8d61e7708056a806ba6a",
|
936 |
+
"sha256:6851de821249340bdb100df5eacfecfc4e6075fa85c6df7ee0eb213170ec8e5d",
|
937 |
+
"sha256:728bdf36a186e7f51da73be7f8d09457a03061be848718d0edf000e709418987",
|
938 |
+
"sha256:73e3b425c1e155730273f73e419de3074aa5c5e936771ee0e4af0814631fb30a",
|
939 |
+
"sha256:73fc8f8b9b5c4a03e802b3cd0c18b2b06b410d3c1dcbef989fdeb943bd44aff7",
|
940 |
+
"sha256:78fa51ebc2d9242c0fc5db0feecc57a9943303b46664ad89921f5079e2e4ada7",
|
941 |
+
"sha256:7b2c86457145ce14c38e5bf6bdc19ef88e66c5fee2c3d83285c5aef026ba93b3",
|
942 |
+
"sha256:7d69ce1f324dc2d71e40c9261d3fdbe7d4c9d60f332069ff9b2a4d8a257c7b2b",
|
943 |
+
"sha256:802d84fd3d50614170649853d121baaaa305de7b65b3e01759247e768d691ddf",
|
944 |
+
"sha256:80fd702ba7e432994df208f27514280b4b5c6843e12a48759c9255679ad38db8",
|
945 |
+
"sha256:8ac475e8da31484efa25abb774674d837b343afb78bb3bcdef10f81a93e3d6bf",
|
946 |
+
"sha256:950da58d7d80abd0ea68757769c9db0a95b31163e53e5bb60438d263f4bed7b7",
|
947 |
+
"sha256:99a641995a6bc4287a6315989ee591ff58507aa1cbe4c2e70d88411c4dcc0839",
|
948 |
+
"sha256:9c3a99c519f4638e700e9e3f83952e27e2ea10873eecd7935823dab0c1c9250e",
|
949 |
+
"sha256:9c509a4f78114cbc5f0740eb3d7a74985fd2eff022971bc9bc31f8bc93e66a3b",
|
950 |
+
"sha256:a18e20d8321c6400185b4263e27982488cb5cdd62da69147087a76a24ef4e7e3",
|
951 |
+
"sha256:a917d26e0fe980b0ac7bfcc1a3c4ad6a9a4612c911d33efb55ed7833c749b0ee",
|
952 |
+
"sha256:a9539f01cb04950fd4b5ab458e64a15f84c2acc273670072abe49a3f29bbad54",
|
953 |
+
"sha256:ad2efdbe90c73b0434cbe64ed372e12414ad03c06262279b104a029d1889d13e",
|
954 |
+
"sha256:b672abf90a964bfde2d0ecbce30f2329a47498ba75ce6f4da35a2f4532b7acbc",
|
955 |
+
"sha256:bbd27c24a4cc5e195a7f56cfd9312e366d5d61b86e36d46bbe538457ea6eb8dd",
|
956 |
+
"sha256:c400ba5675b67025c8a9f48aa846f12a39cf0c44df5cd060e23fda5b30e9359d",
|
957 |
+
"sha256:c408f5ef75cfffa113cacd8b0c0e3611cbfd47701ca3cdc090594109b9fcbaed",
|
958 |
+
"sha256:c806852deaedee9ce8280fe98955c9103f62912a5b2d5ee7e3eaa284a6d8d8e7",
|
959 |
+
"sha256:ce89f5876662f146d4c1f695dda29d4433a5d01c8681fbd2539afff535da14d4",
|
960 |
+
"sha256:d25a14af966438cddf498b2e338f88d1c9706f3493b1d73b93f695c99c5f0e2a",
|
961 |
+
"sha256:d8d4732cc5052e92cea2f78b233c2e2a52998ac40cd651f40e398893ad0d06ec",
|
962 |
+
"sha256:d9a9724a156c8ec6a379869b23ba3323b7ea3600851c91489b871e375f710bc8",
|
963 |
+
"sha256:e636ce23273683b00410f1971d209bf3689238cf5538d960adc3cdfe80dd0dbd",
|
964 |
+
"sha256:e88264caad6d8d00e7913996030bac8ad5f26b7411495848cc218bd3a9040b6c",
|
965 |
+
"sha256:f145cc21836c332c67baa6fc81099d1d27e266401565bf481948010d6ea32d46",
|
966 |
+
"sha256:fb57870449dfcfac428afbb5a877829fcb0d6db9d9baa1148705739e9083880e",
|
967 |
+
"sha256:fb70487c95786e345af5e854ffec8cb8cc781bcc5df7930c4fbb7feaa72e1cdf",
|
968 |
+
"sha256:fe96281713168a3270878255983d2cb1a97e034325c8c2c25169a69289d3ecfa",
|
969 |
+
"sha256:ff1f7882e56c40b0d33c4922c15dfa30612f05fb785074a012f7cda74d1c3679"
|
970 |
+
],
|
971 |
+
"markers": "python_version >= '3.8'",
|
972 |
+
"version": "==1.66.2"
|
973 |
},
|
974 |
"grpcio-tools": {
|
975 |
"hashes": [
|
976 |
+
"sha256:007750b4db62018e441f8401fa567aa11174ae0173826cbbe54982fdf2383067",
|
977 |
+
"sha256:0933420362621d8792fea9350f0c82c514da5f93888d1476c37d9e3722d260b0",
|
978 |
+
"sha256:0a465850c7e5c4ab588c7b7275d47781e9c0ee397a8faf4977262592f95e1831",
|
979 |
+
"sha256:0cad9ffe5df7801201773b91f14923cf3e20ca764e418ae7f8cb75f6045a0aa1",
|
980 |
+
"sha256:0dc16f9e6baafed315846e79a746513863e6ecbb89e9c98d872834e44f9e87a5",
|
981 |
+
"sha256:0eaedd3c77824c3762b728c485f91097a58116fa135f3bbc24703621476cd866",
|
982 |
+
"sha256:18554bc91640b2f1ce18aa5c6bebd51500ca0b43b5df4e700e6f76522e2b0e94",
|
983 |
+
"sha256:1b3cf9ae67f8bb431ab3ff60db75c3586dc5aa993be4b15bd7cad651362563cd",
|
984 |
+
"sha256:1bc41d5b36d414bb0940aa50e30d624903a2538f9387ae730953675adcbe1498",
|
985 |
+
"sha256:1d5e22b2c7f5b453462c85aa66f99961d5c7b275d1c60b84fe847c06c73c9400",
|
986 |
+
"sha256:2a9a376b300aa2b4da8e6c4f6f746e824d3f24eefeac2753ffffe2b9f37d156d",
|
987 |
+
"sha256:3655c96eef8aac2a610bbf4cb9c7839fcff09f07a609b74408b3b0a136e1ef57",
|
988 |
+
"sha256:3fe2fc2e4a16d745cae01e1348b401378e58ced920ff759a6b4b85a7ad507896",
|
989 |
+
"sha256:40b7ad804ff78490408177cfe87427d5a67224f82a2bdfabe9d8d6ac6239733b",
|
990 |
+
"sha256:48997b704d2fcf59d922228c7a79fcd35d52ca8b2202e5cfe193962643b8354f",
|
991 |
+
"sha256:4a36e07913d26ba5ccfd2685ba63ca97f26b08c249d2cc9e74dda37efa49d7e4",
|
992 |
+
"sha256:4b16244be4cff92408eb82901b883a70f3dd902fb7c7f66e2a368271be84cde4",
|
993 |
+
"sha256:538eb263b9969e866619775df341307ece0b09afce091ede8141c5bb4d7d8933",
|
994 |
+
"sha256:5a5146e780ed87348d84b11fc3843741e676b2a84d493363bf0b4ae31c56841b",
|
995 |
+
"sha256:5daf9807260e172ffcc5dd582c01f60bac820f99f0151a507c8a537f9e6dceb8",
|
996 |
+
"sha256:5fd20110d2c7706dfdd95457807acb8c050253be2e272b9f5fb977e87ea44d86",
|
997 |
+
"sha256:6cc3da6994d575c425c74ce33e34b86a975ea7e78bb9c3525e8439a3af3c508f",
|
998 |
+
"sha256:75c6a25a5cf729c4606c388013cf7c59dda99cf3718c24fe4fd52b06c19955d0",
|
999 |
+
"sha256:7afd9eb9be413a731cff7ad638081795a7ed0fec4b23af5cec2099fbd9d742f9",
|
1000 |
+
"sha256:7e8c9aa91a9e51199048202e3c54491e0a89fb3ac47dde36ff2964fbcee143a3",
|
1001 |
+
"sha256:80c233215cf0f08353b7aac4e86cdedf4d545ed368a7491ccc9996e5a317dce4",
|
1002 |
+
"sha256:86d971fc64e63642058ac01ce2e484a8340d60a95ead0dc6697ef2aa18a7b936",
|
1003 |
+
"sha256:89e437ced43275e7427cc82a837f5cd43ebe18a1080b0e50a47627895b44b0e6",
|
1004 |
+
"sha256:99638043e1a78b8617f31b676f1ecf248d75a45b318776af3acc48a85c8e10a2",
|
1005 |
+
"sha256:9a68c71bb1358f0994fc7d0f0d70a0d419d57507faa25c982145be401f6aca48",
|
1006 |
+
"sha256:a14007902fb6565c21815da4177105ec905ef37f0550190c4d1bbeb2928c6560",
|
1007 |
+
"sha256:a15a4d0f4eba3773dabe07113b42e018a8fa9a28441483ada111991d5c1468b6",
|
1008 |
+
"sha256:a2810921218471aab5c8cd20204d3b1886aa8e13b495e882158bb398982cf18e",
|
1009 |
+
"sha256:a425b2600ad4fcf887107ee975a9b7c20478c2959c58b12af7f36577d7a7f7b3",
|
1010 |
+
"sha256:a886fa2ff9e897b35489557d1c61cbc0e4efc42c4dc0d120a9516f294fefb107",
|
1011 |
+
"sha256:ab4eda584ba2e647e9bb5098f5e4e8d370a333761bf33924e9a7c14f069c8b08",
|
1012 |
+
"sha256:b2c19e5a888a6ee48ba699581a90c04806b2a93f574f37449c359ec17a793669",
|
1013 |
+
"sha256:b4896a0853fc402273e908c0a0710d25242f1ae907efb9d22ba6d82d4ba00ad8",
|
1014 |
+
"sha256:ba63dbcbb8ade67e5a04dd3a6c5860efb454bda6d5e8558b17c9a7251339ce36",
|
1015 |
+
"sha256:c14db004b28ee2adefc6d36107d7fdf770f7509bd1f1ecd195eecb88cdbe5d96",
|
1016 |
+
"sha256:c42ba1b24e701544bf08a43bb2d63d56dedd0fd33a5b499c9cf85e15aa154b13",
|
1017 |
+
"sha256:c43dcd3ee13418545ea10416f46296ddbc7fb355cf136ddebd3b3f881a383168",
|
1018 |
+
"sha256:c4df0f547f4193dfa6689949b374974f08d81f129174738f0410ba8d45dc63be",
|
1019 |
+
"sha256:c65f12474634195ff5ed91b304412b80008c067d28226c26b4e451ea9da16b24",
|
1020 |
+
"sha256:c68642829368f4f83929e0df571dbbc99f1f1553555d8f98d0582da9f6743d9e",
|
1021 |
+
"sha256:cc4f65cd189832676dca16046a4b6247d0bc1fc20648d16ac7fb0b075d1658f4",
|
1022 |
+
"sha256:d31aad10f90fccb0073bc03b4d1b67690ef4f0cd9af96e82944b9cc655d12b6f",
|
1023 |
+
"sha256:d3aef5abd34bea8ea98448cd58a938992238c4717df93d12f84fa5f56efb11d0",
|
1024 |
+
"sha256:d872ba3bbe9e15b43eeb9310dad5edbf490bb3ab0072a46b3a12fed0234eec23",
|
1025 |
+
"sha256:d8ca76fc40a7d35ddf1229afd04408e2ff94caf4385068c8b147e064e951e0ba",
|
1026 |
+
"sha256:d8f976f35683e49467d0bf2b90c170ac5443cd162d48d8d868801fd0d87a5fa8",
|
1027 |
+
"sha256:d95f030e708266d7fd6d3e5d56e30a9bbbe230604856b1fe93edd892e4389aab",
|
1028 |
+
"sha256:df8f098bb92d192230f3b23df514b139f3549e2a4390d1f0f0d8ff89de458c54",
|
1029 |
+
"sha256:ef979af76b0cd3f5235d3ec30e86a4f0acc0eab179e796ddbb481aa351a1e6ca",
|
1030 |
+
"sha256:fd1fa95188ae7d5460a8c4a2abcb2777fdf9c3b80d592a2e8434c52a6eb48e8d"
|
1031 |
+
],
|
1032 |
+
"markers": "python_version >= '3.8'",
|
1033 |
+
"version": "==1.66.2"
|
1034 |
},
|
1035 |
"h11": {
|
1036 |
"hashes": [
|
|
|
1482 |
},
|
1483 |
"langchain": {
|
1484 |
"hashes": [
|
1485 |
+
"sha256:54d6e3abda2ec056875a231a418a4130ba7576e629e899067e499bfc847b7586",
|
1486 |
+
"sha256:94e5ee7464d4366e4b158aa5704953c39701ea237b9ed4b200096d49e83bb3ae"
|
1487 |
],
|
1488 |
"index": "pypi",
|
1489 |
"markers": "python_version >= '3.9' and python_version < '4.0'",
|
1490 |
+
"version": "==0.3.1"
|
1491 |
},
|
1492 |
"langchain-core": {
|
1493 |
"hashes": [
|
1494 |
+
"sha256:9f877c00fec7fe1dca929dd3bed3999ee4c2e5c14c6744ed82cc66ddfcd15fdf",
|
1495 |
+
"sha256:a789875358001ca9293875c12f0b6238855325621ab66775109497b9b1648157"
|
1496 |
],
|
1497 |
"markers": "python_version >= '3.9' and python_version < '4.0'",
|
1498 |
+
"version": "==0.3.7"
|
1499 |
},
|
1500 |
"langchain-openai": {
|
1501 |
"hashes": [
|
1502 |
+
"sha256:215efa4526c88f8105f002b43b7cbf98cebd9baeb4f62c3b58faebdb578715bc",
|
1503 |
+
"sha256:a131ea18736f1a8792925391b91a8c8bd834431ffc2055c92ba49f59c3dcaaf0"
|
1504 |
],
|
1505 |
"index": "pypi",
|
1506 |
"markers": "python_version >= '3.9' and python_version < '4.0'",
|
1507 |
+
"version": "==0.2.1"
|
1508 |
},
|
1509 |
"langchain-qdrant": {
|
1510 |
"hashes": [
|
|
|
1525 |
},
|
1526 |
"langgraph": {
|
1527 |
"hashes": [
|
1528 |
+
"sha256:78759ebd8abcabb1894cf64e07d221a11b970e77553a4f89e1134c3602958341",
|
1529 |
+
"sha256:9e5b4138aae95bfbd928b6f0f2869431060c80d7a62fc831370cf2aed3a488e8"
|
1530 |
],
|
1531 |
"index": "pypi",
|
1532 |
"markers": "python_version < '4.0' and python_full_version >= '3.9.0'",
|
1533 |
+
"version": "==0.2.31"
|
1534 |
},
|
1535 |
"langgraph-checkpoint": {
|
1536 |
"hashes": [
|
1537 |
+
"sha256:5c51f8d8cca4c0ed3e75c264a7bf66a2efa60ff521ed46f05facf606df424eb1",
|
1538 |
+
"sha256:a60cbf06011a5f9c9bfcde971684732acd5df39632c58ff45f02f814519e9d8c"
|
1539 |
],
|
1540 |
"markers": "python_full_version >= '3.9.0' and python_full_version < '4.0.0'",
|
1541 |
+
"version": "==1.0.14"
|
1542 |
},
|
1543 |
"langsmith": {
|
1544 |
"hashes": [
|
1545 |
+
"sha256:31393fbbb17d6be5b99b9b22d530450094fab23c6c37281a6a6efb2143d05347",
|
1546 |
+
"sha256:6c3ba66471bef41b9f87da247cc0b493268b3f54656f73648a256a205261b6a0"
|
1547 |
],
|
1548 |
"markers": "python_version < '4.0' and python_full_version >= '3.8.1'",
|
1549 |
+
"version": "==0.1.129"
|
1550 |
+
},
|
1551 |
+
"levenshtein": {
|
1552 |
+
"hashes": [
|
1553 |
+
"sha256:0560746b2c40cdd25458cb4a065e4d7ffbb245783638f5b0173cfd135f9d6664",
|
1554 |
+
"sha256:0576b0e817904adc621077761e71c97555ae9e698e712b0bdbe868464444200b",
|
1555 |
+
"sha256:07ffd78569ca80adfd55172156faac35eb12ccd375d6d51ba4512b0346337cbf",
|
1556 |
+
"sha256:0afb8bd5bc2d686d34ed721399d78359d104c7483a740b262fd260357599e318",
|
1557 |
+
"sha256:0c06ddb9149ee0f25ba334ad04ee3f782be3e64ab4bf8b9f34d6e4bf19a22880",
|
1558 |
+
"sha256:14c96604ce1228922094ea266d9927227ab129e939b3e5dd84fee07390b72b5f",
|
1559 |
+
"sha256:16a3f4d0bcdbd0d14e0c49844a2ac02d8acece9f6cce41ea437c1d07ac536ec1",
|
1560 |
+
"sha256:17c9e1d7bbde972c09e2c6578392ff0668697db8f815649594b984ed2b0b2843",
|
1561 |
+
"sha256:1bf886afed2304e0022c33ed644afb719411cce4d4af11ba5bb040f05d9f00c1",
|
1562 |
+
"sha256:2150961cff9cfcfd4b5e4c1a5c90b2d4520a7d9cb65cd070cda5601b7f099496",
|
1563 |
+
"sha256:22c40516cc830aeeb18b09bd96ec32378b7e52e201d67e86dfb7f6a2e3bf3b3d",
|
1564 |
+
"sha256:247767593ede88f3ddbd4f948ed30817cb751e25a335b35ec2332752021e4e10",
|
1565 |
+
"sha256:2b3aa9a0b844ddaeb6f5317eb4e85b5748901cf40c9a9b0d3a8bf76ef9d3cccc",
|
1566 |
+
"sha256:3baa2c8ebc1f3b773ffb010e03e7319098323618f919c5db2c7188e439d13602",
|
1567 |
+
"sha256:3cc288a6ab97a3ccd980d8a0465378b99eb53e32232f99279092a97578c4b2e9",
|
1568 |
+
"sha256:3e265812db8b04e6ae159751c7a82d6e0e5025223bd330fc9104a8a5beeeb7cf",
|
1569 |
+
"sha256:3e8e373586026d71ec2053300ef46c5268fe41a29d9f58a724487e3f060502db",
|
1570 |
+
"sha256:47a4d8c58114c2b9a4318dcb8e2a0dc8446ec3ec637b051f3dbe27555786f603",
|
1571 |
+
"sha256:4931c8263e06edbece310b1f8e03bfcb74f211863a85058b46cdf8460a4136af",
|
1572 |
+
"sha256:4a0ed02c8aaef0903b72fe0da88d9d24d7964b07dbc123997e549ac165efad8d",
|
1573 |
+
"sha256:4ecf7d755304d2ffab2ee808100f5e87889347b572c61c97d9f4f9a318806713",
|
1574 |
+
"sha256:52a7407416723cd7163238b16b7c0eba4b30bc53f549e803e654f1df6824e0b5",
|
1575 |
+
"sha256:54200110ba27c20cb2e3bc48cf855d7d910c6704a47caefe97ced8c59ee075b4",
|
1576 |
+
"sha256:588094f406d5cb01dbf74201f8b4fe345d2b92a789997eb5371dad754f831d5b",
|
1577 |
+
"sha256:5cefa552c5190e912f0fe39b62a5b08597d1256f330ed2c459ba724947458282",
|
1578 |
+
"sha256:6170cbbec2ffc3df86adf2f457f83a22df99b6c4e2b21c76bc9a67b23c2940d1",
|
1579 |
+
"sha256:64bfad7270c2fc0f872f6ca2e26cc091efebfb64b7b1ae156123c2304fbcbae4",
|
1580 |
+
"sha256:651b011617937d18f671450c8294d11b5b556b09e33ac038b923ae6496e35d31",
|
1581 |
+
"sha256:68a165bd91dab44c2b91c8278e3728f0da98cb48b1ed7f263bfdf616efcf4932",
|
1582 |
+
"sha256:71a3afbfc7d97fd536f128084a20c2a79b5d79995c7111eced1baf4d103ea6d4",
|
1583 |
+
"sha256:7211e700ddca453efe49bdce57c84073451667873d80037c73c1f55840d08e70",
|
1584 |
+
"sha256:754669e9b82795cfc3ca0d70f2e715b58ff4d0f7e7f4e77fc6539543439ae22c",
|
1585 |
+
"sha256:75e2567bf64e422843d0f67917938c0235a9292b395076dd5f8bbb731d1c3058",
|
1586 |
+
"sha256:770dc2973c9c76598d68b736319c2b2b6fad1f88837119a92e9124ff2167cc49",
|
1587 |
+
"sha256:77422c5da5cfd8455a8835329d965e24250b0f0c1398e0a6362879f00d18f27c",
|
1588 |
+
"sha256:7aabafb951b96ca6e0f981b1edb3ec81b41c010b7437758e275393768fa84453",
|
1589 |
+
"sha256:7acff8e4335f18bb5b60cbd310957cf46c964f0b5bc1cc82fe6647c45309b9f8",
|
1590 |
+
"sha256:7ce82de94989df4367ff38de2c4193bf0ea77b4e207ae60e98876922007a0f81",
|
1591 |
+
"sha256:8104cb5642277439c07091c160ad3b1c3d20c160db8dbf5306871f065721e5e8",
|
1592 |
+
"sha256:830b1993e3e945b213a6b73ceca8b555147a6ecd7323e4959b80dee35abfc7fc",
|
1593 |
+
"sha256:88f051a0a4eec22cd8071634d5a2ee40d9810080e3b6d1e61e4fbe2a7a7ece3d",
|
1594 |
+
"sha256:8a9949dd238e8c1bd27669a1bf66a5507eed2fd486130b30b2df44cc4f238a3c",
|
1595 |
+
"sha256:8c58cb6c9f90f9b11d6b478e2da6ac1f0bcb5ea9608a5611088d30f782ee5920",
|
1596 |
+
"sha256:912fe5a3bcc970ab4b97e7e83ea118cf9a98831813535efa0f499b0b4df032dd",
|
1597 |
+
"sha256:9238be73beff55e2b285ac393573274e55233e7270cb6484fa4550b775016705",
|
1598 |
+
"sha256:93a949fabc6280ab44a6252d780577715e8e71a63a295c4730ce5490006ae1f5",
|
1599 |
+
"sha256:960b020d96bbd348400d6ff5c16290adee49f0ae2d42707a550a3b4f7d092abe",
|
1600 |
+
"sha256:968731244a7d56354c912c054e7b6ea33c3700632ef7cab1c895b3110e86dc7b",
|
1601 |
+
"sha256:a01150b33505596be83bff9f6f06f53bc1a14fd5e36e840dc134822c6ba20e00",
|
1602 |
+
"sha256:a30d30485eec8a2efe72d639fb9c33f0991416a6ddb490d6f0eef01c9dc79b7a",
|
1603 |
+
"sha256:a492bd9e0075ed5f748ac000ffff581d7652f6cb2cf1d9ec9de3d12270dfc225",
|
1604 |
+
"sha256:a541040a01333994e5a037cb4e2c2b0e2496a2141facf63bbc9b359fe9f5b1dd",
|
1605 |
+
"sha256:a68f863bef8a5301bc7ca4b99f2f8d666b5edcd30dca6234ee6cd541ca8a8f4e",
|
1606 |
+
"sha256:abc4618610ec6fff1c894fc931bc8b57c6d1ad7b8b9acafa685e19a84f521f8b",
|
1607 |
+
"sha256:ad6da19613e53c288bd130fadb91937b0ba849013065ddd377568cdd90611caa",
|
1608 |
+
"sha256:baf0c8c09d5c55f136b62e201886c4b93b4abbdbde0475f67dd8fc278bb403f7",
|
1609 |
+
"sha256:bcbd4403c630755a5f898e6905975c1a8bb2c71a756d399f93811f82b5c0b1b3",
|
1610 |
+
"sha256:bf2561d9077367aa01f3c6caf6132cec84b2b9a481f64f14f35f9e976a353605",
|
1611 |
+
"sha256:c2d3f8cf45deeb6d0faa9df089c0e36e457236fc66aa31e67d3e7c15336e8401",
|
1612 |
+
"sha256:c311554a220a12110d2640ee245d74f07b25cdc0acc04c625ab2bdf708f3bf84",
|
1613 |
+
"sha256:c49a20ddb119ab2d56e7e4d62e43602dff8c397718be4f00474723b40d626a7f",
|
1614 |
+
"sha256:c532571fabd8a23fa12971f432cd17ababa031dee6efbaa8fa31380876593a3e",
|
1615 |
+
"sha256:c5d21d3b08ceb7e544fae04897e211e43fb3500c9b3a8e74d08468b015c7270d",
|
1616 |
+
"sha256:c68b6e6c74ce9056370559196177b9e514ba20611a1ce9545dcd366d8a97cc60",
|
1617 |
+
"sha256:c95201c7425cdff12ed16ff0a15af52c46477935e7589d1dc6ebd24f416c9ed8",
|
1618 |
+
"sha256:ca2735baf43fb540be7d3cf24eb2fc97a395e9e85ec8fae64199f3b2ccbf5c5c",
|
1619 |
+
"sha256:cbd4775e0e88e209cbb4f722d39d057531138dafbd07e36c4b33eb18e29494ef",
|
1620 |
+
"sha256:d0fa54bd453b8b347139b4ef940d717939c6a8966fdbcde2cf8d70316497e292",
|
1621 |
+
"sha256:d526636efb6e727dce5f67eb3437079f1d5d71dd2c0a2b6f48a62791a789764e",
|
1622 |
+
"sha256:d9c8ac0f4ae2de173b6ccc3d0b379d1aa4212f653badc324fb5aa868e304e847",
|
1623 |
+
"sha256:dafc593a6e346fec5520f5dec9d87f4894aa9d584ccad43ce9fdcc363d9e9c34",
|
1624 |
+
"sha256:de7727a57d1241f8c2d53a9f70642f48891514789bbd4daa0f90547b4e0bf70f",
|
1625 |
+
"sha256:e40e9a2c6482f6cce9046693844b33c492f35e57c849a0e104b03234ef3a31f6",
|
1626 |
+
"sha256:e5fb23bf35ef1094d00415bb2116dd862fb919adc4044436508029dafedfd687",
|
1627 |
+
"sha256:e8a34d41c7b392df98fce7c8353ea87cbbbf39239db141096ded00f4e1e75e6e",
|
1628 |
+
"sha256:ea97df5fecf4195ed24aa4c245e5b6cf42527a5818bd7d0d92ba8c7425828861",
|
1629 |
+
"sha256:eb13782c15c2c0f5a74e920a9c9c26da5730830c13809bcb7a32876f1a4fb643",
|
1630 |
+
"sha256:ed1c1354f0f1e4736c2fb6f91e3913b63e38c8873a228a299f656bdaf788e1eb",
|
1631 |
+
"sha256:f88d05187622366b529b25b130a8fad6497d7b6189e82198ce67d3921c3e418c",
|
1632 |
+
"sha256:fd953f8952c825c5d7112e9d64136afc8c7c122b9facc3ec4f9f87591a85e6d1",
|
1633 |
+
"sha256:fe230c754f628f6d266b8d970f8556775fb0a9c05027f807754312af7927b2ed"
|
1634 |
+
],
|
1635 |
+
"markers": "python_version >= '3.9'",
|
1636 |
+
"version": "==0.26.0"
|
1637 |
},
|
1638 |
"markdown-it-py": {
|
1639 |
"hashes": [
|
|
|
1949 |
},
|
1950 |
"narwhals": {
|
1951 |
"hashes": [
|
1952 |
+
"sha256:914cde513487341fe1e3b8cb09d3b79083530141c570e45d42150796b8d87a01",
|
1953 |
+
"sha256:bfd8ab5abb87cfeca9cc72af4af47bf9d73a2f0fda97cffa2223a535bc65b5e5"
|
1954 |
],
|
1955 |
"markers": "python_version >= '3.8'",
|
1956 |
+
"version": "==1.9.0"
|
1957 |
},
|
1958 |
"nbclient": {
|
1959 |
"hashes": [
|
|
|
2048 |
},
|
2049 |
"openai": {
|
2050 |
"hashes": [
|
2051 |
+
"sha256:3987ae027152fc8bea745d60b02c8f4c4a76e1b5c70e73565fa556db6f78c9e6",
|
2052 |
+
"sha256:822dd2051baa3393d0d5406990611975dd6f533020dc9375a34d4fe67e8b75f7"
|
2053 |
],
|
2054 |
"markers": "python_full_version >= '3.7.1'",
|
2055 |
+
"version": "==1.50.2"
|
2056 |
},
|
2057 |
"orjson": {
|
2058 |
"hashes": [
|
|
|
2587 |
"markers": "python_version >= '3.6'",
|
2588 |
"version": "==2.0.7"
|
2589 |
},
|
2590 |
+
"python-levenshtein": {
|
2591 |
+
"hashes": [
|
2592 |
+
"sha256:1d808ba2f9df04aaea5eceba6e73734f2ffeba99d98d2a91078f32276cd041f4",
|
2593 |
+
"sha256:b454dd13708546649f1cba2a0f450dd98e7c1679a92e2d6f0a8b8c013c276e55"
|
2594 |
+
],
|
2595 |
+
"index": "pypi",
|
2596 |
+
"markers": "python_version >= '3.9'",
|
2597 |
+
"version": "==0.26.0"
|
2598 |
+
},
|
2599 |
"python-multipart": {
|
2600 |
"hashes": [
|
2601 |
+
"sha256:045e1f98d719c1ce085ed7f7e1ef9d8ccc8c02ba02b5566d5f7521410ced58cb",
|
2602 |
+
"sha256:43dcf96cf65888a9cd3423544dd0d75ac10f7aa0c3c28a175bbcd00c9ce1aebf"
|
2603 |
],
|
2604 |
"markers": "python_version >= '3.8'",
|
2605 |
+
"version": "==0.0.12"
|
2606 |
},
|
2607 |
"pytz": {
|
2608 |
"hashes": [
|
|
|
2793 |
"markers": "python_version >= '3.8'",
|
2794 |
"version": "==1.11.3"
|
2795 |
},
|
2796 |
+
"rapidfuzz": {
|
2797 |
+
"hashes": [
|
2798 |
+
"sha256:094c26116d55bf9c53abd840d08422f20da78ec4c4723e5024322321caedca48",
|
2799 |
+
"sha256:0ec338d5f4ad8d9339a88a08db5c23e7f7a52c2b2a10510c48a0cef1fb3f0ddc",
|
2800 |
+
"sha256:10fdad800441b9c97d471a937ba7d42625f1b530db05e572f1cb7d401d95c893",
|
2801 |
+
"sha256:116c71a81e046ba56551d8ab68067ca7034d94b617545316d460a452c5c3c289",
|
2802 |
+
"sha256:1af60988d47534246d9525f77288fdd9de652608a4842815d9018570b959acc6",
|
2803 |
+
"sha256:2026651761bf83a0f31495cc0f70840d5c0d54388f41316e3f9cb51bd85e49a5",
|
2804 |
+
"sha256:20bd153aacc244e4c907d772c703fea82754c4db14f8aa64d75ff81b7b8ab92d",
|
2805 |
+
"sha256:26de93e6495078b6af4c4d93a42ca067b16cc0e95699526c82ab7d1025b4d3bf",
|
2806 |
+
"sha256:288f6f6e7410cacb115fb851f3f18bf0e4231eb3f6cb5bd1cec0e7b25c4d039d",
|
2807 |
+
"sha256:2db9187f3acf3cd33424ecdbaad75414c298ecd1513470df7bda885dcb68cc15",
|
2808 |
+
"sha256:2e9be5d05cd960914024412b5406fb75a82f8562f45912ff86255acbfdbfb78e",
|
2809 |
+
"sha256:2fe5783676f0afba4a522c80b15e99dbf4e393c149ab610308a8ef1f04c6bcc8",
|
2810 |
+
"sha256:3084161fc3e963056232ef8d937449a2943852e07101f5a136c8f3cfa4119217",
|
2811 |
+
"sha256:34f213d59219a9c3ca14e94a825f585811a68ac56b4118b4dc388b5b14afc108",
|
2812 |
+
"sha256:399b9b79ccfcf50ca3bad7692bc098bb8eade88d7d5e15773b7f866c91156d0c",
|
2813 |
+
"sha256:43dfc5e733808962a822ff6d9c29f3039a3cfb3620706f5953e17cfe4496724c",
|
2814 |
+
"sha256:457827ba82261aa2ae6ac06a46d0043ab12ba7216b82d87ae1434ec0f29736d6",
|
2815 |
+
"sha256:47aca565a39c9a6067927871973ca827023e8b65ba6c5747f4c228c8d7ddc04f",
|
2816 |
+
"sha256:4bd1a7676ee2a4c8e2f7f2550bece994f9f89e58afb96088964145a83af7408b",
|
2817 |
+
"sha256:4dd3d8443970eaa02ab5ae45ce584b061f2799cd9f7e875190e2617440c1f9d4",
|
2818 |
+
"sha256:4df75b3ebbb8cfdb9bf8b213b168620b88fd92d0c16a8bc9f9234630b282db59",
|
2819 |
+
"sha256:50484d563f8bfa723c74c944b0bb15b9e054db9c889348c8c307abcbee75ab92",
|
2820 |
+
"sha256:50e3d0c72ea15391ba9531ead7f2068a67c5b18a6a365fef3127583aaadd1725",
|
2821 |
+
"sha256:545fc04f2d592e4350f59deb0818886c1b444ffba3bec535b4fbb97191aaf769",
|
2822 |
+
"sha256:56fd15ea8f4c948864fa5ebd9261c67cf7b89a1c517a0caef4df75446a7af18c",
|
2823 |
+
"sha256:5897242d455461f2c5b82d7397b29341fd11e85bf3608a522177071044784ee8",
|
2824 |
+
"sha256:5d350864269d56f51ab81ab750c9259ae5cad3152c0680baef143dcec92206a1",
|
2825 |
+
"sha256:5dd6eec15b13329abe66cc241b484002ecb0e17d694491c944a22410a6a9e5e2",
|
2826 |
+
"sha256:63e4c175cbce8c3adc22dca5e6154588ae673f6c55374d156f3dac732c88d7de",
|
2827 |
+
"sha256:69ef5b363afff7150a1fbe788007e307b9802a2eb6ad92ed51ab94e6ad2674c6",
|
2828 |
+
"sha256:6b62af27e65bb39276a66533655a2fa3c60a487b03935721c45b7809527979be",
|
2829 |
+
"sha256:6cd67d3d017296d98ff505529104299f78433e4b8af31b55003d901a62bbebe9",
|
2830 |
+
"sha256:718c9bd369288aca5fa929df6dbf66fdbe9768d90940a940c0b5cdc96ade4309",
|
2831 |
+
"sha256:76a35e9e19a7c883c422ffa378e9a04bc98cb3b29648c5831596401298ee51e6",
|
2832 |
+
"sha256:7947a425d1be3e744707ee58c6cb318b93a56e08f080722dcc0347e0b7a1bb9a",
|
2833 |
+
"sha256:79e7f98525b60b3c14524e0a4e1fedf7654657b6e02eb25f1be897ab097706f3",
|
2834 |
+
"sha256:7c4c82b1689b23b1b5e6a603164ed2be41b6f6de292a698b98ba2381e889eb9d",
|
2835 |
+
"sha256:7dc87073ba3a40dd65591a2100aa71602107443bf10770579ff9c8a3242edb94",
|
2836 |
+
"sha256:7f3a6aa6e70fc27e4ff5c479f13cc9fc26a56347610f5f8b50396a0d344c5f55",
|
2837 |
+
"sha256:803f255f10d63420979b1909ef976e7d30dec42025c9b067fc1d2040cc365a7e",
|
2838 |
+
"sha256:884453860de029380dded8f3c1918af2d8eb5adf8010261645c7e5c88c2b5428",
|
2839 |
+
"sha256:886882367dbc985f5736356105798f2ae6e794e671fc605476cbe2e73838a9bb",
|
2840 |
+
"sha256:8a6405d34c394c65e4f73a1d300c001f304f08e529d2ed6413b46ee3037956eb",
|
2841 |
+
"sha256:916a6abf3632e592b937c3d04c00a6efadd8fd30539cdcd4e6e4d92be7ca5d90",
|
2842 |
+
"sha256:9178277f72d144a6c7704d7ae7fa15b7b86f0f0796f0e1049c7b4ef748a662ef",
|
2843 |
+
"sha256:949b5e9eeaa4ecb4c7e9c2a4689dddce60929dd1ff9c76a889cdbabe8bbf2171",
|
2844 |
+
"sha256:94c48b4a2a4b1d22246f48e2b11cae01ec7d23f0c9123f8bb822839ad79d0a88",
|
2845 |
+
"sha256:96ad46f5f56f70fab2be9e5f3165a21be58d633b90bf6e67fc52a856695e4bcf",
|
2846 |
+
"sha256:98f6ebe28831a482981ecfeedc8237047878424ad0c1add2c7f366ba44a20452",
|
2847 |
+
"sha256:9eac95b4278bd53115903d89118a2c908398ee8bdfd977ae844f1bd2b02b917c",
|
2848 |
+
"sha256:a425a0a868cf8e9c6e93e1cda4b758cdfd314bb9a4fc916c5742c934e3613480",
|
2849 |
+
"sha256:a68e3724b7dab761c01816aaa64b0903734d999d5589daf97c14ef5cc0629a8e",
|
2850 |
+
"sha256:a86d5d1d75e61df060c1e56596b6b0a4422a929dff19cc3dbfd5eee762c86b61",
|
2851 |
+
"sha256:a9b8f51e08c3f983d857c3889930af9ddecc768453822076683664772d87e374",
|
2852 |
+
"sha256:aadce42147fc09dcef1afa892485311e824c050352e1aa6e47f56b9b27af4cf0",
|
2853 |
+
"sha256:ae7966f205b5a7fde93b44ca8fed37c1c8539328d7f179b1197de34eceaceb5f",
|
2854 |
+
"sha256:b0445fa9880ead81f5a7d0efc0b9c977a947d8052c43519aceeaf56eabaf6843",
|
2855 |
+
"sha256:b0732343cdc4273b5921268026dd7266f75466eb21873cb7635a200d9d9c3fac",
|
2856 |
+
"sha256:b11a127ac590fc991e8a02c2d7e1ac86e8141c92f78546f18b5c904064a0552c",
|
2857 |
+
"sha256:b33e13e537e3afd1627d421a142a12bbbe601543558a391a6fae593356842f6e",
|
2858 |
+
"sha256:b5363932a5aab67010ae1a6205c567d1ef256fb333bc23c27582481606be480c",
|
2859 |
+
"sha256:b54853c2371bf0e38d67da379519deb6fbe70055efb32f6607081641af3dc752",
|
2860 |
+
"sha256:b67cc21a14327a0eb0f47bc3d7e59ec08031c7c55220ece672f9476e7a8068d3",
|
2861 |
+
"sha256:bb0013795b40db5cf361e6f21ee7cda09627cf294977149b50e217d7fe9a2f03",
|
2862 |
+
"sha256:bd393683129f446a75d8634306aed7e377627098a1286ff3af2a4f1736742820",
|
2863 |
+
"sha256:c038b9939da3035afb6cb2f465f18163e8f070aba0482923ecff9443def67178",
|
2864 |
+
"sha256:c50bc308fa29767ed8f53a8d33b7633a9e14718ced038ed89d41b886e301da32",
|
2865 |
+
"sha256:c582c46b1bb0b19f1a5f4c1312f1b640c21d78c371a6615c34025b16ee56369b",
|
2866 |
+
"sha256:c77a7330dd15c7eb5fd3631dc646fc96327f98db8181138766bd14d3e905f0ba",
|
2867 |
+
"sha256:c9e29a13d2fd9be3e7d8c26c7ef4ba60b5bc7efbc9dbdf24454c7e9ebba31768",
|
2868 |
+
"sha256:ca366c2e2a54e2f663f4529b189fdeb6e14d419b1c78b754ec1744f3c01070d4",
|
2869 |
+
"sha256:ce19887268e90ee81a3957eef5e46a70ecc000713796639f83828b950343f49e",
|
2870 |
+
"sha256:cffbc50e0767396ed483900900dd58ce4351bc0d40e64bced8694bd41864cc71",
|
2871 |
+
"sha256:d29d1b9857c65f8cb3a29270732e1591b9bacf89de9d13fa764f79f07d8f1fd2",
|
2872 |
+
"sha256:d4688862f957c8629d557d084f20b2d803f8738b6c4066802a0b1cc472e088d9",
|
2873 |
+
"sha256:e5ddb2388610799fc46abe389600625058f2a73867e63e20107c5ad5ffa57c47",
|
2874 |
+
"sha256:e89605afebbd2d4b045bccfdc12a14b16fe8ccbae05f64b4b4c64a97dad1c891",
|
2875 |
+
"sha256:ea2da0459b951ee461bd4e02b8904890bd1c4263999d291c5cd01e6620177ad4",
|
2876 |
+
"sha256:ec9139baa3f85b65adc700eafa03ed04995ca8533dd56c924f0e458ffec044ab",
|
2877 |
+
"sha256:eda4c661e68dddd56c8fbfe1ca35e40dd2afd973f7ebb1605f4d151edc63dff8",
|
2878 |
+
"sha256:f0a547e4350d1fa32624d3eab51eff8cf329f4cae110b4ea0402486b1da8be40",
|
2879 |
+
"sha256:f39a2a5ded23b9b9194ec45740dce57177b80f86c6d8eba953d3ff1a25c97766",
|
2880 |
+
"sha256:f3a0bda83c18195c361b5500377d0767749f128564ca95b42c8849fd475bb327",
|
2881 |
+
"sha256:f744b5eb1469bf92dd143d36570d2bdbbdc88fe5cb0b5405e53dd34f479cbd8a",
|
2882 |
+
"sha256:f9f0bbfb6787b97c51516f3ccf97737d504db5d239ad44527673b81f598b84ab",
|
2883 |
+
"sha256:fa9720e56663cc3649d62b4b5f3145e94b8f5611e8a8e1b46507777249d46aad",
|
2884 |
+
"sha256:fb6ec40cef63b1922083d33bfef2f91fc0b0bc07b5b09bfee0b0f1717d558292",
|
2885 |
+
"sha256:fe5231e8afd069c742ac5b4f96344a0fe4aff52df8e53ef87faebf77f827822c"
|
2886 |
+
],
|
2887 |
+
"markers": "python_version >= '3.9'",
|
2888 |
+
"version": "==3.10.0"
|
2889 |
+
},
|
2890 |
"referencing": {
|
2891 |
"hashes": [
|
2892 |
"sha256:25b42124a6c8b632a425174f24087783efb348a6f1e0008e63cd4466fedf703c",
|
|
|
3021 |
},
|
3022 |
"rich": {
|
3023 |
"hashes": [
|
3024 |
+
"sha256:097cffdf85db1babe30cc7deba5ab3a29e1b9885047dab24c57e9a7f8a9c1466",
|
3025 |
+
"sha256:b340e739f30aa58921dc477b8adaa9ecdb7cecc217be01d93730ee1bc8aa83be"
|
3026 |
],
|
3027 |
+
"markers": "python_full_version >= '3.8.0'",
|
3028 |
+
"version": "==13.9.1"
|
3029 |
},
|
3030 |
"rpds-py": {
|
3031 |
"hashes": [
|
|
|
3138 |
},
|
3139 |
"ruff": {
|
3140 |
"hashes": [
|
3141 |
+
"sha256:007dee844738c3d2e6c24ab5bc7d43c99ba3e1943bd2d95d598582e9c1b27750",
|
3142 |
+
"sha256:1085c455d1b3fdb8021ad534379c60353b81ba079712bce7a900e834859182fa",
|
3143 |
+
"sha256:27b87e1801e786cd6ede4ada3faa5e254ce774de835e6723fd94551464c56b8c",
|
3144 |
+
"sha256:5fd0d4b7b1457c49e435ee1e437900ced9b35cb8dc5178921dfb7d98d65a08d0",
|
3145 |
+
"sha256:677e03c00f37c66cea033274295a983c7c546edea5043d0c798833adf4cf4c6f",
|
3146 |
+
"sha256:6cfb227b932ba8ef6e56c9f875d987973cd5e35bc5d05f5abf045af78ad8e098",
|
3147 |
+
"sha256:6ef0411eccfc3909269fed47c61ffebdcb84a04504bafa6b6df9b85c27e813b0",
|
3148 |
+
"sha256:6f5a2f17c7d32991169195d52a04c95b256378bbf0de8cb98478351eb70d526f",
|
3149 |
+
"sha256:70edf6a93b19481affd287d696d9e311388d808671bc209fb8907b46a8c3af44",
|
3150 |
+
"sha256:77944bca110ff0a43b768f05a529fecd0706aac7bcce36d7f1eeb4cbfca5f0f2",
|
3151 |
+
"sha256:792213f7be25316f9b46b854df80a77e0da87ec66691e8f012f887b4a671ab5a",
|
3152 |
+
"sha256:8d3bb2e3fbb9875172119021a13eed38849e762499e3cfde9588e4b4d70968dc",
|
3153 |
+
"sha256:9f1476236b3eacfacfc0f66aa9e6cd39f2a624cb73ea99189556015f27c0bdeb",
|
3154 |
+
"sha256:a5bf44b1aa0adaf6d9d20f86162b34f7c593bfedabc51239953e446aefc8ce18",
|
3155 |
+
"sha256:cd48f945da2a6334f1793d7f701725a76ba93bf3d73c36f6b21fb04d5338dcf5",
|
3156 |
+
"sha256:ce60058d3cdd8490e5e5471ef086b3f1e90ab872b548814e35930e21d848c9ce",
|
3157 |
+
"sha256:ec0517dc0f37cad14a5319ba7bba6e7e339d03fbf967a6d69b0907d61be7a263",
|
3158 |
+
"sha256:f8034b19b993e9601f2ddf2c517451e17a6ab5cdb1c13fdff50c1442a7171d87"
|
3159 |
],
|
3160 |
"markers": "sys_platform != 'emscripten'",
|
3161 |
+
"version": "==0.6.8"
|
3162 |
},
|
3163 |
"semantic-version": {
|
3164 |
"hashes": [
|
|
|
3467 |
},
|
3468 |
"uvicorn": {
|
3469 |
"hashes": [
|
3470 |
+
"sha256:13bc21373d103859f68fe739608e2eb054a816dea79189bc3ca08ea89a275906",
|
3471 |
+
"sha256:cac7be4dd4d891c363cd942160a7b02e69150dcbc7a36be04d5f4af4b17c8ced"
|
3472 |
],
|
3473 |
"markers": "sys_platform != 'emscripten'",
|
3474 |
+
"version": "==0.31.0"
|
3475 |
},
|
3476 |
"wcwidth": {
|
3477 |
"hashes": [
|
|
|
3590 |
},
|
3591 |
"yarl": {
|
3592 |
"hashes": [
|
3593 |
+
"sha256:08d7148ff11cb8e886d86dadbfd2e466a76d5dd38c7ea8ebd9b0e07946e76e4b",
|
3594 |
+
"sha256:098b870c18f1341786f290b4d699504e18f1cd050ed179af8123fd8232513424",
|
3595 |
+
"sha256:11b3ca8b42a024513adce810385fcabdd682772411d95bbbda3b9ed1a4257644",
|
3596 |
+
"sha256:1891d69a6ba16e89473909665cd355d783a8a31bc84720902c5911dbb6373465",
|
3597 |
+
"sha256:1bbb418f46c7f7355084833051701b2301092e4611d9e392360c3ba2e3e69f88",
|
3598 |
+
"sha256:1d0828e17fa701b557c6eaed5edbd9098eb62d8838344486248489ff233998b8",
|
3599 |
+
"sha256:1d8e3ca29f643dd121f264a7c89f329f0fcb2e4461833f02de6e39fef80f89da",
|
3600 |
+
"sha256:1fa56f34b2236f5192cb5fceba7bbb09620e5337e0b6dfe2ea0ddbd19dd5b154",
|
3601 |
+
"sha256:216a6785f296169ed52cd7dcdc2612f82c20f8c9634bf7446327f50398732a51",
|
3602 |
+
"sha256:22b739f99c7e4787922903f27a892744189482125cc7b95b747f04dd5c83aa9f",
|
3603 |
+
"sha256:2430cf996113abe5aee387d39ee19529327205cda975d2b82c0e7e96e5fdabdc",
|
3604 |
+
"sha256:269c201bbc01d2cbba5b86997a1e0f73ba5e2f471cfa6e226bcaa7fd664b598d",
|
3605 |
+
"sha256:298c1eecfd3257aa16c0cb0bdffb54411e3e831351cd69e6b0739be16b1bdaa8",
|
3606 |
+
"sha256:2a93a4557f7fc74a38ca5a404abb443a242217b91cd0c4840b1ebedaad8919d4",
|
3607 |
+
"sha256:2b2442a415a5f4c55ced0fade7b72123210d579f7d950e0b5527fc598866e62c",
|
3608 |
+
"sha256:2db874dd1d22d4c2c657807562411ffdfabec38ce4c5ce48b4c654be552759dc",
|
3609 |
+
"sha256:309c104ecf67626c033845b860d31594a41343766a46fa58c3309c538a1e22b2",
|
3610 |
+
"sha256:31497aefd68036d8e31bfbacef915826ca2e741dbb97a8d6c7eac66deda3b606",
|
3611 |
+
"sha256:373f16f38721c680316a6a00ae21cc178e3a8ef43c0227f88356a24c5193abd6",
|
3612 |
+
"sha256:396e59b8de7e4d59ff5507fb4322d2329865b909f29a7ed7ca37e63ade7f835c",
|
3613 |
+
"sha256:3bb83a0f12701c0b91112a11148b5217617982e1e466069d0555be9b372f2734",
|
3614 |
+
"sha256:3de86547c820e4f4da4606d1c8ab5765dd633189791f15247706a2eeabc783ae",
|
3615 |
+
"sha256:3fdbf0418489525231723cdb6c79e7738b3cbacbaed2b750cb033e4ea208f220",
|
3616 |
+
"sha256:40c6e73c03a6befb85b72da213638b8aaa80fe4136ec8691560cf98b11b8ae6e",
|
3617 |
+
"sha256:44a4c40a6f84e4d5955b63462a0e2a988f8982fba245cf885ce3be7618f6aa7d",
|
3618 |
+
"sha256:44b07e1690f010c3c01d353b5790ec73b2f59b4eae5b0000593199766b3f7a5c",
|
3619 |
+
"sha256:45d23c4668d4925688e2ea251b53f36a498e9ea860913ce43b52d9605d3d8177",
|
3620 |
+
"sha256:45f209fb4bbfe8630e3d2e2052535ca5b53d4ce2d2026bed4d0637b0416830da",
|
3621 |
+
"sha256:4afdf84610ca44dcffe8b6c22c68f309aff96be55f5ea2fa31c0c225d6b83e23",
|
3622 |
+
"sha256:4feaaa4742517eaceafcbe74595ed335a494c84634d33961214b278126ec1485",
|
3623 |
+
"sha256:576365c9f7469e1f6124d67b001639b77113cfd05e85ce0310f5f318fd02fe85",
|
3624 |
+
"sha256:5820bd4178e6a639b3ef1db8b18500a82ceab6d8b89309e121a6859f56585b05",
|
3625 |
+
"sha256:5989a38ba1281e43e4663931a53fbf356f78a0325251fd6af09dd03b1d676a09",
|
3626 |
+
"sha256:5a9bacedbb99685a75ad033fd4de37129449e69808e50e08034034c0bf063f99",
|
3627 |
+
"sha256:5b66c87da3c6da8f8e8b648878903ca54589038a0b1e08dde2c86d9cd92d4ac9",
|
3628 |
+
"sha256:5c5e32fef09ce101fe14acd0f498232b5710effe13abac14cd95de9c274e689e",
|
3629 |
+
"sha256:658e8449b84b92a4373f99305de042b6bd0d19bf2080c093881e0516557474a5",
|
3630 |
+
"sha256:6a2acde25be0cf9be23a8f6cbd31734536a264723fca860af3ae5e89d771cd71",
|
3631 |
+
"sha256:6a5185ad722ab4dd52d5fb1f30dcc73282eb1ed494906a92d1a228d3f89607b0",
|
3632 |
+
"sha256:6b7f6e699304717fdc265a7e1922561b02a93ceffdaefdc877acaf9b9f3080b8",
|
3633 |
+
"sha256:703b0f584fcf157ef87816a3c0ff868e8c9f3c370009a8b23b56255885528f10",
|
3634 |
+
"sha256:7055bbade838d68af73aea13f8c86588e4bcc00c2235b4b6d6edb0dbd174e246",
|
3635 |
+
"sha256:78f271722423b2d4851cf1f4fa1a1c4833a128d020062721ba35e1a87154a049",
|
3636 |
+
"sha256:7addd26594e588503bdef03908fc207206adac5bd90b6d4bc3e3cf33a829f57d",
|
3637 |
+
"sha256:81bad32c8f8b5897c909bf3468bf601f1b855d12f53b6af0271963ee67fff0d2",
|
3638 |
+
"sha256:82e692fb325013a18a5b73a4fed5a1edaa7c58144dc67ad9ef3d604eccd451ad",
|
3639 |
+
"sha256:84bbcdcf393139f0abc9f642bf03f00cac31010f3034faa03224a9ef0bb74323",
|
3640 |
+
"sha256:86c438ce920e089c8c2388c7dcc8ab30dfe13c09b8af3d306bcabb46a053d6f7",
|
3641 |
+
"sha256:8be8cdfe20787e6a5fcbd010f8066227e2bb9058331a4eccddec6c0db2bb85b2",
|
3642 |
+
"sha256:8c723c91c94a3bc8033dd2696a0f53e5d5f8496186013167bddc3fb5d9df46a3",
|
3643 |
+
"sha256:8ca53632007c69ddcdefe1e8cbc3920dd88825e618153795b57e6ebcc92e752a",
|
3644 |
+
"sha256:8f722f30366474a99745533cc4015b1781ee54b08de73260b2bbe13316079851",
|
3645 |
+
"sha256:942c80a832a79c3707cca46bd12ab8aa58fddb34b1626d42b05aa8f0bcefc206",
|
3646 |
+
"sha256:94a993f976cdcb2dc1b855d8b89b792893220db8862d1a619efa7451817c836b",
|
3647 |
+
"sha256:95c6737f28069153c399d875317f226bbdea939fd48a6349a3b03da6829fb550",
|
3648 |
+
"sha256:9915300fe5a0aa663c01363db37e4ae8e7c15996ebe2c6cce995e7033ff6457f",
|
3649 |
+
"sha256:9a18595e6a2ee0826bf7dfdee823b6ab55c9b70e8f80f8b77c37e694288f5de1",
|
3650 |
+
"sha256:9c8854b9f80693d20cec797d8e48a848c2fb273eb6f2587b57763ccba3f3bd4b",
|
3651 |
+
"sha256:9cec42a20eae8bebf81e9ce23fb0d0c729fc54cf00643eb251ce7c0215ad49fe",
|
3652 |
+
"sha256:9d2e1626be8712333a9f71270366f4a132f476ffbe83b689dd6dc0d114796c74",
|
3653 |
+
"sha256:9d74f3c335cfe9c21ea78988e67f18eb9822f5d31f88b41aec3a1ec5ecd32da5",
|
3654 |
+
"sha256:9fb4134cc6e005b99fa29dbc86f1ea0a298440ab6b07c6b3ee09232a3b48f495",
|
3655 |
+
"sha256:a0ae6637b173d0c40b9c1462e12a7a2000a71a3258fa88756a34c7d38926911c",
|
3656 |
+
"sha256:a31d21089894942f7d9a8df166b495101b7258ff11ae0abec58e32daf8088813",
|
3657 |
+
"sha256:a3442c31c11088e462d44a644a454d48110f0588de830921fd201060ff19612a",
|
3658 |
+
"sha256:ab9524e45ee809a083338a749af3b53cc7efec458c3ad084361c1dbf7aaf82a2",
|
3659 |
+
"sha256:b1481c048fe787f65e34cb06f7d6824376d5d99f1231eae4778bbe5c3831076d",
|
3660 |
+
"sha256:b8c837ab90c455f3ea8e68bee143472ee87828bff19ba19776e16ff961425b57",
|
3661 |
+
"sha256:bbf2c3f04ff50f16404ce70f822cdc59760e5e2d7965905f0e700270feb2bbfc",
|
3662 |
+
"sha256:bbf9c2a589be7414ac4a534d54e4517d03f1cbb142c0041191b729c2fa23f320",
|
3663 |
+
"sha256:bcd5bf4132e6a8d3eb54b8d56885f3d3a38ecd7ecae8426ecf7d9673b270de43",
|
3664 |
+
"sha256:c14c16831b565707149c742d87a6203eb5597f4329278446d5c0ae7a1a43928e",
|
3665 |
+
"sha256:c49f3e379177f4477f929097f7ed4b0622a586b0aa40c07ac8c0f8e40659a1ac",
|
3666 |
+
"sha256:c92b89bffc660f1274779cb6fbb290ec1f90d6dfe14492523a0667f10170de26",
|
3667 |
+
"sha256:cd66152561632ed4b2a9192e7f8e5a1d41e28f58120b4761622e0355f0fe034c",
|
3668 |
+
"sha256:cf1ad338620249f8dd6d4b6a91a69d1f265387df3697ad5dc996305cf6c26fb2",
|
3669 |
+
"sha256:d07b52c8c450f9366c34aa205754355e933922c79135125541daae6cbf31c799",
|
3670 |
+
"sha256:d0d12fe78dcf60efa205e9a63f395b5d343e801cf31e5e1dda0d2c1fb618073d",
|
3671 |
+
"sha256:d4ee1d240b84e2f213565f0ec08caef27a0e657d4c42859809155cf3a29d1735",
|
3672 |
+
"sha256:d959fe96e5c2712c1876d69af0507d98f0b0e8d81bee14cfb3f6737470205419",
|
3673 |
+
"sha256:dcaef817e13eafa547cdfdc5284fe77970b891f731266545aae08d6cce52161e",
|
3674 |
+
"sha256:df4e82e68f43a07735ae70a2d84c0353e58e20add20ec0af611f32cd5ba43fb4",
|
3675 |
+
"sha256:ec8cfe2295f3e5e44c51f57272afbd69414ae629ec7c6b27f5a410efc78b70a0",
|
3676 |
+
"sha256:ec9dd328016d8d25702a24ee274932aebf6be9787ed1c28d021945d264235b3c",
|
3677 |
+
"sha256:ef9b85fa1bc91c4db24407e7c4da93a5822a73dd4513d67b454ca7064e8dc6a3",
|
3678 |
+
"sha256:f3bf60444269345d712838bb11cc4eadaf51ff1a364ae39ce87a5ca8ad3bb2c8",
|
3679 |
+
"sha256:f452cc1436151387d3d50533523291d5f77c6bc7913c116eb985304abdbd9ec9",
|
3680 |
+
"sha256:f7917697bcaa3bc3e83db91aa3a0e448bf5cde43c84b7fc1ae2427d2417c0224",
|
3681 |
+
"sha256:f90575e9fe3aae2c1e686393a9689c724cd00045275407f71771ae5d690ccf38",
|
3682 |
+
"sha256:fb382fd7b4377363cc9f13ba7c819c3c78ed97c36a82f16f3f92f108c787cbbf",
|
3683 |
+
"sha256:fb9f59f3848edf186a76446eb8bcf4c900fe147cb756fbbd730ef43b2e67c6a7",
|
3684 |
+
"sha256:fc2931ac9ce9c61c9968989ec831d3a5e6fcaaff9474e7cfa8de80b7aff5a093"
|
3685 |
+
],
|
3686 |
+
"markers": "python_version >= '3.8'",
|
3687 |
+
"version": "==1.13.1"
|
3688 |
}
|
3689 |
},
|
3690 |
"develop": {}
|
app2.py
ADDED
@@ -0,0 +1,187 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import gradio as gr
|
2 |
+
import os
|
3 |
+
from langchain_core.messages import HumanMessage
|
4 |
+
import src.srf_bot as sb
|
5 |
+
import prompts.system_prompts as sp
|
6 |
+
|
7 |
+
# Initialize chatbot
|
8 |
+
chatbot = sb.SRFChatbot()
|
9 |
+
|
10 |
+
# Define the respond function
|
11 |
+
def respond(query, history, custom_instructions, use_custom_instructions, selected_system_prompt):
|
12 |
+
formatted_query = [HumanMessage(content=query)]
|
13 |
+
|
14 |
+
# Set the system instructions based on user input or dropdown
|
15 |
+
if use_custom_instructions:
|
16 |
+
chatbot.config["system_prompt"] = custom_instructions # Use custom instructions
|
17 |
+
else:
|
18 |
+
chatbot.config["system_prompt"] = sp.system_prompt_templates[selected_system_prompt] # Use selected from dropdown
|
19 |
+
|
20 |
+
# Invoke the graph with properly formatted input
|
21 |
+
result = chatbot.graph.invoke({"messages": formatted_query}, chatbot.config)
|
22 |
+
|
23 |
+
# Get the passages from the graph and append to history if documents exist
|
24 |
+
state = chatbot.graph.get_state(config=chatbot.config).values
|
25 |
+
documents = state.get("documents")
|
26 |
+
passages = ''
|
27 |
+
if documents and len(documents) > 0:
|
28 |
+
for d in documents:
|
29 |
+
passages += f'<b>{d.metadata["publication_name"]} - {d.metadata["chapter_name"]}</b>\n{d.page_content}\n\n'
|
30 |
+
history.append((f'Passages: {query}', passages))
|
31 |
+
|
32 |
+
# Extract the assistant's response and append to history
|
33 |
+
response = result["messages"][-1].content
|
34 |
+
system_message_dropdown = state.get("system_message_dropdown")
|
35 |
+
history.append((query, f"<i>[{system_message_dropdown}]</i>\n" + response))
|
36 |
+
|
37 |
+
return history
|
38 |
+
|
39 |
+
|
40 |
+
# Gradio interface with black and grey color scheme
|
41 |
+
with gr.Blocks(css="""
|
42 |
+
.gradio-container {
|
43 |
+
background-color: #F0F0F0;
|
44 |
+
font-family: 'Arial', sans-serif;
|
45 |
+
}
|
46 |
+
h1, h2, p {
|
47 |
+
color: black;
|
48 |
+
}
|
49 |
+
h1 {
|
50 |
+
font-size: 32px;
|
51 |
+
text-align: left;
|
52 |
+
}
|
53 |
+
h2 {
|
54 |
+
font-size: 24px;
|
55 |
+
}
|
56 |
+
p {
|
57 |
+
font-size: 18px;
|
58 |
+
margin-bottom: 15px;
|
59 |
+
}
|
60 |
+
.gr-button {
|
61 |
+
background-color: #333333;
|
62 |
+
color: white;
|
63 |
+
font-size: 18px;
|
64 |
+
padding: 10px;
|
65 |
+
}
|
66 |
+
.gr-textbox textarea {
|
67 |
+
font-size: 18px;
|
68 |
+
color: black;
|
69 |
+
}
|
70 |
+
.gr-dropdown {
|
71 |
+
font-size: 18px;
|
72 |
+
color: black;
|
73 |
+
}
|
74 |
+
.source-box {
|
75 |
+
background-color: white;
|
76 |
+
padding: 10px;
|
77 |
+
border-radius: 8px;
|
78 |
+
margin-top: 20px;
|
79 |
+
color: black;
|
80 |
+
border: 1px solid #D0D0D0;
|
81 |
+
}
|
82 |
+
|
83 |
+
@media (prefers-color-scheme: dark) {
|
84 |
+
.gradio-container {
|
85 |
+
background-color: #1e1e1e;
|
86 |
+
color: white;
|
87 |
+
}
|
88 |
+
h1, h2, p {
|
89 |
+
color: white;
|
90 |
+
}
|
91 |
+
.gr-textbox textarea {
|
92 |
+
background-color: #333333;
|
93 |
+
color: white;
|
94 |
+
}
|
95 |
+
.gr-button {
|
96 |
+
background-color: #555555;
|
97 |
+
color: white;
|
98 |
+
}
|
99 |
+
.gr-dropdown {
|
100 |
+
background-color: #333333;
|
101 |
+
color: white;
|
102 |
+
}
|
103 |
+
.source-box {
|
104 |
+
background-color: #333333;
|
105 |
+
color: white;
|
106 |
+
border: 1px solid #555555;
|
107 |
+
}
|
108 |
+
}
|
109 |
+
|
110 |
+
@media (max-width: 600px) {
|
111 |
+
.gr-row { flex-direction: column !important; }
|
112 |
+
.gr-column { width: 100% !important; }
|
113 |
+
}
|
114 |
+
""") as demo:
|
115 |
+
|
116 |
+
# Title
|
117 |
+
gr.Markdown("# SRF Chatbot")
|
118 |
+
|
119 |
+
with gr.Row(elem_classes="gr-row"):
|
120 |
+
with gr.Column(scale=4, elem_classes="gr-column"):
|
121 |
+
# Chatbot interface
|
122 |
+
chatbot_output = gr.Chatbot(height=600) # Increased height for longer chat interface
|
123 |
+
user_input = gr.Textbox(placeholder="Type your question here...", label="Your Question", value="What is the meaning of life?")
|
124 |
+
submit_button = gr.Button("Submit")
|
125 |
+
|
126 |
+
with gr.Column(scale=1, elem_classes="gr-column"):
|
127 |
+
# Dropdown to select system prompts
|
128 |
+
system_prompt_dropdown = gr.Dropdown(
|
129 |
+
choices=list(sp.system_prompt_templates.keys()),
|
130 |
+
label="Select Chatbot Instructions",
|
131 |
+
value=list(sp.system_prompt_templates.keys())[0],
|
132 |
+
elem_classes="gr-dropdown"
|
133 |
+
)
|
134 |
+
|
135 |
+
# Display the selected system prompt
|
136 |
+
system_prompt_display = gr.Textbox(
|
137 |
+
value=sp.system_prompt_templates[list(sp.system_prompt_templates.keys())[0]],
|
138 |
+
label="Current Chatbot Instructions",
|
139 |
+
lines=5,
|
140 |
+
interactive=False
|
141 |
+
)
|
142 |
+
|
143 |
+
# Custom instructions input
|
144 |
+
custom_instructions = gr.Textbox(
|
145 |
+
placeholder="Write your own instructions here...",
|
146 |
+
label="Or Write Your Own Instructions",
|
147 |
+
lines=5
|
148 |
+
)
|
149 |
+
|
150 |
+
# Toggle between using dropdown or custom instructions
|
151 |
+
use_custom_instructions = gr.Checkbox(
|
152 |
+
label="Use Custom Instructions",
|
153 |
+
value=False
|
154 |
+
)
|
155 |
+
|
156 |
+
# Sources box
|
157 |
+
gr.Markdown("""
|
158 |
+
<div class="source-box">
|
159 |
+
<strong>Available sources:</strong>
|
160 |
+
<ul>
|
161 |
+
<li>Journey to Self-Realization</li>
|
162 |
+
<li>The Second Coming of Christ</li>
|
163 |
+
<li>Autobiography of a Yogi</li>
|
164 |
+
</ul>
|
165 |
+
</div>
|
166 |
+
""")
|
167 |
+
|
168 |
+
# Update system prompt display when a new prompt is selected
|
169 |
+
system_prompt_dropdown.change(
|
170 |
+
fn=lambda x: sp.system_prompt_templates[x],
|
171 |
+
inputs=[system_prompt_dropdown],
|
172 |
+
outputs=[system_prompt_display]
|
173 |
+
)
|
174 |
+
|
175 |
+
# Submit button logic to handle chatbot conversation
|
176 |
+
submit_button.click(
|
177 |
+
fn=respond,
|
178 |
+
inputs=[user_input, chatbot_output, custom_instructions, use_custom_instructions, system_prompt_dropdown],
|
179 |
+
outputs=[chatbot_output]
|
180 |
+
)
|
181 |
+
|
182 |
+
# Access the secrets
|
183 |
+
username = os.getenv("USERNAME")
|
184 |
+
password = os.getenv("PASSWORD")
|
185 |
+
|
186 |
+
# Launch the interface
|
187 |
+
demo.launch(share=True, auth=(username, password), debug=True)
|
prompts/quote_finder_prompts.py
ADDED
@@ -0,0 +1,28 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
from langchain_core.prompts import ChatPromptTemplate, SystemMessagePromptTemplate, HumanMessagePromptTemplate
|
2 |
+
|
3 |
+
system_template = '''The following are passages from the books and teachings of Paramhansa Yogananda, his disciples, or other
|
4 |
+
sources related to the Self-Realization Fellowship / Yogoda Satsanga Society.
|
5 |
+
Extract the most relevant quotes from the given passage that directly address the user's original query and are the most helpful and/or insipriational to the user.
|
6 |
+
Ensure that quotes are verbatim and provide specific information related to the query.
|
7 |
+
'''
|
8 |
+
|
9 |
+
system_message = SystemMessagePromptTemplate.from_template(system_template)
|
10 |
+
|
11 |
+
|
12 |
+
human_message_template = '''Here is the original query: {query} \n\n
|
13 |
+
|
14 |
+
Here is the passage: {passage}
|
15 |
+
|
16 |
+
Now think step-by-step and follow the instructions carefully:
|
17 |
+
1. Read the original query carefully.
|
18 |
+
2. Analyze the given passage and identify sections that directly address the query.
|
19 |
+
3. Extract the most relevant quotes, ensuring they are verbatim from the passage.
|
20 |
+
4. Rank the quotes based on their relevance and importance to the query.
|
21 |
+
5. Return the top 3 most relevant quotes in the specified format.'''
|
22 |
+
|
23 |
+
human_message = HumanMessagePromptTemplate.from_template(human_message_template)
|
24 |
+
|
25 |
+
|
26 |
+
quote_finder_prompt = ChatPromptTemplate.from_messages([
|
27 |
+
system_message, human_message
|
28 |
+
])
|
src/passage_finder.py
ADDED
@@ -0,0 +1,236 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import sys
|
2 |
+
import os
|
3 |
+
import uuid
|
4 |
+
from dotenv import load_dotenv
|
5 |
+
from typing import Annotated, List, Tuple
|
6 |
+
from typing_extensions import TypedDict
|
7 |
+
from langchain.tools import tool, BaseTool
|
8 |
+
from langchain.schema import Document
|
9 |
+
from langgraph.graph import StateGraph, START, END, MessagesState
|
10 |
+
from langgraph.graph.message import add_messages
|
11 |
+
from langgraph.prebuilt import ToolNode, tools_condition
|
12 |
+
from langgraph.checkpoint.memory import MemorySaver
|
13 |
+
from langchain_openai import ChatOpenAI
|
14 |
+
from langchain_core.prompts import ChatPromptTemplate, SystemMessagePromptTemplate, AIMessagePromptTemplate, HumanMessagePromptTemplate
|
15 |
+
# from langchain.schema import SystemMessage, HumanMessage, AIMessage, ToolMessage
|
16 |
+
from langchain_core.messages import HumanMessage, AIMessage, ToolMessage, SystemMessage
|
17 |
+
from langchain.retrievers.multi_query import MultiQueryRetriever
|
18 |
+
import json
|
19 |
+
from langchain_core.messages import BaseMessage
|
20 |
+
from pydantic import BaseModel
|
21 |
+
import re
|
22 |
+
from fuzzywuzzy import fuzz
|
23 |
+
|
24 |
+
|
25 |
+
|
26 |
+
sys.path.append(os.path.abspath('..'))
|
27 |
+
|
28 |
+
|
29 |
+
import src.utils.qdrant_manager as qm
|
30 |
+
import prompts.system_prompts as sp
|
31 |
+
import prompts.quote_finder_prompts as qfp
|
32 |
+
load_dotenv('/Users/nadaa/Documents/code/py_innovations/srf_chatbot_v2/.env')
|
33 |
+
|
34 |
+
|
35 |
+
class AgentState(TypedDict):
|
36 |
+
messages: Annotated[list[BaseMessage], add_messages]
|
37 |
+
documents: list[Document]
|
38 |
+
query: str
|
39 |
+
final_response: str
|
40 |
+
|
41 |
+
|
42 |
+
class ToolManager:
|
43 |
+
def __init__(self, collection_name="openai_large_chunks_1500char"):
|
44 |
+
self.tools = []
|
45 |
+
self.qdrant = qm.QdrantManager(collection_name=collection_name)
|
46 |
+
self.vectorstore = self.qdrant.get_vectorstore()
|
47 |
+
self.add_tools()
|
48 |
+
|
49 |
+
def get_tools(self):
|
50 |
+
return self.tools
|
51 |
+
|
52 |
+
def add_tools(self):
|
53 |
+
@tool
|
54 |
+
def vector_search(query: str, k: int = 5) -> list[Document]:
|
55 |
+
"""Useful for simple queries. This tool will search a vector database for passages from the teachings of Paramhansa Yogananda and other publications from the Self Realization Fellowship (SRF).
|
56 |
+
The user has the option to specify the number of passages they want the search to return, otherwise the number of passages will be set to the default value."""
|
57 |
+
retriever = self.vectorstore.as_retriever(search_kwargs={"k": k})
|
58 |
+
documents = retriever.invoke(query)
|
59 |
+
return documents
|
60 |
+
|
61 |
+
@tool
|
62 |
+
def multiple_query_vector_search(query: str, k: int = 5) -> list[Document]:
|
63 |
+
"""Useful when the user's query is vague, complex, or involves multiple concepts.
|
64 |
+
This tool will write multiple versions of the user's query and search the vector database for relevant passages.
|
65 |
+
Use this tool when the user asks for an in depth answer to their question."""
|
66 |
+
|
67 |
+
llm = ChatOpenAI(model="gpt-4o-mini", temperature=0.5)
|
68 |
+
retriever_from_llm = MultiQueryRetriever.from_llm(retriever=self.vectorstore.as_retriever(), llm=llm)
|
69 |
+
documents = retriever_from_llm.invoke(query)
|
70 |
+
return documents
|
71 |
+
|
72 |
+
self.tools.append(vector_search)
|
73 |
+
self.tools.append(multiple_query_vector_search)
|
74 |
+
|
75 |
+
class BasicToolNode:
|
76 |
+
"""A node that runs the tools requested in the last AIMessage."""
|
77 |
+
|
78 |
+
def __init__(self, tools: list) -> None:
|
79 |
+
self.tools_by_name = {tool.name: tool for tool in tools}
|
80 |
+
|
81 |
+
def __call__(self, inputs: dict):
|
82 |
+
if messages := inputs.get("messages", []):
|
83 |
+
message = messages[-1]
|
84 |
+
else:
|
85 |
+
raise ValueError("No message found in input")
|
86 |
+
outputs = []
|
87 |
+
documents = []
|
88 |
+
for tool_call in message.tool_calls:
|
89 |
+
tool_result = self.tools_by_name[tool_call["name"]].invoke(
|
90 |
+
tool_call["args"]
|
91 |
+
)
|
92 |
+
outputs.append(
|
93 |
+
ToolMessage(
|
94 |
+
content=str(tool_result),
|
95 |
+
name=tool_call["name"],
|
96 |
+
tool_call_id=tool_call["id"],
|
97 |
+
)
|
98 |
+
)
|
99 |
+
documents += tool_result
|
100 |
+
|
101 |
+
return {"messages": outputs, "documents": documents}
|
102 |
+
|
103 |
+
# Create the Pydantic Model for the quote finder
|
104 |
+
class Quote(BaseModel):
|
105 |
+
'''Most relevant quotes to the user's query strictly pulled verbatim from the context provided.'''
|
106 |
+
quote: str
|
107 |
+
|
108 |
+
class QuoteList(BaseModel):
|
109 |
+
quotes: List[Quote]
|
110 |
+
|
111 |
+
|
112 |
+
class QuoteFinder:
|
113 |
+
def __init__(self, model: str = 'gpt-4o-mini', temperature: float = 0.5):
|
114 |
+
self.quotes_prompt = qfp.quote_finder_prompt
|
115 |
+
self.llm = ChatOpenAI(model=model, temperature=temperature)
|
116 |
+
self.llm_with_quotes_output = self.llm.with_structured_output(QuoteList)
|
117 |
+
self.quote_finder_chain = self.quotes_prompt | self.llm_with_quotes_output
|
118 |
+
|
119 |
+
|
120 |
+
def find_quotes_per_document(self, state: AgentState):
|
121 |
+
docs = state["documents"]
|
122 |
+
query = state["query"]
|
123 |
+
for doc in docs:
|
124 |
+
passage = doc.page_content
|
125 |
+
quotes = self.quote_finder_chain.invoke({"query": query, "passage": passage})
|
126 |
+
doc.metadata["quotes"] = quotes
|
127 |
+
|
128 |
+
return {"documents": docs}
|
129 |
+
|
130 |
+
def _highlight_quotes(self, document, quotes):
|
131 |
+
highlighted_content = document.page_content
|
132 |
+
matched_quotes = []
|
133 |
+
for quote in quotes.quotes:
|
134 |
+
# Fuzzy match the quote in the document
|
135 |
+
best_match = None
|
136 |
+
best_ratio = 0
|
137 |
+
for i in range(len(highlighted_content)):
|
138 |
+
substring = highlighted_content[i:i+len(quote.quote)]
|
139 |
+
ratio = fuzz.ratio(substring.lower(), quote.quote.lower())
|
140 |
+
if ratio > best_ratio:
|
141 |
+
best_ratio = ratio
|
142 |
+
best_match = substring
|
143 |
+
|
144 |
+
if best_match and best_ratio > 90: # Adjust threshold as needed
|
145 |
+
# Escape special regex characters in the best match
|
146 |
+
escaped_match = re.escape(best_match)
|
147 |
+
# Replace the matched text with highlighted version
|
148 |
+
highlighted_content = re.sub(
|
149 |
+
escaped_match,
|
150 |
+
f"<b>{best_match}</b>",
|
151 |
+
highlighted_content,
|
152 |
+
flags=re.IGNORECASE
|
153 |
+
)
|
154 |
+
matched_quotes.append(quote)
|
155 |
+
|
156 |
+
return highlighted_content, matched_quotes
|
157 |
+
|
158 |
+
|
159 |
+
def highlight_quotes_in_document(self, state: AgentState):
|
160 |
+
docs = state["documents"]
|
161 |
+
for doc in docs:
|
162 |
+
quotes = doc.metadata["quotes"]
|
163 |
+
annotated_passage, matched_quotes = self._highlight_quotes(doc, quotes)
|
164 |
+
doc.metadata["highlighted_content"] = annotated_passage
|
165 |
+
doc.metadata["matched_quotes"] = matched_quotes
|
166 |
+
|
167 |
+
return {"documents": docs}
|
168 |
+
|
169 |
+
|
170 |
+
def final_response_formatter(self, state: AgentState):
|
171 |
+
docs = state["documents"]
|
172 |
+
final_response = ""
|
173 |
+
for doc in docs:
|
174 |
+
final_response += doc.metadata["publication_name"] + ": " + doc.metadata["chapter_name"] + "\n" + doc.metadata["highlighted_content"] + "\n\n"
|
175 |
+
|
176 |
+
return {"final_response": final_response}
|
177 |
+
|
178 |
+
|
179 |
+
class PassageFinder:
|
180 |
+
def __init__(
|
181 |
+
self,
|
182 |
+
model: str = 'gpt-4o-mini',
|
183 |
+
temperature: float = 0.5,
|
184 |
+
):
|
185 |
+
|
186 |
+
self.llm = ChatOpenAI(model=model, temperature=temperature)
|
187 |
+
self.tools = ToolManager().get_tools()
|
188 |
+
self.llm_with_tools = self.llm.bind_tools(self.tools)
|
189 |
+
self.quote_finder = QuoteFinder()
|
190 |
+
|
191 |
+
# Build the graph
|
192 |
+
self.graph = self.build_graph()
|
193 |
+
|
194 |
+
|
195 |
+
def get_configurable(self):
|
196 |
+
# This thread id is used to keep track of the chatbot's conversation
|
197 |
+
self.thread_id = str(uuid.uuid4())
|
198 |
+
return {"configurable": {"thread_id": self.thread_id}}
|
199 |
+
|
200 |
+
|
201 |
+
def chatbot(self, state: AgentState):
|
202 |
+
messages = state["messages"]
|
203 |
+
original_query = messages[0].content
|
204 |
+
return {"messages": [self.llm_with_tools.invoke(messages)], "query": original_query}
|
205 |
+
|
206 |
+
def build_graph(self):
|
207 |
+
# Add chatbot state
|
208 |
+
graph_builder = StateGraph(AgentState)
|
209 |
+
|
210 |
+
# Add nodes
|
211 |
+
tool_node = BasicToolNode(tools=self.tools)
|
212 |
+
# tool_node = ToolNode(self.tools)
|
213 |
+
graph_builder.add_node("tools", tool_node)
|
214 |
+
graph_builder.add_node("chatbot", self.chatbot)
|
215 |
+
graph_builder.add_node("quote_finder", self.quote_finder.find_quotes_per_document)
|
216 |
+
graph_builder.add_node("quote_highlighter", self.quote_finder.highlight_quotes_in_document)
|
217 |
+
graph_builder.add_node("final_response_formatter", self.quote_finder.final_response_formatter)
|
218 |
+
|
219 |
+
# Add a conditional edge wherein the chatbot can decide whether or not to go to the tools
|
220 |
+
graph_builder.add_conditional_edges(
|
221 |
+
"chatbot",
|
222 |
+
tools_condition,
|
223 |
+
)
|
224 |
+
|
225 |
+
# Add fixed edges
|
226 |
+
graph_builder.add_edge(START, "chatbot")
|
227 |
+
graph_builder.add_edge("tools", "quote_finder")
|
228 |
+
graph_builder.add_edge("quote_finder", "quote_highlighter")
|
229 |
+
graph_builder.add_edge("quote_highlighter", "final_response_formatter")
|
230 |
+
graph_builder.add_edge("final_response_formatter", END)
|
231 |
+
|
232 |
+
# Instantiate the memory saver
|
233 |
+
memory = MemorySaver()
|
234 |
+
|
235 |
+
# Compile the graph
|
236 |
+
return graph_builder.compile(checkpointer=memory)
|
src/utils/qdrant_manager.py
CHANGED
@@ -7,9 +7,10 @@ from langchain.schema import Document
|
|
7 |
from langchain_openai import OpenAIEmbeddings
|
8 |
from qdrant_client import QdrantClient
|
9 |
from qdrant_client.models import Distance, VectorParams
|
10 |
-
|
11 |
from config import settings
|
12 |
|
|
|
13 |
# Qdrant Collections Params
|
14 |
|
15 |
openai_embeddings = OpenAIEmbeddings(model=settings.EMBEDDINGS_MODEL_NAME)
|
|
|
7 |
from langchain_openai import OpenAIEmbeddings
|
8 |
from qdrant_client import QdrantClient
|
9 |
from qdrant_client.models import Distance, VectorParams
|
10 |
+
from dotenv import load_dotenv
|
11 |
from config import settings
|
12 |
|
13 |
+
load_dotenv()
|
14 |
# Qdrant Collections Params
|
15 |
|
16 |
openai_embeddings = OpenAIEmbeddings(model=settings.EMBEDDINGS_MODEL_NAME)
|