Spaces:
Running
Running
Srivatsa
commited on
Commit
·
4025ad0
0
Parent(s):
Initial commit
Browse files- .env +1 -0
- .gitignore +1 -0
- .idea/.gitignore +8 -0
- .idea/Portfolio.iml +8 -0
- .idea/inspectionProfiles/Project_Default.xml +232 -0
- .idea/inspectionProfiles/profiles_settings.xml +6 -0
- .idea/misc.xml +7 -0
- .idea/modules.xml +8 -0
- .idea/vcs.xml +6 -0
- main.py +95 -0
- requirements.txt +11 -0
.env
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
GROQ_API_KEY="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"
|
.gitignore
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
portfolio
|
.idea/.gitignore
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Default ignored files
|
| 2 |
+
/shelf/
|
| 3 |
+
/workspace.xml
|
| 4 |
+
# Editor-based HTTP Client requests
|
| 5 |
+
/httpRequests/
|
| 6 |
+
# Datasource local storage ignored files
|
| 7 |
+
/dataSources/
|
| 8 |
+
/dataSources.local.xml
|
.idea/Portfolio.iml
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?xml version="1.0" encoding="UTF-8"?>
|
| 2 |
+
<module type="PYTHON_MODULE" version="4">
|
| 3 |
+
<component name="NewModuleRootManager">
|
| 4 |
+
<content url="file://$MODULE_DIR$" />
|
| 5 |
+
<orderEntry type="jdk" jdkName="Python 3.13 (Portfolio)" jdkType="Python SDK" />
|
| 6 |
+
<orderEntry type="sourceFolder" forTests="false" />
|
| 7 |
+
</component>
|
| 8 |
+
</module>
|
.idea/inspectionProfiles/Project_Default.xml
ADDED
|
@@ -0,0 +1,232 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<component name="InspectionProjectProfileManager">
|
| 2 |
+
<profile version="1.0">
|
| 3 |
+
<option name="myName" value="Project Default" />
|
| 4 |
+
<inspection_tool class="Eslint" enabled="true" level="WARNING" enabled_by_default="true" />
|
| 5 |
+
<inspection_tool class="JupyterPackageInspection" enabled="false" level="WARNING" enabled_by_default="false" />
|
| 6 |
+
<inspection_tool class="PyPackageRequirementsInspection" enabled="true" level="WARNING" enabled_by_default="true">
|
| 7 |
+
<option name="ignoredPackages">
|
| 8 |
+
<value>
|
| 9 |
+
<list size="200">
|
| 10 |
+
<item index="0" class="java.lang.String" itemvalue="tangled-up-in-unicode" />
|
| 11 |
+
<item index="1" class="java.lang.String" itemvalue="numba" />
|
| 12 |
+
<item index="2" class="java.lang.String" itemvalue="py" />
|
| 13 |
+
<item index="3" class="java.lang.String" itemvalue="coreschema" />
|
| 14 |
+
<item index="4" class="java.lang.String" itemvalue="patsy" />
|
| 15 |
+
<item index="5" class="java.lang.String" itemvalue="credential" />
|
| 16 |
+
<item index="6" class="java.lang.String" itemvalue="comm" />
|
| 17 |
+
<item index="7" class="java.lang.String" itemvalue="pydantic" />
|
| 18 |
+
<item index="8" class="java.lang.String" itemvalue="Werkzeug" />
|
| 19 |
+
<item index="9" class="java.lang.String" itemvalue="asgiref" />
|
| 20 |
+
<item index="10" class="java.lang.String" itemvalue="wordcloud" />
|
| 21 |
+
<item index="11" class="java.lang.String" itemvalue="click" />
|
| 22 |
+
<item index="12" class="java.lang.String" itemvalue="ipykernel" />
|
| 23 |
+
<item index="13" class="java.lang.String" itemvalue="phik" />
|
| 24 |
+
<item index="14" class="java.lang.String" itemvalue="contourpy" />
|
| 25 |
+
<item index="15" class="java.lang.String" itemvalue="psutil" />
|
| 26 |
+
<item index="16" class="java.lang.String" itemvalue="pdoc3" />
|
| 27 |
+
<item index="17" class="java.lang.String" itemvalue="regex" />
|
| 28 |
+
<item index="18" class="java.lang.String" itemvalue="pydantic_core" />
|
| 29 |
+
<item index="19" class="java.lang.String" itemvalue="platformdirs" />
|
| 30 |
+
<item index="20" class="java.lang.String" itemvalue="cytoolz" />
|
| 31 |
+
<item index="21" class="java.lang.String" itemvalue="matplotlib" />
|
| 32 |
+
<item index="22" class="java.lang.String" itemvalue="Mako" />
|
| 33 |
+
<item index="23" class="java.lang.String" itemvalue="PyJWT" />
|
| 34 |
+
<item index="24" class="java.lang.String" itemvalue="networkx" />
|
| 35 |
+
<item index="25" class="java.lang.String" itemvalue="pluggy" />
|
| 36 |
+
<item index="26" class="java.lang.String" itemvalue="numpy" />
|
| 37 |
+
<item index="27" class="java.lang.String" itemvalue="requests" />
|
| 38 |
+
<item index="28" class="java.lang.String" itemvalue="bitarray" />
|
| 39 |
+
<item index="29" class="java.lang.String" itemvalue="drf-yasg" />
|
| 40 |
+
<item index="30" class="java.lang.String" itemvalue="eth-account" />
|
| 41 |
+
<item index="31" class="java.lang.String" itemvalue="celery" />
|
| 42 |
+
<item index="32" class="java.lang.String" itemvalue="seaborn" />
|
| 43 |
+
<item index="33" class="java.lang.String" itemvalue="stack-data" />
|
| 44 |
+
<item index="34" class="java.lang.String" itemvalue="multimethod" />
|
| 45 |
+
<item index="35" class="java.lang.String" itemvalue="PyWavelets" />
|
| 46 |
+
<item index="36" class="java.lang.String" itemvalue="ruamel.yaml.clib" />
|
| 47 |
+
<item index="37" class="java.lang.String" itemvalue="nest-asyncio" />
|
| 48 |
+
<item index="38" class="java.lang.String" itemvalue="prompt-toolkit" />
|
| 49 |
+
<item index="39" class="java.lang.String" itemvalue="visions" />
|
| 50 |
+
<item index="40" class="java.lang.String" itemvalue="itsdangerous" />
|
| 51 |
+
<item index="41" class="java.lang.String" itemvalue="websockets" />
|
| 52 |
+
<item index="42" class="java.lang.String" itemvalue="blinker" />
|
| 53 |
+
<item index="43" class="java.lang.String" itemvalue="ovh" />
|
| 54 |
+
<item index="44" class="java.lang.String" itemvalue="uritemplate" />
|
| 55 |
+
<item index="45" class="java.lang.String" itemvalue="annotated-types" />
|
| 56 |
+
<item index="46" class="java.lang.String" itemvalue="scipy" />
|
| 57 |
+
<item index="47" class="java.lang.String" itemvalue="ydata-profiling" />
|
| 58 |
+
<item index="48" class="java.lang.String" itemvalue="amqp" />
|
| 59 |
+
<item index="49" class="java.lang.String" itemvalue="parsimonious" />
|
| 60 |
+
<item index="50" class="java.lang.String" itemvalue="web3" />
|
| 61 |
+
<item index="51" class="java.lang.String" itemvalue="hpack" />
|
| 62 |
+
<item index="52" class="java.lang.String" itemvalue="toml" />
|
| 63 |
+
<item index="53" class="java.lang.String" itemvalue="toolz" />
|
| 64 |
+
<item index="54" class="java.lang.String" itemvalue="eth-keyfile" />
|
| 65 |
+
<item index="55" class="java.lang.String" itemvalue="rlp" />
|
| 66 |
+
<item index="56" class="java.lang.String" itemvalue="typing_extensions" />
|
| 67 |
+
<item index="57" class="java.lang.String" itemvalue="debugpy" />
|
| 68 |
+
<item index="58" class="java.lang.String" itemvalue="itypes" />
|
| 69 |
+
<item index="59" class="java.lang.String" itemvalue="statsmodels" />
|
| 70 |
+
<item index="60" class="java.lang.String" itemvalue="multidict" />
|
| 71 |
+
<item index="61" class="java.lang.String" itemvalue="yarl" />
|
| 72 |
+
<item index="62" class="java.lang.String" itemvalue="click-repl" />
|
| 73 |
+
<item index="63" class="java.lang.String" itemvalue="pycryptodome" />
|
| 74 |
+
<item index="64" class="java.lang.String" itemvalue="eth-utils" />
|
| 75 |
+
<item index="65" class="java.lang.String" itemvalue="dacite" />
|
| 76 |
+
<item index="66" class="java.lang.String" itemvalue="inflection" />
|
| 77 |
+
<item index="67" class="java.lang.String" itemvalue="Pillow" />
|
| 78 |
+
<item index="68" class="java.lang.String" itemvalue="traitlets" />
|
| 79 |
+
<item index="69" class="java.lang.String" itemvalue="varint" />
|
| 80 |
+
<item index="70" class="java.lang.String" itemvalue="protobuf" />
|
| 81 |
+
<item index="71" class="java.lang.String" itemvalue="hexbytes" />
|
| 82 |
+
<item index="72" class="java.lang.String" itemvalue="panda" />
|
| 83 |
+
<item index="73" class="java.lang.String" itemvalue="python-dotenv" />
|
| 84 |
+
<item index="74" class="java.lang.String" itemvalue="cycler" />
|
| 85 |
+
<item index="75" class="java.lang.String" itemvalue="kombu" />
|
| 86 |
+
<item index="76" class="java.lang.String" itemvalue="eth-hash" />
|
| 87 |
+
<item index="77" class="java.lang.String" itemvalue="frozenlist" />
|
| 88 |
+
<item index="78" class="java.lang.String" itemvalue="fsspec" />
|
| 89 |
+
<item index="79" class="java.lang.String" itemvalue="filelock" />
|
| 90 |
+
<item index="80" class="java.lang.String" itemvalue="eth-typing" />
|
| 91 |
+
<item index="81" class="java.lang.String" itemvalue="safetensors" />
|
| 92 |
+
<item index="82" class="java.lang.String" itemvalue="pyparsing" />
|
| 93 |
+
<item index="83" class="java.lang.String" itemvalue="Markdown" />
|
| 94 |
+
<item index="84" class="java.lang.String" itemvalue="vine" />
|
| 95 |
+
<item index="85" class="java.lang.String" itemvalue="memory-profiler" />
|
| 96 |
+
<item index="86" class="java.lang.String" itemvalue="tokenizers" />
|
| 97 |
+
<item index="87" class="java.lang.String" itemvalue="email-validator" />
|
| 98 |
+
<item index="88" class="java.lang.String" itemvalue="dnspython" />
|
| 99 |
+
<item index="89" class="java.lang.String" itemvalue="eth-abi" />
|
| 100 |
+
<item index="90" class="java.lang.String" itemvalue="iniconfig" />
|
| 101 |
+
<item index="91" class="java.lang.String" itemvalue="cryptography" />
|
| 102 |
+
<item index="92" class="java.lang.String" itemvalue="kiwisolver" />
|
| 103 |
+
<item index="93" class="java.lang.String" itemvalue="appnope" />
|
| 104 |
+
<item index="94" class="java.lang.String" itemvalue="alastria-identity" />
|
| 105 |
+
<item index="95" class="java.lang.String" itemvalue="fonttools" />
|
| 106 |
+
<item index="96" class="java.lang.String" itemvalue="mock" />
|
| 107 |
+
<item index="97" class="java.lang.String" itemvalue="multiaddr" />
|
| 108 |
+
<item index="98" class="java.lang.String" itemvalue="lru-dict" />
|
| 109 |
+
<item index="99" class="java.lang.String" itemvalue="credentials" />
|
| 110 |
+
<item index="100" class="java.lang.String" itemvalue="wcwidth" />
|
| 111 |
+
<item index="101" class="java.lang.String" itemvalue="llvmlite" />
|
| 112 |
+
<item index="102" class="java.lang.String" itemvalue="click-didyoumean" />
|
| 113 |
+
<item index="103" class="java.lang.String" itemvalue="typeguard" />
|
| 114 |
+
<item index="104" class="java.lang.String" itemvalue="sqlparse" />
|
| 115 |
+
<item index="105" class="java.lang.String" itemvalue="eth-rlp" />
|
| 116 |
+
<item index="106" class="java.lang.String" itemvalue="netaddr" />
|
| 117 |
+
<item index="107" class="java.lang.String" itemvalue="billiard" />
|
| 118 |
+
<item index="108" class="java.lang.String" itemvalue="Flask" />
|
| 119 |
+
<item index="109" class="java.lang.String" itemvalue="eth-keys" />
|
| 120 |
+
<item index="110" class="java.lang.String" itemvalue="pytest" />
|
| 121 |
+
<item index="111" class="java.lang.String" itemvalue="ruamel.yaml" />
|
| 122 |
+
<item index="112" class="java.lang.String" itemvalue="tzdata" />
|
| 123 |
+
<item index="113" class="java.lang.String" itemvalue="ecdsa" />
|
| 124 |
+
<item index="114" class="java.lang.String" itemvalue="ipython" />
|
| 125 |
+
<item index="115" class="java.lang.String" itemvalue="pipdeptree" />
|
| 126 |
+
<item index="116" class="java.lang.String" itemvalue="tqdm" />
|
| 127 |
+
<item index="117" class="java.lang.String" itemvalue="base58" />
|
| 128 |
+
<item index="118" class="java.lang.String" itemvalue="coreapi" />
|
| 129 |
+
<item index="119" class="java.lang.String" itemvalue="aiohttp" />
|
| 130 |
+
<item index="120" class="java.lang.String" itemvalue="ipfshttpclient" />
|
| 131 |
+
<item index="121" class="java.lang.String" itemvalue="click-plugins" />
|
| 132 |
+
<item index="122" class="java.lang.String" itemvalue="aiosignal" />
|
| 133 |
+
<item index="123" class="java.lang.String" itemvalue="ImageHash" />
|
| 134 |
+
<item index="124" class="java.lang.String" itemvalue="jwcrypto" />
|
| 135 |
+
<item index="125" class="java.lang.String" itemvalue="pbr" />
|
| 136 |
+
<item index="126" class="java.lang.String" itemvalue="netifaces" />
|
| 137 |
+
<item index="127" class="java.lang.String" itemvalue="cliff" />
|
| 138 |
+
<item index="128" class="java.lang.String" itemvalue="debtcollector" />
|
| 139 |
+
<item index="129" class="java.lang.String" itemvalue="keystoneauth1" />
|
| 140 |
+
<item index="130" class="java.lang.String" itemvalue="rfc3986" />
|
| 141 |
+
<item index="131" class="java.lang.String" itemvalue="python-cinderclient" />
|
| 142 |
+
<item index="132" class="java.lang.String" itemvalue="oslo.i18n" />
|
| 143 |
+
<item index="133" class="java.lang.String" itemvalue="cmd2" />
|
| 144 |
+
<item index="134" class="java.lang.String" itemvalue="certifi" />
|
| 145 |
+
<item index="135" class="java.lang.String" itemvalue="pyreadline3" />
|
| 146 |
+
<item index="136" class="java.lang.String" itemvalue="flask-os" />
|
| 147 |
+
<item index="137" class="java.lang.String" itemvalue="python-openstackclient" />
|
| 148 |
+
<item index="138" class="java.lang.String" itemvalue="urllib3" />
|
| 149 |
+
<item index="139" class="java.lang.String" itemvalue="dogpile.cache" />
|
| 150 |
+
<item index="140" class="java.lang.String" itemvalue="pyperclip" />
|
| 151 |
+
<item index="141" class="java.lang.String" itemvalue="oslo.utils" />
|
| 152 |
+
<item index="142" class="java.lang.String" itemvalue="stevedore" />
|
| 153 |
+
<item index="143" class="java.lang.String" itemvalue="iso8601" />
|
| 154 |
+
<item index="144" class="java.lang.String" itemvalue="openstacksdk" />
|
| 155 |
+
<item index="145" class="java.lang.String" itemvalue="os-service-types" />
|
| 156 |
+
<item index="146" class="java.lang.String" itemvalue="wrapt" />
|
| 157 |
+
<item index="147" class="java.lang.String" itemvalue="jsonpointer" />
|
| 158 |
+
<item index="148" class="java.lang.String" itemvalue="packaging" />
|
| 159 |
+
<item index="149" class="java.lang.String" itemvalue="osc-lib" />
|
| 160 |
+
<item index="150" class="java.lang.String" itemvalue="oslo.config" />
|
| 161 |
+
<item index="151" class="java.lang.String" itemvalue="requestsexceptions" />
|
| 162 |
+
<item index="152" class="java.lang.String" itemvalue="simplejson" />
|
| 163 |
+
<item index="153" class="java.lang.String" itemvalue="jmespath" />
|
| 164 |
+
<item index="154" class="java.lang.String" itemvalue="prettytable" />
|
| 165 |
+
<item index="155" class="java.lang.String" itemvalue="autopage" />
|
| 166 |
+
<item index="156" class="java.lang.String" itemvalue="colorama" />
|
| 167 |
+
<item index="157" class="java.lang.String" itemvalue="jsonpatch" />
|
| 168 |
+
<item index="158" class="java.lang.String" itemvalue="msgpack" />
|
| 169 |
+
<item index="159" class="java.lang.String" itemvalue="oslo.serialization" />
|
| 170 |
+
<item index="160" class="java.lang.String" itemvalue="python-novaclient" />
|
| 171 |
+
<item index="161" class="java.lang.String" itemvalue="python-keystoneclient" />
|
| 172 |
+
<item index="162" class="java.lang.String" itemvalue="flask-swagger-ui" />
|
| 173 |
+
<item index="163" class="java.lang.String" itemvalue="psycopg2-binary" />
|
| 174 |
+
<item index="164" class="java.lang.String" itemvalue="pyspark" />
|
| 175 |
+
<item index="165" class="java.lang.String" itemvalue="dill" />
|
| 176 |
+
<item index="166" class="java.lang.String" itemvalue="swagger-ui-py" />
|
| 177 |
+
<item index="167" class="java.lang.String" itemvalue="astroid" />
|
| 178 |
+
<item index="168" class="java.lang.String" itemvalue="htmlmin" />
|
| 179 |
+
<item index="169" class="java.lang.String" itemvalue="py4j" />
|
| 180 |
+
<item index="170" class="java.lang.String" itemvalue="fhir.resources" />
|
| 181 |
+
<item index="171" class="java.lang.String" itemvalue="pandas" />
|
| 182 |
+
<item index="172" class="java.lang.String" itemvalue="ipython-genutils" />
|
| 183 |
+
<item index="173" class="java.lang.String" itemvalue="hl7apy" />
|
| 184 |
+
<item index="174" class="java.lang.String" itemvalue="tomlkit" />
|
| 185 |
+
<item index="175" class="java.lang.String" itemvalue="munkres" />
|
| 186 |
+
<item index="176" class="java.lang.String" itemvalue="mccabe" />
|
| 187 |
+
<item index="177" class="java.lang.String" itemvalue="pylint" />
|
| 188 |
+
<item index="178" class="java.lang.String" itemvalue="isort" />
|
| 189 |
+
<item index="179" class="java.lang.String" itemvalue="flask" />
|
| 190 |
+
<item index="180" class="java.lang.String" itemvalue="hl7parser" />
|
| 191 |
+
<item index="181" class="java.lang.String" itemvalue="scikit-learn" />
|
| 192 |
+
<item index="182" class="java.lang.String" itemvalue="sentence_transformers" />
|
| 193 |
+
<item index="183" class="java.lang.String" itemvalue="unstructured" />
|
| 194 |
+
<item index="184" class="java.lang.String" itemvalue="fastapi" />
|
| 195 |
+
<item index="185" class="java.lang.String" itemvalue="uvicorn" />
|
| 196 |
+
<item index="186" class="java.lang.String" itemvalue="chromadb" />
|
| 197 |
+
<item index="187" class="java.lang.String" itemvalue="transformers" />
|
| 198 |
+
<item index="188" class="java.lang.String" itemvalue="langchain" />
|
| 199 |
+
<item index="189" class="java.lang.String" itemvalue="accelerate" />
|
| 200 |
+
<item index="190" class="java.lang.String" itemvalue="sentence-transformers" />
|
| 201 |
+
<item index="191" class="java.lang.String" itemvalue="langchain_community" />
|
| 202 |
+
<item index="192" class="java.lang.String" itemvalue="bitsandbytes" />
|
| 203 |
+
<item index="193" class="java.lang.String" itemvalue="faiss-cpu" />
|
| 204 |
+
<item index="194" class="java.lang.String" itemvalue="starlette" />
|
| 205 |
+
<item index="195" class="java.lang.String" itemvalue="typing" />
|
| 206 |
+
<item index="196" class="java.lang.String" itemvalue="jupyter" />
|
| 207 |
+
<item index="197" class="java.lang.String" itemvalue="tensorflow" />
|
| 208 |
+
<item index="198" class="java.lang.String" itemvalue="pillow" />
|
| 209 |
+
<item index="199" class="java.lang.String" itemvalue="PyPDF2" />
|
| 210 |
+
</list>
|
| 211 |
+
</value>
|
| 212 |
+
</option>
|
| 213 |
+
</inspection_tool>
|
| 214 |
+
<inspection_tool class="PyPep8NamingInspection" enabled="true" level="WEAK WARNING" enabled_by_default="true">
|
| 215 |
+
<option name="ignoredErrors">
|
| 216 |
+
<list>
|
| 217 |
+
<option value="N802" />
|
| 218 |
+
<option value="N806" />
|
| 219 |
+
<option value="N801" />
|
| 220 |
+
</list>
|
| 221 |
+
</option>
|
| 222 |
+
</inspection_tool>
|
| 223 |
+
<inspection_tool class="PyTypeCheckerInspection" enabled="false" level="WARNING" enabled_by_default="false" />
|
| 224 |
+
<inspection_tool class="PyUnresolvedReferencesInspection" enabled="true" level="WARNING" enabled_by_default="true">
|
| 225 |
+
<option name="ignoredIdentifiers">
|
| 226 |
+
<list>
|
| 227 |
+
<option value="path" />
|
| 228 |
+
</list>
|
| 229 |
+
</option>
|
| 230 |
+
</inspection_tool>
|
| 231 |
+
</profile>
|
| 232 |
+
</component>
|
.idea/inspectionProfiles/profiles_settings.xml
ADDED
|
@@ -0,0 +1,6 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<component name="InspectionProjectProfileManager">
|
| 2 |
+
<settings>
|
| 3 |
+
<option name="USE_PROJECT_PROFILE" value="false" />
|
| 4 |
+
<version value="1.0" />
|
| 5 |
+
</settings>
|
| 6 |
+
</component>
|
.idea/misc.xml
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?xml version="1.0" encoding="UTF-8"?>
|
| 2 |
+
<project version="4">
|
| 3 |
+
<component name="Black">
|
| 4 |
+
<option name="sdkName" value="Python 3.12 (Thesis_project_1)" />
|
| 5 |
+
</component>
|
| 6 |
+
<component name="ProjectRootManager" version="2" project-jdk-name="Python 3.13 (Portfolio)" project-jdk-type="Python SDK" />
|
| 7 |
+
</project>
|
.idea/modules.xml
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?xml version="1.0" encoding="UTF-8"?>
|
| 2 |
+
<project version="4">
|
| 3 |
+
<component name="ProjectModuleManager">
|
| 4 |
+
<modules>
|
| 5 |
+
<module fileurl="file://$PROJECT_DIR$/.idea/Portfolio.iml" filepath="$PROJECT_DIR$/.idea/Portfolio.iml" />
|
| 6 |
+
</modules>
|
| 7 |
+
</component>
|
| 8 |
+
</project>
|
.idea/vcs.xml
ADDED
|
@@ -0,0 +1,6 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?xml version="1.0" encoding="UTF-8"?>
|
| 2 |
+
<project version="4">
|
| 3 |
+
<component name="VcsDirectoryMappings">
|
| 4 |
+
<mapping directory="$PROJECT_DIR$" vcs="Git" />
|
| 5 |
+
</component>
|
| 6 |
+
</project>
|
main.py
ADDED
|
@@ -0,0 +1,95 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
from langchain_groq import ChatGroq
|
| 2 |
+
from langchain_community.document_loaders import PyPDFLoader, UnstructuredWordDocumentLoader, TextLoader
|
| 3 |
+
from langchain_text_splitters import RecursiveCharacterTextSplitter
|
| 4 |
+
from langchain_community.embeddings import HuggingFaceEmbeddings
|
| 5 |
+
from langchain_community.vectorstores import FAISS
|
| 6 |
+
from langchain_core.prompts import ChatPromptTemplate
|
| 7 |
+
from langchain_core.output_parsers import StrOutputParser
|
| 8 |
+
from langchain_core.runnables import RunnablePassthrough
|
| 9 |
+
import os
|
| 10 |
+
from dotenv import load_dotenv
|
| 11 |
+
|
| 12 |
+
load_dotenv()
|
| 13 |
+
|
| 14 |
+
|
| 15 |
+
def load_resume(file_path):
|
| 16 |
+
"""Load resume from PDF, DOCX, or TXT"""
|
| 17 |
+
if file_path.endswith('.pdf'):
|
| 18 |
+
loader = PyPDFLoader(file_path)
|
| 19 |
+
elif file_path.endswith('.docx'):
|
| 20 |
+
loader = UnstructuredWordDocumentLoader(file_path)
|
| 21 |
+
elif file_path.endswith('.txt'):
|
| 22 |
+
loader = TextLoader(file_path)
|
| 23 |
+
else:
|
| 24 |
+
raise ValueError("Supported formats: PDF, DOCX, TXT")
|
| 25 |
+
|
| 26 |
+
return loader.load()
|
| 27 |
+
|
| 28 |
+
|
| 29 |
+
def create_resume_qa_system(resume_file_path):
|
| 30 |
+
"""Create complete resume Q&A system"""
|
| 31 |
+
|
| 32 |
+
# 1. Load and split resume
|
| 33 |
+
docs = load_resume(resume_file_path)
|
| 34 |
+
text_splitter = RecursiveCharacterTextSplitter(
|
| 35 |
+
chunk_size=800,
|
| 36 |
+
chunk_overlap=100
|
| 37 |
+
)
|
| 38 |
+
splits = text_splitter.split_documents(docs)
|
| 39 |
+
|
| 40 |
+
# 2. Create embeddings and vector store
|
| 41 |
+
embeddings = HuggingFaceEmbeddings(
|
| 42 |
+
model_name="sentence-transformers/all-MiniLM-L6-v2"
|
| 43 |
+
)
|
| 44 |
+
vectorstore = FAISS.from_documents(splits, embeddings)
|
| 45 |
+
|
| 46 |
+
# 3. Setup LLM
|
| 47 |
+
llm = ChatGroq(
|
| 48 |
+
api_key=os.getenv('GROQ_API_KEY'),
|
| 49 |
+
model=os.getenv('GROQ_MODEL', 'llama-3.1-8b-instant'),
|
| 50 |
+
temperature=0.1
|
| 51 |
+
)
|
| 52 |
+
|
| 53 |
+
# 4. Retrieval chain
|
| 54 |
+
retriever = vectorstore.as_retriever(search_kwargs={"k": 4})
|
| 55 |
+
|
| 56 |
+
template = """Use the following resume context to answer the question.
|
| 57 |
+
If you don't know the answer, say so. Answer concisely and accurately.
|
| 58 |
+
|
| 59 |
+
Context: {context}
|
| 60 |
+
|
| 61 |
+
Question: {question}
|
| 62 |
+
|
| 63 |
+
Answer:"""
|
| 64 |
+
|
| 65 |
+
prompt = ChatPromptTemplate.from_template(template)
|
| 66 |
+
|
| 67 |
+
def format_docs(docs):
|
| 68 |
+
return "\n\n".join(doc.page_content for doc in docs)
|
| 69 |
+
|
| 70 |
+
chain = (
|
| 71 |
+
{"context": retriever | format_docs, "question": RunnablePassthrough()}
|
| 72 |
+
| prompt
|
| 73 |
+
| llm
|
| 74 |
+
| StrOutputParser()
|
| 75 |
+
)
|
| 76 |
+
|
| 77 |
+
return chain
|
| 78 |
+
|
| 79 |
+
|
| 80 |
+
# Usage
|
| 81 |
+
if __name__ == "__main__":
|
| 82 |
+
# Replace with your resume path
|
| 83 |
+
qa_chain = create_resume_qa_system("path/to/your/resume.pdf")
|
| 84 |
+
|
| 85 |
+
# Ask questions
|
| 86 |
+
questions = [
|
| 87 |
+
"What is my experience with Microsoft Fabric?",
|
| 88 |
+
"List my technical skills",
|
| 89 |
+
"What certifications do I have?",
|
| 90 |
+
"Describe my Databricks projects"
|
| 91 |
+
]
|
| 92 |
+
|
| 93 |
+
for question in questions:
|
| 94 |
+
answer = qa_chain.invoke(question)
|
| 95 |
+
print(f"Q: {question}\nA: {answer}\n{'-' * 50}")
|
requirements.txt
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
fastapi
|
| 2 |
+
uvicorn
|
| 3 |
+
langchain-groq
|
| 4 |
+
langchain-community
|
| 5 |
+
langchain-text-splitters
|
| 6 |
+
langchain-core
|
| 7 |
+
sentence-transformers
|
| 8 |
+
faiss-cpu
|
| 9 |
+
pypdf
|
| 10 |
+
python-dotenv
|
| 11 |
+
python-multipart
|