diff --git a/.gitignore b/.gitignore index 1335152..6c750a7 100644 --- a/.gitignore +++ b/.gitignore @@ -200,4 +200,5 @@ data/* app/llmops/* # ignore wandb files -**/wandb/ \ No newline at end of file +**/wandb/ +**/.config.py \ No newline at end of file diff --git a/app/llm-template/Pipfile b/app/llm-template/Pipfile index 5f2258b..2eea0e0 100644 --- a/app/llm-template/Pipfile +++ b/app/llm-template/Pipfile @@ -10,6 +10,11 @@ chromadb = "*" SQLAlchemy = "*" wandb = "*" langchain-google-genai = "*" +langchain-google-vertexai = "*" +langchain-mongodb = "*" +langgraph = "*" +langchain-community = "*" +beautifulsoup4 = "*" openai = "*" pydantic = "*" diff --git a/app/llm-template/Pipfile.lock b/app/llm-template/Pipfile.lock index fcf0287..2a4fa0a 100644 --- a/app/llm-template/Pipfile.lock +++ b/app/llm-template/Pipfile.lock @@ -1,7 +1,7 @@ { "_meta": { "hash": { - "sha256": "0d22364fb8cb9e477fcf3936c6715db85c8958b9efc3064490518f3edb15585e" + "sha256": "28be69b45a38197768a0d75d0a4aaf28f019b543b4c51469059041db57c2ef71" }, "pipfile-spec": 6, "requires": { @@ -176,6 +176,15 @@ "markers": "python_version >= '3.7'", "version": "==4.2.1" }, + "beautifulsoup4": { + "hashes": [ + "sha256:1bd32405dacc920b42b83ba01644747ed77456a65760e285fbc47633ceddaf8b", + "sha256:99045d7d3f08f91f0d656bc9b7efbae189426cd913d830294a15eefa0ea4df16" + ], + "index": "pypi", + "markers": "python_full_version >= '3.7.0'", + "version": "==4.13.3" + }, "build": { "hashes": [ "sha256:1d61c0887fa860c01971625baae8bdd338e517b836a2f70dd1f7aa3a6b2fc5b5", @@ -268,6 +277,14 @@ "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'", "version": "==15.0.1" }, + "dataclasses-json": { + "hashes": [ + "sha256:0dbf33f26c8d5305befd61b39d2b3414e8a407bedc2834dea9b8d642666fb40a", + "sha256:b6b3e528266ea45b9535223bc53ca645f5208833c29229e847b3f26a1cc55fc0" + ], + "markers": "python_version >= '3.7' and python_version < '4.0'", + "version": "==0.6.7" + }, "deprecated": { "hashes": [ "sha256:422b6f6d859da6f2ef57857761bfb392480502a64c3028ca9bbe86085d72115d", @@ -284,6 +301,14 @@ "markers": "python_version >= '3.6'", "version": "==1.9.0" }, + "dnspython": { + "hashes": [ + "sha256:b4c34b7d10b51bcc3a5071e7b8dee77939f1e878477eeecc965e9835f63c6c86", + "sha256:ce9c432eda0dc91cf618a5cedf1a4e142651196bbcd2c80e89ed5a907e5cfaf1" + ], + "markers": "python_version >= '3.9'", + "version": "==2.7.0" + }, "docker-pycreds": { "hashes": [ "sha256:6ce3270bcaf404cc4c3e27e4b6c70d3521deae82fb508767870fdbf772d584d4", @@ -291,6 +316,14 @@ ], "version": "==0.4.0" }, + "docstring-parser": { + "hashes": [ + "sha256:538beabd0af1e2db0146b6bd3caa526c35a34d61af9fd2887f3a8a27a739aa6e", + "sha256:bf0a1387354d3691d102edef7ec124f219ef639982d096e26e3b60aeffa90637" + ], + "markers": "python_version >= '3.6' and python_version < '4.0'", + "version": "==0.16" + }, "durationpy": { "hashes": [ "sha256:e65359a7af5cedad07fb77a2dd3f390f8eb0b74cb845589fa6c057086834dd38", @@ -508,6 +541,79 @@ ], "version": "==0.2.0" }, + "google-cloud-aiplatform": { + "hashes": [ + "sha256:45d2a170f22431dae977551eccb740400bdb899807d0c8d4c16c53b2c1dbc6a5", + "sha256:bcaa4570a6fb56d3d29cb6b8f92588d4d1a1931de5f90cf07761853dab4c76fd" + ], + "markers": "python_version >= '3.8'", + "version": "==1.80.0" + }, + "google-cloud-bigquery": { + "hashes": [ + "sha256:5453a4eabe50118254eda9778f3d7dad413490de5f7046b5e66c98f5a1580308", + "sha256:fafc2b455ffce3bcc6ce0e884184ef50b6a11350a83b91e327fadda4d5566e72" + ], + "markers": "python_version >= '3.7'", + "version": "==3.29.0" + }, + "google-cloud-core": { + "hashes": [ + "sha256:9b7749272a812bde58fff28868d0c5e2f585b82f37e09a1f6ed2d4d10f134073", + "sha256:a9e6a4422b9ac5c29f79a0ede9485473338e2ce78d91f2370c01e730eab22e61" + ], + "markers": "python_version >= '3.7'", + "version": "==2.4.1" + }, + "google-cloud-resource-manager": { + "hashes": [ + "sha256:4860c3ea9ace760b317ea90d4e27f1b32e54ededdcc340a7cb70c8ef238d8f7c", + "sha256:daa70a3a4704759d31f812ed221e3b6f7b660af30c7862e4a0060ea91291db30" + ], + "markers": "python_version >= '3.7'", + "version": "==1.14.0" + }, + "google-cloud-storage": { + "hashes": [ + "sha256:aeb971b5c29cf8ab98445082cbfe7b161a1f48ed275822f59ed3f1524ea54fba", + "sha256:cd05e9e7191ba6cb68934d8eb76054d9be4562aa89dbc4236feee4d7d51342b2" + ], + "markers": "python_version >= '3.7'", + "version": "==2.19.0" + }, + "google-crc32c": { + "hashes": [ + "sha256:05e2d8c9a2f853ff116db9706b4a27350587f341eda835f46db3c0a8c8ce2f24", + "sha256:18e311c64008f1f1379158158bb3f0c8d72635b9eb4f9545f8cf990c5668e59d", + "sha256:236c87a46cdf06384f614e9092b82c05f81bd34b80248021f729396a78e55d7e", + "sha256:35834855408429cecf495cac67ccbab802de269e948e27478b1e47dfb6465e57", + "sha256:386122eeaaa76951a8196310432c5b0ef3b53590ef4c317ec7588ec554fec5d2", + "sha256:40b05ab32a5067525670880eb5d169529089a26fe35dce8891127aeddc1950e8", + "sha256:48abd62ca76a2cbe034542ed1b6aee851b6f28aaca4e6551b5599b6f3ef175cc", + "sha256:50cf2a96da226dcbff8671233ecf37bf6e95de98b2a2ebadbfdf455e6d05df42", + "sha256:51c4f54dd8c6dfeb58d1df5e4f7f97df8abf17a36626a217f169893d1d7f3e9f", + "sha256:5bcc90b34df28a4b38653c36bb5ada35671ad105c99cfe915fb5bed7ad6924aa", + "sha256:62f6d4a29fea082ac4a3c9be5e415218255cf11684ac6ef5488eea0c9132689b", + "sha256:6eceb6ad197656a1ff49ebfbbfa870678c75be4344feb35ac1edf694309413dc", + "sha256:7aec8e88a3583515f9e0957fe4f5f6d8d4997e36d0f61624e70469771584c760", + "sha256:91ca8145b060679ec9176e6de4f89b07363d6805bd4760631ef254905503598d", + "sha256:a184243544811e4a50d345838a883733461e67578959ac59964e43cca2c791e7", + "sha256:a9e4b426c3702f3cd23b933436487eb34e01e00327fac20c9aebb68ccf34117d", + "sha256:bb0966e1c50d0ef5bc743312cc730b533491d60585a9a08f897274e57c3f70e0", + "sha256:bb8b3c75bd157010459b15222c3fd30577042a7060e29d42dabce449c087f2b3", + "sha256:bd5e7d2445d1a958c266bfa5d04c39932dc54093fa391736dbfdb0f1929c1fb3", + "sha256:c87d98c7c4a69066fd31701c4e10d178a648c2cac3452e62c6b24dc51f9fcc00", + "sha256:d2952396dc604544ea7476b33fe87faedc24d666fb0c2d5ac971a2b9576ab871", + "sha256:d8797406499f28b5ef791f339594b0b5fdedf54e203b5066675c406ba69d705c", + "sha256:d9e9913f7bd69e093b81da4535ce27af842e7bf371cde42d1ae9e9bd382dc0e9", + "sha256:e2806553238cd076f0a55bddab37a532b53580e699ed8e5606d0de1f856b5205", + "sha256:ebab974b1687509e5c973b5c4b8b146683e101e102e17a86bd196ecaa4d099fc", + "sha256:ed767bf4ba90104c1216b68111613f0d5926fb3780660ea1198fc469af410e9d", + "sha256:f7a1fc29803712f80879b0806cb83ab24ce62fc8daf0569f2204a0cfd7f68ed4" + ], + "markers": "python_version >= '3.9'", + "version": "==1.6.0" + }, "google-genai": { "hashes": [ "sha256:c48ac44612ad6aadc0bf96b12fa4314756baa16382c890fff793bcb53e9a9cc8" @@ -523,7 +629,18 @@ "markers": "python_version >= '3.9'", "version": "==0.8.4" }, + "google-resumable-media": { + "hashes": [ + "sha256:3ce7551e9fe6d99e9a126101d2536612bb73486721951e9562fee0f90c6ababa", + "sha256:5280aed4629f2b60b847b0d42f9857fd4935c11af266744df33d8074cae92fe0" + ], + "markers": "python_version >= '3.7'", + "version": "==2.7.2" + }, "googleapis-common-protos": { + "extras": [ + "grpc" + ], "hashes": [ "sha256:c3e7b33d15fdca5374cc0a7346dd92ffa847425cc4ea941d970f13680052ec8c", "sha256:d7abcd75fabb2e0ec9f74466401f6c119a0b498e27370e9be4c94cb7e382b8ed" @@ -531,6 +648,14 @@ "markers": "python_version >= '3.7'", "version": "==1.66.0" }, + "grpc-google-iam-v1": { + "hashes": [ + "sha256:c66e07aa642e39bb37950f9e7f491f70dad150ac9801263b42b2814307c2df99", + "sha256:fb4a084b30099ba3ab07d61d620a0d4429570b13ff53bd37bac75235f98b7da4" + ], + "markers": "python_version >= '3.7'", + "version": "==0.14.0" + }, "grpcio": { "hashes": [ "sha256:0495c86a55a04a874c7627fd33e5beaee771917d92c0e6d9d797628ac40e7655", @@ -679,6 +804,14 @@ "markers": "python_version >= '3.8'", "version": "==0.28.1" }, + "httpx-sse": { + "hashes": [ + "sha256:1e81a3a3070ce322add1d3529ed42eb5f70817f45ed6ec915ab753f961139721", + "sha256:f329af6eae57eaa2bdfd962b42524764af68075ea87370a2de920af5341e318f" + ], + "markers": "python_version >= '3.8'", + "version": "==0.4.0" + }, "huggingface-hub": { "hashes": [ "sha256:893471090c98e3b6efbdfdacafe4052b20b84d59866fb6f54c33d9af18c303ae", @@ -834,6 +967,15 @@ "markers": "python_version >= '3.9' and python_version < '4.0'", "version": "==0.3.18" }, + "langchain-community": { + "hashes": [ + "sha256:13bbd87d681b0df67bafa294321613b13ac524f173c92f11048d40c74e585f0b", + "sha256:d8547a3d4f8307950be88ca638cd6ab1abe2440d0012e401a172ba4a39aa8044" + ], + "index": "pypi", + "markers": "python_version >= '3.9' and python_version < '4.0'", + "version": "==0.3.17" + }, "langchain-core": { "hashes": [ "sha256:26504cf1e8e6c310adad907b890d4e3c147581cfa7434114f6dc1134fe4bc6d3", @@ -851,6 +993,24 @@ "markers": "python_version >= '3.9' and python_version < '4.0'", "version": "==2.0.9" }, + "langchain-google-vertexai": { + "hashes": [ + "sha256:7edc4de0ef7e8caf6cf075f31ebe29f17d99c6c739ac43ed5b9df4f8c1c4c1fb", + "sha256:eba80d6a2e2e1cbc1973843822df584e5d39a007851d5d5aebd28093a4ea7bdc" + ], + "index": "pypi", + "markers": "python_version >= '3.9' and python_version < '4.0'", + "version": "==2.0.13" + }, + "langchain-mongodb": { + "hashes": [ + "sha256:9a9d0cefe7e2b32d50d2941121fd098baccbaf65e1848aca2d0593a3480b04b6", + "sha256:ab9000ff87b3c8c8f9e6f2c34f1324e0e333d949ac985f4b9b18c3b5bd32393e" + ], + "index": "pypi", + "markers": "python_version >= '3.9'", + "version": "==0.4.0" + }, "langchain-text-splitters": { "hashes": [ "sha256:c537972f4b7c07451df431353a538019ad9dadff7a1073ea363946cea97e1bee", @@ -859,6 +1019,31 @@ "markers": "python_version >= '3.9' and python_version < '4.0'", "version": "==0.3.6" }, + "langgraph": { + "hashes": [ + "sha256:6cdcf23b37f6580ba93e75f909d1eaefbbf42cd0e0a98be5db17d2377a711362", + "sha256:8cdce67f8b011d2d9df5996553fdcb450b4caa756e6940480617e16f1d7a67f3" + ], + "index": "pypi", + "markers": "python_version < '4.0' and python_full_version >= '3.9.0'", + "version": "==0.2.71" + }, + "langgraph-checkpoint": { + "hashes": [ + "sha256:1b7e4967b784e2b66dc38ff6840e929c658c47ee00c28cf0e354b95062060e89", + "sha256:37e45a9b06ee37b9fe705c1f96f72a4ca1730195ca9553f1c1f49a152dbf21ff" + ], + "markers": "python_full_version >= '3.9.0' and python_full_version < '4.0.0'", + "version": "==2.0.12" + }, + "langgraph-sdk": { + "hashes": [ + "sha256:ce2b58466d1700d06149782ed113157a8694a6d7932c801f316cd13fab315fe4", + "sha256:dea1363e72562cb1e82a2d156be8d5b1a69ff3fe8815eee0e1e7a2f423242ec1" + ], + "markers": "python_full_version >= '3.9.0' and python_full_version < '4.0.0'", + "version": "==0.1.51" + }, "langsmith": { "hashes": [ "sha256:97f9bebe0b7cb0a4f278e6ff30ae7d5ededff3883b014442ec6d7d575b02a0f1", @@ -875,6 +1060,14 @@ "markers": "python_version >= '3.8'", "version": "==3.0.0" }, + "marshmallow": { + "hashes": [ + "sha256:3350409f20a70a7e4e11a27661187b77cdcaeb20abca41c1454fe33636bea09c", + "sha256:e6d8affb6cb61d39d26402096dc0aee12d5a26d490a121f118d2e81dc0719dc6" + ], + "markers": "python_version >= '3.9'", + "version": "==3.26.1" + }, "mdurl": { "hashes": [ "sha256:84008a41e51615a49fc9966191ff91509e3c40b939176e643fd50a5c2196b8f8", @@ -984,6 +1177,76 @@ ], "version": "==1.3.0" }, + "msgpack": { + "hashes": [ + "sha256:06f5fd2f6bb2a7914922d935d3b8bb4a7fff3a9a91cfce6d06c13bc42bec975b", + "sha256:071603e2f0771c45ad9bc65719291c568d4edf120b44eb36324dcb02a13bfddf", + "sha256:0907e1a7119b337971a689153665764adc34e89175f9a34793307d9def08e6ca", + "sha256:0f92a83b84e7c0749e3f12821949d79485971f087604178026085f60ce109330", + "sha256:115a7af8ee9e8cddc10f87636767857e7e3717b7a2e97379dc2054712693e90f", + "sha256:13599f8829cfbe0158f6456374e9eea9f44eee08076291771d8ae93eda56607f", + "sha256:17fb65dd0bec285907f68b15734a993ad3fc94332b5bb21b0435846228de1f39", + "sha256:2137773500afa5494a61b1208619e3871f75f27b03bcfca7b3a7023284140247", + "sha256:3180065ec2abbe13a4ad37688b61b99d7f9e012a535b930e0e683ad6bc30155b", + "sha256:398b713459fea610861c8a7b62a6fec1882759f308ae0795b5413ff6a160cf3c", + "sha256:3d364a55082fb2a7416f6c63ae383fbd903adb5a6cf78c5b96cc6316dc1cedc7", + "sha256:3df7e6b05571b3814361e8464f9304c42d2196808e0119f55d0d3e62cd5ea044", + "sha256:41c991beebf175faf352fb940bf2af9ad1fb77fd25f38d9142053914947cdbf6", + "sha256:42f754515e0f683f9c79210a5d1cad631ec3d06cea5172214d2176a42e67e19b", + "sha256:452aff037287acb1d70a804ffd022b21fa2bb7c46bee884dbc864cc9024128a0", + "sha256:4676e5be1b472909b2ee6356ff425ebedf5142427842aa06b4dfd5117d1ca8a2", + "sha256:46c34e99110762a76e3911fc923222472c9d681f1094096ac4102c18319e6468", + "sha256:471e27a5787a2e3f974ba023f9e265a8c7cfd373632247deb225617e3100a3c7", + "sha256:4a1964df7b81285d00a84da4e70cb1383f2e665e0f1f2a7027e683956d04b734", + "sha256:4b51405e36e075193bc051315dbf29168d6141ae2500ba8cd80a522964e31434", + "sha256:4d1b7ff2d6146e16e8bd665ac726a89c74163ef8cd39fa8c1087d4e52d3a2325", + "sha256:53258eeb7a80fc46f62fd59c876957a2d0e15e6449a9e71842b6d24419d88ca1", + "sha256:534480ee5690ab3cbed89d4c8971a5c631b69a8c0883ecfea96c19118510c846", + "sha256:58638690ebd0a06427c5fe1a227bb6b8b9fdc2bd07701bec13c2335c82131a88", + "sha256:58dfc47f8b102da61e8949708b3eafc3504509a5728f8b4ddef84bd9e16ad420", + "sha256:59caf6a4ed0d164055ccff8fe31eddc0ebc07cf7326a2aaa0dbf7a4001cd823e", + "sha256:5dbad74103df937e1325cc4bfeaf57713be0b4f15e1c2da43ccdd836393e2ea2", + "sha256:5e1da8f11a3dd397f0a32c76165cf0c4eb95b31013a94f6ecc0b280c05c91b59", + "sha256:646afc8102935a388ffc3914b336d22d1c2d6209c773f3eb5dd4d6d3b6f8c1cb", + "sha256:64fc9068d701233effd61b19efb1485587560b66fe57b3e50d29c5d78e7fef68", + "sha256:65553c9b6da8166e819a6aa90ad15288599b340f91d18f60b2061f402b9a4915", + "sha256:685ec345eefc757a7c8af44a3032734a739f8c45d1b0ac45efc5d8977aa4720f", + "sha256:6ad622bf7756d5a497d5b6836e7fc3752e2dd6f4c648e24b1803f6048596f701", + "sha256:73322a6cc57fcee3c0c57c4463d828e9428275fb85a27aa2aa1a92fdc42afd7b", + "sha256:74bed8f63f8f14d75eec75cf3d04ad581da6b914001b474a5d3cd3372c8cc27d", + "sha256:79ec007767b9b56860e0372085f8504db5d06bd6a327a335449508bbee9648fa", + "sha256:7a946a8992941fea80ed4beae6bff74ffd7ee129a90b4dd5cf9c476a30e9708d", + "sha256:7ad442d527a7e358a469faf43fda45aaf4ac3249c8310a82f0ccff9164e5dccd", + "sha256:7c9a35ce2c2573bada929e0b7b3576de647b0defbd25f5139dcdaba0ae35a4cc", + "sha256:7e7b853bbc44fb03fbdba34feb4bd414322180135e2cb5164f20ce1c9795ee48", + "sha256:879a7b7b0ad82481c52d3c7eb99bf6f0645dbdec5134a4bddbd16f3506947feb", + "sha256:8a706d1e74dd3dea05cb54580d9bd8b2880e9264856ce5068027eed09680aa74", + "sha256:8a84efb768fb968381e525eeeb3d92857e4985aacc39f3c47ffd00eb4509315b", + "sha256:8cf9e8c3a2153934a23ac160cc4cba0ec035f6867c8013cc6077a79823370346", + "sha256:8da4bf6d54ceed70e8861f833f83ce0814a2b72102e890cbdfe4b34764cdd66e", + "sha256:8e59bca908d9ca0de3dc8684f21ebf9a690fe47b6be93236eb40b99af28b6ea6", + "sha256:914571a2a5b4e7606997e169f64ce53a8b1e06f2cf2c3a7273aa106236d43dd5", + "sha256:a51abd48c6d8ac89e0cfd4fe177c61481aca2d5e7ba42044fd218cfd8ea9899f", + "sha256:a52a1f3a5af7ba1c9ace055b659189f6c669cf3657095b50f9602af3a3ba0fe5", + "sha256:ad33e8400e4ec17ba782f7b9cf868977d867ed784a1f5f2ab46e7ba53b6e1e1b", + "sha256:b4c01941fd2ff87c2a934ee6055bda4ed353a7846b8d4f341c428109e9fcde8c", + "sha256:bce7d9e614a04d0883af0b3d4d501171fbfca038f12c77fa838d9f198147a23f", + "sha256:c40ffa9a15d74e05ba1fe2681ea33b9caffd886675412612d93ab17b58ea2fec", + "sha256:c5a91481a3cc573ac8c0d9aace09345d989dc4a0202b7fcb312c88c26d4e71a8", + "sha256:c921af52214dcbb75e6bdf6a661b23c3e6417f00c603dd2070bccb5c3ef499f5", + "sha256:d46cf9e3705ea9485687aa4001a76e44748b609d260af21c4ceea7f2212a501d", + "sha256:d8ce0b22b890be5d252de90d0e0d119f363012027cf256185fc3d474c44b1b9e", + "sha256:dd432ccc2c72b914e4cb77afce64aab761c1137cc698be3984eee260bcb2896e", + "sha256:e0856a2b7e8dcb874be44fea031d22e5b3a19121be92a1e098f46068a11b0870", + "sha256:e1f3c3d21f7cf67bcf2da8e494d30a75e4cf60041d98b3f79875afb5b96f3a3f", + "sha256:f1ba6136e650898082d9d5a5217d5906d1e138024f836ff48691784bbe1adf96", + "sha256:f3e9b4936df53b970513eac1758f3882c88658a220b58dcc1e39606dccaaf01c", + "sha256:f80bc7d47f76089633763f952e67f8214cb7b3ee6bfa489b3cb6a84cfac114cd", + "sha256:fd2906780f25c8ed5d7b323379f6138524ba793428db5d0e9d226d3fa6aa1788" + ], + "markers": "python_version >= '3.8'", + "version": "==1.1.0" + }, "multidict": { "hashes": [ "sha256:052e10d2d37810b99cc170b785945421141bf7bb7d2f8799d431e7db229c385f", @@ -1082,6 +1345,14 @@ "markers": "python_version >= '3.8'", "version": "==6.1.0" }, + "mypy-extensions": { + "hashes": [ + "sha256:4392f6c0eb8a5668a69e23d168ffa70f0be9ccfd32b5cc2d26a34ae5b844552d", + "sha256:75dbf8955dc00442a438fc4d0666508a9a97b6bd41aa2f0ffe9d2f2725af0782" + ], + "markers": "python_version >= '3.5'", + "version": "==1.0.0" + }, "numpy": { "hashes": [ "sha256:03a8c78d01d9781b28a6989f6fa1bb2c4f2d51201cf99d3dd875df6fbd96b23b", @@ -1362,10 +1633,10 @@ }, "posthog": { "hashes": [ - "sha256:0cdf914ece2a3fe9e0710a71ccfea8d008d4e7c16d0df62611282001a92ae3b8", - "sha256:410aec128be879176306227e72c1a2533c944170c59c29d9878d427143d74ba9" + "sha256:319036f83436981b3bdc750b0ed067b5439c510ed601933f8fc043d0989c73c6", + "sha256:f749bb4aa4610678c3ea71e0f491cfb2dce570196b9753a04260ff08e52dfb6d" ], - "version": "==3.12.0" + "version": "==3.12.1" }, "propcache": { "hashes": [ @@ -1619,6 +1890,14 @@ "markers": "python_version >= '3.8'", "version": "==2.27.2" }, + "pydantic-settings": { + "hashes": [ + "sha256:10c9caad35e64bfb3c2fbf70a078c0e25cc92499782e5200747f942a065dec93", + "sha256:590be9e6e24d06db33a4262829edef682500ef008565a969c73d39d5f8bfb3fd" + ], + "markers": "python_version >= '3.8'", + "version": "==2.7.1" + }, "pygments": { "hashes": [ "sha256:61c16d2a8576dc0649d9f39e089b5f02bcd27fba10d8fb4dcc28173f7a45151f", @@ -1627,6 +1906,69 @@ "markers": "python_version >= '3.8'", "version": "==2.19.1" }, + "pymongo": { + "hashes": [ + "sha256:0a8aba4818350d2a463e084ae2426d395e725525fe86bd0219240b265dc1ca52", + "sha256:1518931a4a26d3cb31a97b9187087c6378cd0b0401d7a7cc160e92223a2a3059", + "sha256:157e6a722d051c4bab3e6bc34a1f80fc98101cf2d12139a94e51638d023198c5", + "sha256:15a88b25efcd61c5e539e9204932849b20f393efa330771676e860c4466fe8ad", + "sha256:163c887384cb9fd16e0463128600867138a5a9a5344fc0903db08494b39a2d6e", + "sha256:18b669e15922316e25a318cf9ba594eae5a6c24285a70f455ea01571d70a47d2", + "sha256:1cc6d48b74e9abe544dd71b000453ad06e65cbfcfd57c7342a9f012f65532eb2", + "sha256:1ed3c885ac221ddebd3e894aeae7b6bd84e7dbd4fd59f03e551d8f51455c7e9b", + "sha256:1f871efa14a1f368559edff39ec03799ca108bfa8e1ba330b7ffc05eb958661f", + "sha256:25b7cadae1d5287b2eed3d901a347f3fa9bc3f898532e1cb7f28a1c9237d824d", + "sha256:2737ad54f0cd38e19ebf76e6f34dbbc6927615a2973425e64475d15a65fc2f6b", + "sha256:27bc58e0b1bebb17d2426d0cc191c579f2eeaf9692be880f93fe4180cf850ca7", + "sha256:2d1d956c15dd05f1e41c61f0dbcaec59f274db4814cff2c3d9c2508f58004c39", + "sha256:2d7f291245c1688655aa308bbba7c9afa8116692c4fa6ad2646a835ed277a67b", + "sha256:34d8b0ee57ad2a07ecdccec06269a4530767c2befb68f4a185113c866ad20b00", + "sha256:3757ce9257c3486eead45680a8895a0ed9ba27efaf1791fc0cf854367c21c638", + "sha256:3854db4be39cb9e0c34add1fd7e515deab0b4ee30f3cc3978e057746d119ac12", + "sha256:3b01623eb4a7ac58706e1920a94fbb47465f8ee19e7fbbb077e1707e37678863", + "sha256:3fe9589d9a83f6e2abe88f32daa410276eddd038eb8f8f75975cf8ce834cea1f", + "sha256:488d1da6201e1350cfcd4deab599b32237ac2ac591180d44553a2c8e614f2c0e", + "sha256:490d3fd8006154894319af3a974764bf16baea87100222779f49c75cd8b16d3d", + "sha256:4aa2c40e391ca29a337bef2b46b495c3f24b5696a87a58f0a0676a8bf131f9f8", + "sha256:50210249a9bf67937e97205a312b96a4b1250b111cbaaff532d7a61bc2b1562d", + "sha256:61f9a7ca6eb47378809c94cd8fbdbc5ee90c4bbb0c18ddf5592d25ed95cf939c", + "sha256:681806d3ecaf29b11e16a45c1f4c28f99d9d8283238f7b6ea9eee93b5d7bc6d2", + "sha256:698fb3d13126c0719077c98b40378cb9a6f4ab4a72b7691779aa01f1f6c66493", + "sha256:7007669eef871079d39a9bbcda0fbcd4252f9b575592804343d0b5c05849d65b", + "sha256:7146ae04300ce6f83b75c639e97c3d0ce873f30edaac4b719ae173e886b9ff90", + "sha256:74503e853758e1eaa1cad2df9c08c8c35a3d26222cf6426d2cde4b2e8593b9b3", + "sha256:7751e6e99c79057b09441c6ab2a93fae10b4028478aac5b455db8b12f884a3c0", + "sha256:7b3ea3494f3e166a524529bb05a4fdda97afd77031fed3a63862fd815288c9df", + "sha256:7dd7656794bfbfbe10723813332ec33eed29bd9bb7fc122c63829fd445eb8425", + "sha256:822a73d22970978a6e55751d53eb0948521fc8e1380e306b8644096b5230412f", + "sha256:889d20850d5aaa4f19814462c06488553e70ed4c62195dbaad5d5662884778af", + "sha256:892f2137282a0a993d342db6e4e6dc2f3db0b771831c2d505f7055c52c023198", + "sha256:8a4e82dce301c97bb132dec28a487c1a609dc67948e9db7cbd23485875367204", + "sha256:8ac125f2782d8fe3f3ff93a396af5482d694093b3be3e06052197096c83acadc", + "sha256:908e65ab42cd4bf1ffeaafe8f11bb86b3f804d54227058794e33fff2963ccc86", + "sha256:985a614ec24519f4a3d82aafb766c3f782a452fc46b32112d508a4e19b33fff3", + "sha256:9e7bac5fb1383a0df8b6881046207da20deb582a54e70c4c53ac9d4bbce323a3", + "sha256:a63348c850df796199abef7e9afbd86c34449f56731c7ec70b3901df1f5c135b", + "sha256:aadea45e01103f6ee4e80d76d4a27393a4e2bd93472ce4ebb894781f395e1053", + "sha256:b56dbb6883ce7adad8588464948e0723a3d881e5549f48c4767f1654e8e4cb7d", + "sha256:b630596089106c968ddd252bde3fe692c420e24f214dd39ca517d26343d81012", + "sha256:c71655f4188c70032ba56ac7ead688449e4f86a4ccd8e57201ee283f2f591e1d", + "sha256:cdd0e404d5c3b1203ee61fcfee40a1f062f3780ce272febdc2378797b00401d1", + "sha256:d12f4c4579076b7351c63378e22f43d4ce4ed4f2c93208b653c4752f18f47309", + "sha256:d293cec18624825937bd7f1d8bacf16104c79ced45a8ada93f08ec8a7a2ad17a", + "sha256:e147e08df329a7d23cbcb6213bc2fd360e51551626be828092fe2027f3473abc", + "sha256:e596caec72db62a3f438559dfa46d22faefea1967279f553f936ddcb873903df", + "sha256:e6e46bcd3c2f86f442b721551ed5e5812294e4a93fce42517e173bd41d4cd2d8", + "sha256:e7073a740aad257f9d2c12cb95a08f17db1f273d422e7ddfed9895738571cac7", + "sha256:f28d179e7d434869e23f4582c941cb400f75e996cfea472693ec756ee213c685", + "sha256:f415d9569720f408cc4dcc171f60299d454b0414f120666e6fdd349d414bf010", + "sha256:f845b46d77a5bcf0c9ee16f11c5bc84c63f4668d9ea4fc54cd923c8d48a1d521", + "sha256:f96683f1dec7d28f12fe43a4d5c0df35d6b80348a9fbf5aac47fa284332a1f92", + "sha256:f97f62e6edde15d1d3d08abd7e43f1787ee9e672b1bb8e9d9f5fd6ded24f5599" + ], + "markers": "python_version >= '3.9'", + "version": "==4.11.1" + }, "pyparsing": { "hashes": [ "sha256:506ff4f4386c4cec0590ec19e6302d3aedb992fdc02c761e90416f158dacf8e1", @@ -1662,6 +2004,7 @@ "sha256:e324ee90a023d808f1959c46bcbc04446a10ced277783dc6ee09987c37ec10ca", "sha256:f7b63ef50f1b690dddf550d03497b66d609393b40b564ed0d674909a68ebf16a" ], + "markers": "python_version >= '3.8'", "version": "==1.0.1" }, "pyyaml": { @@ -1870,6 +2213,54 @@ "markers": "python_version >= '3.9'", "version": "==75.8.0" }, + "shapely": { + "hashes": [ + "sha256:0145387565fcf8f7c028b073c802956431308da933ef41d08b1693de49990d27", + "sha256:04a65d882456e13c8b417562c36324c0cd1e5915f3c18ad516bb32ee3f5fc895", + "sha256:06ff6020949b44baa8fc2e5e57e0f3d09486cd5c33b47d669f847c54136e7027", + "sha256:19cbc8808efe87a71150e785b71d8a0e614751464e21fb679d97e274eca7bd43", + "sha256:1a2e03277128e62f9a49a58eb7eb813fa9b343925fca5e7d631d50f4c0e8e0b8", + "sha256:1e9fed9a7d6451979d914cb6ebbb218b4b4e77c0d50da23e23d8327948662611", + "sha256:25085a30a2462cee4e850a6e3fb37431cbbe4ad51cbcc163af0cea1eaa9eb96d", + "sha256:28fe2997aab9a9dc026dc6a355d04e85841546b2a5d232ed953e3321ab958ee5", + "sha256:2934834c7f417aeb7cba3b0d9b4441a76ebcecf9ea6e80b455c33c7c62d96a24", + "sha256:2e4a1749ad64bc6e7668c8f2f9479029f079991f4ae3cb9e6b25440e35a4b532", + "sha256:2f6e4759cf680a0f00a54234902415f2fa5fe02f6b05546c662654001f0793a2", + "sha256:33fb10e50b16113714ae40adccf7670379e9ccf5b7a41d0002046ba2b8f0f691", + "sha256:35524cc8d40ee4752520819f9894b9f28ba339a42d4922e92c99b148bed3be39", + "sha256:3697bd078b4459f5a1781015854ef5ea5d824dbf95282d0b60bfad6ff83ec8dc", + "sha256:4abeb44b3b946236e4e1a1b3d2a0987fb4d8a63bfb3fdefb8a19d142b72001e5", + "sha256:4c2b9859424facbafa54f4a19b625a752ff958ab49e01bc695f254f7db1835fa", + "sha256:5aed1c6764f51011d69a679fdf6b57e691371ae49ebe28c3edb5486537ffbd51", + "sha256:5cf23400cb25deccf48c56a7cdda8197ae66c0e9097fcdd122ac2007e320bc34", + "sha256:5d6dbf096f961ca6bec5640e22e65ccdec11e676344e8157fe7d636e7904fd36", + "sha256:6bca5095e86be9d4ef3cb52d56bdd66df63ff111d580855cb8546f06c3c907cd", + "sha256:73c9ae8cf443187d784d57202199bf9fd2d4bb7d5521fe8926ba40db1bc33e8e", + "sha256:7977d8a39c4cf0e06247cd2dca695ad4e020b81981d4c82152c996346cf1094b", + "sha256:7e97104d28e60b69f9b6a957c4d3a2a893b27525bc1fc96b47b3ccef46726bf2", + "sha256:8ae5cb6b645ac3fba34ad84b32fbdccb2ab321facb461954925bde807a0d3b74", + "sha256:8f623b64bb219d62014781120f47499a7adc30cf7787e24b659e56651ceebcb0", + "sha256:98697c842d5c221408ba8aa573d4f49caef4831e9bc6b6e785ce38aca42d1999", + "sha256:a0c09e3e02f948631c7763b4fd3dd175bc45303a0ae04b000856dedebefe13cb", + "sha256:a3fb7fbae257e1b042f440289ee7235d03f433ea880e73e687f108d044b24db5", + "sha256:a7f04691ce1c7ed974c2f8b34a1fe4c3c5dfe33128eae886aa32d730f1ec1913", + "sha256:a9469f49ff873ef566864cb3516091881f217b5d231c8164f7883990eec88b73", + "sha256:aaaf5f7e6cc234c1793f2a2760da464b604584fb58c6b6d7d94144fd2692d67e", + "sha256:adeddfb1e22c20548e840403e5e0b3d9dc3daf66f05fa59f1fcf5b5f664f0e98", + "sha256:b52f3ab845d32dfd20afba86675c91919a622f4627182daec64974db9b0b4608", + "sha256:cd0e75d9124b73e06a42bf1615ad3d7d805f66871aa94538c3a9b7871d620013", + "sha256:cf6c50cd879831955ac47af9c907ce0310245f9d162e298703f82e1785e38c98", + "sha256:d8f1da01c04527f7da59ee3755d8ee112cd8967c15fab9e43bba936b81e2a013", + "sha256:dd37d65519b3f8ed8976fa4302a2827cbb96e0a461a2e504db583b08a22f0b98", + "sha256:e1c4f1071fe9c09af077a69b6c75f17feb473caeea0c3579b3e94834efcbdc36", + "sha256:e6d95703efaa64aaabf278ced641b888fc23d9c6dd71f8215091afd8a26a66e3", + "sha256:f44eda8bd7a4bccb0f281264b34bf3518d8c4c9a8ffe69a1a05dabf6e8461147", + "sha256:f86e2c0259fe598c4532acfcf638c1f520fa77c1275912bbc958faecbf00b108", + "sha256:fc19b78cc966db195024d8011649b4e22812f805dd49264323980715ab80accc" + ], + "markers": "python_version >= '3.7'", + "version": "==2.0.7" + }, "shellingham": { "hashes": [ "sha256:7ecfff8f2fd72616f7481040475a65b2bf8af90a56c89140852d1120324e8686", @@ -1902,6 +2293,14 @@ "markers": "python_version >= '3.7'", "version": "==1.3.1" }, + "soupsieve": { + "hashes": [ + "sha256:e2e68417777af359ec65daac1057404a3c8a5455bb8abc36f1a9866ab1a51abb", + "sha256:e72c4ff06e4fb6e4b5a9f0f55fe6e81514581fca1515028625d0f299c602ccc9" + ], + "markers": "python_version >= '3.8'", + "version": "==2.6" + }, "sqlalchemy": { "hashes": [ "sha256:0398361acebb42975deb747a824b5188817d32b5c8f8aba767d51ad0cc7bb08d", @@ -2043,6 +2442,13 @@ "markers": "python_version >= '3.8'", "version": "==4.12.2" }, + "typing-inspect": { + "hashes": [ + "sha256:9ee6fc59062311ef8547596ab6b955e1b8aa46242d854bfc78f4f6b0eff35f9f", + "sha256:b23fc42ff6f6ef6954e4852c1fb512cdd18dbea03134f91f856a95ccc9461f78" + ], + "version": "==0.9.0" + }, "uritemplate": { "hashes": [ "sha256:4346edfc5c3b79f694bccd6d6099a322bbeb628dbf2cd86eea55a456ce5124f0", diff --git a/app/llm-template/config.py b/app/llm-template/config.py deleted file mode 100644 index 85851dc..0000000 --- a/app/llm-template/config.py +++ /dev/null @@ -1,10 +0,0 @@ -# config.py - -# Add your configuration variables here -OPENAI_API_KEY = "YOUR_OPENAI_API_KEY" -WANDB_API_KEY = "df1c4099caa8afae3fc83140689c7e799fb0cdad" -GOOGLE_API_KEY = "AIzaSyCIRXC8q5-gKjT5TjiqLxEdKFEmOEzebNQ" -LANGSMITH_API_KEY = "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" - -# Set LangSmith environment variables -LANGCHAIN_PROJECT = 'llmops-demo' \ No newline at end of file diff --git a/app/llm-template/main.py b/app/llm-template/main.py index c20332d..d61f612 100644 --- a/app/llm-template/main.py +++ b/app/llm-template/main.py @@ -26,6 +26,100 @@ prompt_template = PromptTemplate(template="Write a short poem about the sun.", i chain = LLMChain(llm=llm, prompt=prompt_template) response = chain.run({}) -print(response) +# print(response) + +import time +from langsmith import Client, Run +from langsmith.evaluation import EvaluationResult + +# Initialize LangSmith client +client = Client(api_key=LANGSMITH_API_KEY) # Replace with your API key +project_name = "my-gemini-evaluation" # Your LangSmith project name + +def evaluate_gemini_response(prompt, expected_response, gemini_response): + """Evaluates Gemini's response against an expected response and logs to LangSmith.""" + + # 1. Create a Run object (This is the correct way for manual logging) + run = Run( + client=client, + project_name=project_name, + inputs={"prompt": prompt, "expected_response": expected_response}, # Log inputs here + ) + + try: # Use a try-except block for proper error handling + start_time = time.time() + + # ... (Your Gemini API call goes here) ... + llm = ChatGoogleGenerativeAI(model="gemini-2.0-flash-001", google_api_key=GOOGLE_API_KEY, callbacks=[tracer]) + # Example usage of Gemini API + prompt_template = PromptTemplate(template="Start from here: ", input_variables=[]) + chain = LLMChain(llm=llm, prompt=prompt_template) + gemini_response = chain.run({}) # Replace with your actual Gemini call + + end_time = time.time() + latency = end_time - start_time + + run.outputs = {"gemini_response": gemini_response} # Log outputs + run.latency = latency # Log latency + + # 2. End the Run (Important!) + run.end() # Mark the run as complete. + + # 3. Evaluate and log the result + evaluation_result = evaluate_response(expected_response, gemini_response) + run.create_evaluation(evaluation_result) # Log the evaluation + + return evaluation_result + + except Exception as e: # Handle exceptions + run.end(error=str(e)) # Log the error in LangSmith + print(f"Error during Gemini call or evaluation: {e}") + return None # Or handle the error as needed + +def evaluate_response(expected_response, gemini_response): + """Performs the actual evaluation logic. Customize this!""" + + # Example 1: Exact match (simple, but often not realistic) + if expected_response.strip().lower() == gemini_response.strip().lower(): + score = 1.0 # Perfect match + feedback = "Exact match!" + # Example 2: Keyword overlap (more flexible) + elif any(keyword in gemini_response.lower() for keyword in expected_response.lower().split()): + score = 0.7 # Partial match (adjust score as needed) + feedback = "Keyword overlap." + # Example 3: Semantic similarity (requires external library/API) - Advanced! + # ... (Use a library like SentenceTransformers or an API for semantic similarity) ... + else: + score = 0.0 + feedback = "No match." + + # Create a LangSmith EvaluationResult object + evaluation_result = EvaluationResult( + score=score, + value=gemini_response, # The actual response being evaluated + comment=feedback, + # Other metadata you might want to add, like prompt or expected response + metadata = {"expected_response": expected_response} + ) + + return evaluation_result + + + +# Example usage: +prompt = "Translate 'Hello, world!' to French." +expected_response = "Bonjour le monde !" +gemini_response = "Bonjour monde !" # Or get the actual response from Gemini + +evaluation = evaluate_gemini_response(prompt, expected_response, gemini_response) +print(f"Evaluation Score: {evaluation.score}, Feedback: {evaluation.comment}") + +# Another example +prompt = "What is the capital of France?" +expected_response = "Paris" +gemini_response = "The capital of France is Paris." + +evaluation = evaluate_gemini_response(prompt, expected_response, gemini_response) +print(f"Evaluation Score: {evaluation.score}, Feedback: {evaluation.comment}") wandb.finish() \ No newline at end of file diff --git a/notebooks/notebook.ipynb b/notebooks/notebook.ipynb new file mode 100644 index 0000000..e69de29