drewgenai commited on
Commit
a5c102a
·
1 Parent(s): e5abbe4

cleanup superfluous code and libraries

Browse files
Files changed (4) hide show
  1. app.py +7 -19
  2. pyproject.toml +30 -50
  3. requirements.txt +210 -0
  4. uv.lock +7 -119
app.py CHANGED
@@ -8,11 +8,10 @@ from langchain_core.documents import Document
8
  from langchain_community.document_loaders import PyMuPDFLoader
9
  from langchain_experimental.text_splitter import SemanticChunker
10
  from langchain_community.vectorstores import Qdrant
11
- from langchain_community.embeddings import HuggingFaceEmbeddings
12
  from langchain_core.output_parsers import StrOutputParser
13
  from langchain_openai import ChatOpenAI
14
  from langchain_core.prompts import ChatPromptTemplate
15
- from langgraph.graph import START, StateGraph
16
  from langchain.tools import tool
17
  from langchain.schema import HumanMessage
18
  from typing_extensions import List, TypedDict
@@ -27,26 +26,21 @@ OUTPUT_PATH = "output/"
27
  os.makedirs(UPLOAD_PATH, exist_ok=True)
28
  os.makedirs(OUTPUT_PATH, exist_ok=True)
29
 
30
- # Initialize embeddings model
31
  model_id = "Snowflake/snowflake-arctic-embed-m"
32
  embedding_model = HuggingFaceEmbeddings(model_name=model_id)
33
-
34
- # Define semantic chunker
35
  semantic_splitter = SemanticChunker(embedding_model)
36
-
37
- # Initialize LLM
38
  llm = ChatOpenAI(model="gpt-4o-mini")
39
 
40
- # Define RAG prompt
 
41
  export_prompt = """
42
  CONTEXT:
 
43
  {context}
44
 
45
  QUERY:
46
  {question}
47
 
48
- You are a helpful assistant. Use the available context to answer the question.
49
-
50
  Between these two files containing protocols, identify and match **entire assessment sections** based on conceptual similarity. Do NOT match individual questions.
51
 
52
  ### **Output Format:**
@@ -101,6 +95,8 @@ Provide a natural-language response using the given information. If you do not k
101
  query_prompt = ChatPromptTemplate.from_template(QUERY_PROMPT)
102
 
103
 
 
 
104
  @tool
105
  def document_query_tool(question: str) -> str:
106
  """Retrieves relevant document sections and answers questions based on the uploaded documents."""
@@ -122,8 +118,6 @@ def document_query_tool(question: str) -> str:
122
  "context": retrieved_docs
123
  }
124
 
125
-
126
-
127
  @tool
128
  def document_comparison_tool(question: str) -> str:
129
  """Compares documents, identifies matched elements, exports them as JSON, formats into CSV, and provides a download link."""
@@ -158,12 +152,6 @@ def document_comparison_tool(question: str) -> str:
158
  except json.JSONDecodeError:
159
  return "Error: Response is not valid JSON."
160
 
161
-
162
-
163
- tool_belt = [document_query_tool, document_comparison_tool]
164
- model = ChatOpenAI(model="gpt-4o", temperature=0)
165
- model = model.bind_tools(tool_belt)
166
-
167
  async def process_files(files: list[cl.File]):
168
  documents_with_metadata = []
169
  for file in files:
@@ -226,4 +214,4 @@ async def handle_message(message: cl.Message):
226
  await cl.Message(file_path).send()
227
  else:
228
  response_text = document_query_tool.invoke(user_input)
229
- await cl.Message(response_text["messages"][0].content).send()
 
8
  from langchain_community.document_loaders import PyMuPDFLoader
9
  from langchain_experimental.text_splitter import SemanticChunker
10
  from langchain_community.vectorstores import Qdrant
11
+ from langchain_huggingface import HuggingFaceEmbeddings
12
  from langchain_core.output_parsers import StrOutputParser
13
  from langchain_openai import ChatOpenAI
14
  from langchain_core.prompts import ChatPromptTemplate
 
15
  from langchain.tools import tool
16
  from langchain.schema import HumanMessage
17
  from typing_extensions import List, TypedDict
 
26
  os.makedirs(UPLOAD_PATH, exist_ok=True)
27
  os.makedirs(OUTPUT_PATH, exist_ok=True)
28
 
 
29
  model_id = "Snowflake/snowflake-arctic-embed-m"
30
  embedding_model = HuggingFaceEmbeddings(model_name=model_id)
 
 
31
  semantic_splitter = SemanticChunker(embedding_model)
 
 
32
  llm = ChatOpenAI(model="gpt-4o-mini")
33
 
34
+
35
+ # comparison prompt
36
  export_prompt = """
37
  CONTEXT:
38
+ CONTEXT:
39
  {context}
40
 
41
  QUERY:
42
  {question}
43
 
 
 
44
  Between these two files containing protocols, identify and match **entire assessment sections** based on conceptual similarity. Do NOT match individual questions.
45
 
46
  ### **Output Format:**
 
95
  query_prompt = ChatPromptTemplate.from_template(QUERY_PROMPT)
96
 
97
 
98
+ ## tool configurations
99
+
100
  @tool
101
  def document_query_tool(question: str) -> str:
102
  """Retrieves relevant document sections and answers questions based on the uploaded documents."""
 
118
  "context": retrieved_docs
119
  }
120
 
 
 
121
  @tool
122
  def document_comparison_tool(question: str) -> str:
123
  """Compares documents, identifies matched elements, exports them as JSON, formats into CSV, and provides a download link."""
 
152
  except json.JSONDecodeError:
153
  return "Error: Response is not valid JSON."
154
 
 
 
 
 
 
 
155
  async def process_files(files: list[cl.File]):
156
  documents_with_metadata = []
157
  for file in files:
 
214
  await cl.Message(file_path).send()
215
  else:
216
  response_text = document_query_tool.invoke(user_input)
217
+ await cl.Message(response_text["messages"][0].content).send()
pyproject.toml CHANGED
@@ -5,53 +5,33 @@ description = "midterm POC huggingface project"
5
  readme = "README.md"
6
  requires-python = ">=3.13"
7
  dependencies = [
8
- "chainlit",
9
- "langchain",
10
- "langchain_community",
11
- "tqdm",
12
- "PyMuPDF",
13
- "openai>=1.59.9",
14
- "pypdf2>=3.0.1",
15
- "websockets",
16
- "qdrant-client",
17
- "langchain",
18
- "langchain-community",
19
- "langchain-openai",
20
- "unstructured",
21
- "pymupdf",
22
- "qdrant-client",
23
- "langgraph",
24
- "langchain-core",
25
- "langchain-openai",
26
- "langchain-community",
27
- "ragas",
28
- "langchain_experimental",
29
- ###review
30
- ### cleanup
31
- "langchain-core==0.3.31",
32
- "langchain==0.3.15",
33
- "langchain-community==0.3.15",
34
- "langchain-openai==0.3.1",
35
- "langchain-qdrant==0.2.0",
36
- "langchain-text-splitters>=0.3.5",
37
- "langchain-huggingface==0.1.2",
38
- #"langgraph>=0.2.67",
39
- "langsmith>=0.3.1",
40
- "lxml>=5.3.0",
41
- ###notebook
42
- "ipykernel",
43
- "ipywidgets",
44
- "IProgress",
45
- "huggingface_hub",
46
- "wandb",
47
- "transformers",
48
- "accelerate",
49
- "torch",
50
- #### ragas
51
- #"ragas==0.2.10"
52
- #"FAISS"
53
- #remove only used for testing
54
- #"cohere",
55
- #"langchain_cohere",
56
- #"arxiv"
57
- ]
 
5
  readme = "README.md"
6
  requires-python = ">=3.13"
7
  dependencies = [
8
+ "IProgress",
9
+ "PyMuPDF",
10
+ "accelerate",
11
+ "chainlit",
12
+ "huggingface_hub",
13
+ "ipykernel",
14
+ "ipywidgets",
15
+ "langchain",
16
+ "langchain-community",
17
+ "langchain-core",
18
+ "langchain-experimental",
19
+ "langchain-huggingface",
20
+ "langchain-openai",
21
+ "langchain-qdrant",
22
+ "langchain-text-splitters",
23
+ "langgraph",
24
+ "langsmith",
25
+ "lxml",
26
+ "openai",
27
+ "pymupdf",
28
+ "pypdf2",
29
+ "qdrant-client",
30
+ "ragas",
31
+ "torch",
32
+ "transformers",
33
+ "tqdm",
34
+ "unstructured",
35
+ "wandb",
36
+ "websockets"
37
+ ]
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
requirements.txt ADDED
@@ -0,0 +1,210 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ accelerate==1.4.0
2
+ aiofiles==23.2.1
3
+ aiohappyeyeballs==2.4.6
4
+ aiohttp==3.11.13
5
+ aiosignal==1.3.2
6
+ annotated-types==0.7.0
7
+ anyio==4.8.0
8
+ appdirs==1.4.4
9
+ asttokens==3.0.0
10
+ asyncer==0.0.7
11
+ attrs==25.1.0
12
+ backoff==2.2.1
13
+ beautifulsoup4==4.13.3
14
+ bidict==0.23.1
15
+ certifi==2025.1.31
16
+ cffi==1.17.1
17
+ chainlit==2.2.1
18
+ chardet==5.2.0
19
+ charset-normalizer==3.4.1
20
+ chevron==0.14.0
21
+ click==8.1.8
22
+ comm==0.2.2
23
+ cryptography==44.0.1
24
+ dataclasses-json==0.6.7
25
+ datasets==3.3.2
26
+ debugpy==1.8.12
27
+ decorator==5.2.1
28
+ deepdiff==8.2.0
29
+ deprecated==1.2.18
30
+ dill==0.3.8
31
+ diskcache==5.6.3
32
+ distro==1.9.0
33
+ docker-pycreds==0.4.0
34
+ emoji==2.14.1
35
+ executing==2.2.0
36
+ fastapi==0.115.8
37
+ filelock==3.17.0
38
+ filetype==1.2.0
39
+ frozenlist==1.5.0
40
+ fsspec==2024.12.0
41
+ gitdb==4.0.12
42
+ gitpython==3.1.44
43
+ googleapis-common-protos==1.68.0
44
+ greenlet==3.1.1
45
+ grpcio==1.70.0
46
+ grpcio-tools==1.70.0
47
+ h11==0.14.0
48
+ h2==4.2.0
49
+ hpack==4.1.0
50
+ httpcore==1.0.7
51
+ httpx==0.28.1
52
+ httpx-sse==0.4.0
53
+ huggingface-hub==0.29.1
54
+ hyperframe==6.1.0
55
+ idna==3.10
56
+ importlib-metadata==8.5.0
57
+ iprogress==0.4
58
+ ipykernel==6.29.5
59
+ ipython==8.32.0
60
+ ipywidgets==8.1.5
61
+ jedi==0.19.2
62
+ jinja2==3.1.5
63
+ jiter==0.8.2
64
+ joblib==1.4.2
65
+ jsonpatch==1.33
66
+ jsonpath-python==1.0.6
67
+ jsonpointer==3.0.0
68
+ jupyter-client==8.6.3
69
+ jupyter-core==5.7.2
70
+ jupyterlab-widgets==3.0.13
71
+ langchain==0.3.15
72
+ langchain-community==0.3.15
73
+ langchain-core==0.3.31
74
+ langchain-experimental==0.3.4
75
+ langchain-huggingface==0.1.2
76
+ langchain-openai==0.3.1
77
+ langchain-qdrant==0.2.0
78
+ langchain-text-splitters==0.3.5
79
+ langdetect==1.0.9
80
+ langgraph==0.2.74
81
+ langgraph-checkpoint==2.0.16
82
+ langgraph-sdk==0.1.53
83
+ langsmith==0.3.10
84
+ lazify==0.4.0
85
+ literalai==0.1.103
86
+ lxml==5.3.1
87
+ markupsafe==3.0.2
88
+ marshmallow==3.26.1
89
+ matplotlib-inline==0.1.7
90
+ mpmath==1.3.0
91
+ msgpack==1.1.0
92
+ multidict==6.1.0
93
+ multiprocess==0.70.16
94
+ mypy-extensions==1.0.0
95
+ nest-asyncio==1.6.0
96
+ networkx==3.4.2
97
+ nltk==3.9.1
98
+ numpy==2.2.3
99
+ nvidia-cublas-cu12==12.4.5.8
100
+ nvidia-cuda-cupti-cu12==12.4.127
101
+ nvidia-cuda-nvrtc-cu12==12.4.127
102
+ nvidia-cuda-runtime-cu12==12.4.127
103
+ nvidia-cudnn-cu12==9.1.0.70
104
+ nvidia-cufft-cu12==11.2.1.3
105
+ nvidia-curand-cu12==10.3.5.147
106
+ nvidia-cusolver-cu12==11.6.1.9
107
+ nvidia-cusparse-cu12==12.3.1.170
108
+ nvidia-cusparselt-cu12==0.6.2
109
+ nvidia-nccl-cu12==2.21.5
110
+ nvidia-nvjitlink-cu12==12.4.127
111
+ nvidia-nvtx-cu12==12.4.127
112
+ openai==1.64.0
113
+ opentelemetry-api==1.29.0
114
+ opentelemetry-exporter-otlp==1.29.0
115
+ opentelemetry-exporter-otlp-proto-common==1.29.0
116
+ opentelemetry-exporter-otlp-proto-grpc==1.29.0
117
+ opentelemetry-exporter-otlp-proto-http==1.29.0
118
+ opentelemetry-instrumentation==0.50b0
119
+ opentelemetry-proto==1.29.0
120
+ opentelemetry-sdk==1.29.0
121
+ opentelemetry-semantic-conventions==0.50b0
122
+ orderly-set==5.3.0
123
+ orjson==3.10.15
124
+ packaging==24.2
125
+ pandas==2.2.3
126
+ parso==0.8.4
127
+ pexpect==4.9.0
128
+ pillow==11.1.0
129
+ platformdirs==4.3.6
130
+ portalocker==2.10.1
131
+ prompt-toolkit==3.0.50
132
+ propcache==0.3.0
133
+ protobuf==5.29.3
134
+ psutil==7.0.0
135
+ ptyprocess==0.7.0
136
+ pure-eval==0.2.3
137
+ pyarrow==19.0.1
138
+ pycparser==2.22
139
+ pydantic==2.10.6
140
+ pydantic-core==2.27.2
141
+ pydantic-settings==2.8.0
142
+ pygments==2.19.1
143
+ pyjwt==2.10.1
144
+ pymupdf==1.25.3
145
+ pypdf==5.3.0
146
+ pypdf2==3.0.1
147
+ python-dateutil==2.9.0.post0
148
+ python-dotenv==1.0.1
149
+ python-engineio==4.11.2
150
+ python-iso639==2025.2.18
151
+ python-magic==0.4.27
152
+ python-multipart==0.0.18
153
+ python-socketio==5.12.1
154
+ pytz==2025.1
155
+ pyyaml==6.0.2
156
+ pyzmq==26.2.1
157
+ qdrant-client==1.13.2
158
+ ragas==0.2.13
159
+ rapidfuzz==3.12.1
160
+ regex==2024.11.6
161
+ requests==2.32.3
162
+ requests-toolbelt==1.0.0
163
+ safetensors==0.5.2
164
+ scikit-learn==1.6.1
165
+ scipy==1.15.2
166
+ sentence-transformers==3.4.1
167
+ sentry-sdk==2.22.0
168
+ setproctitle==1.3.5
169
+ setuptools==75.8.0
170
+ simple-websocket==1.1.0
171
+ six==1.17.0
172
+ smmap==5.0.2
173
+ sniffio==1.3.1
174
+ soupsieve==2.6
175
+ sqlalchemy==2.0.38
176
+ stack-data==0.6.3
177
+ starlette==0.41.3
178
+ sympy==1.13.1
179
+ syncer==2.0.3
180
+ tabulate==0.9.0
181
+ tenacity==9.0.0
182
+ threadpoolctl==3.5.0
183
+ tiktoken==0.9.0
184
+ tokenizers==0.21.0
185
+ tomli==2.2.1
186
+ torch==2.6.0
187
+ tornado==6.4.2
188
+ tqdm==4.67.1
189
+ traitlets==5.14.3
190
+ transformers==4.49.0
191
+ triton==3.2.0
192
+ typing-extensions==4.12.2
193
+ typing-inspect==0.9.0
194
+ tzdata==2025.1
195
+ unstructured==0.14.8
196
+ unstructured-client==0.25.9
197
+ uptrace==1.29.0
198
+ urllib3==2.3.0
199
+ uvicorn==0.34.0
200
+ wandb==0.19.7
201
+ watchfiles==0.20.0
202
+ wcwidth==0.2.13
203
+ websockets==15.0
204
+ widgetsnbextension==4.0.13
205
+ wrapt==1.17.2
206
+ wsproto==1.2.0
207
+ xxhash==3.5.0
208
+ yarl==1.18.3
209
+ zipp==3.21.0
210
+ zstandard==0.23.0
uv.lock CHANGED
@@ -126,19 +126,6 @@ wheels = [
126
  { url = "https://files.pythonhosted.org/packages/81/29/5ecc3a15d5a33e31b26c11426c45c501e439cb865d0bff96315d86443b78/appnope-0.1.4-py2.py3-none-any.whl", hash = "sha256:502575ee11cd7a28c0205f379b525beefebab9d161b7c964670864014ed7213c", size = 4321 },
127
  ]
128
 
129
- [[package]]
130
- name = "arxiv"
131
- version = "2.1.3"
132
- source = { registry = "https://pypi.org/simple" }
133
- dependencies = [
134
- { name = "feedparser" },
135
- { name = "requests" },
136
- ]
137
- sdist = { url = "https://files.pythonhosted.org/packages/fe/59/fe41f54bdfed776c2e9bcd6289e4c71349eb938241d89b4c97d0f33e8013/arxiv-2.1.3.tar.gz", hash = "sha256:32365221994d2cf05657c1fadf63a26efc8ccdec18590281ee03515bfef8bc4e", size = 16747 }
138
- wheels = [
139
- { url = "https://files.pythonhosted.org/packages/b7/7b/7bf42178d227b26d3daf94cdd22a72a4ed5bf235548c4f5aea49c51c6458/arxiv-2.1.3-py3-none-any.whl", hash = "sha256:6f43673ab770a9e848d7d4fc1894824df55edeac3c3572ea280c9ba2e3c0f39f", size = 11478 },
140
- ]
141
-
142
  [[package]]
143
  name = "asttokens"
144
  version = "3.0.0"
@@ -316,26 +303,6 @@ wheels = [
316
  { url = "https://files.pythonhosted.org/packages/7e/d4/7ebdbd03970677812aac39c869717059dbb71a4cfc033ca6e5221787892c/click-8.1.8-py3-none-any.whl", hash = "sha256:63c132bbbed01578a06712a2d1f497bb62d9c1c0d329b7903a866228027263b2", size = 98188 },
317
  ]
318
 
319
- [[package]]
320
- name = "cohere"
321
- version = "5.13.12"
322
- source = { registry = "https://pypi.org/simple" }
323
- dependencies = [
324
- { name = "fastavro" },
325
- { name = "httpx" },
326
- { name = "httpx-sse" },
327
- { name = "pydantic" },
328
- { name = "pydantic-core" },
329
- { name = "requests" },
330
- { name = "tokenizers" },
331
- { name = "types-requests" },
332
- { name = "typing-extensions" },
333
- ]
334
- sdist = { url = "https://files.pythonhosted.org/packages/f4/48/795c53b25b08ec353cc4f48dc5c199ac4615b3c331e716ac50c7cb07034c/cohere-5.13.12.tar.gz", hash = "sha256:97bb9ac107e580780b941acbabd3aa5e71960e6835398292c46aaa8a0a4cab88", size = 132860 }
335
- wheels = [
336
- { url = "https://files.pythonhosted.org/packages/50/c6/cffec9284d9713d28c6235a653a9a34c49b0f880f00cfa002252cdb8d033/cohere-5.13.12-py3-none-any.whl", hash = "sha256:2a043591a3e5280b47716a6b311e4c7f58e799364113a9cb81b50cd4f6c95f7e", size = 252856 },
337
- ]
338
-
339
  [[package]]
340
  name = "colorama"
341
  version = "0.4.6"
@@ -547,32 +514,6 @@ wheels = [
547
  { url = "https://files.pythonhosted.org/packages/8f/7d/2d6ce181d7a5f51dedb8c06206cbf0ec026a99bf145edd309f9e17c3282f/fastapi-0.115.8-py3-none-any.whl", hash = "sha256:753a96dd7e036b34eeef8babdfcfe3f28ff79648f86551eb36bfc1b0bf4a8cbf", size = 94814 },
548
  ]
549
 
550
- [[package]]
551
- name = "fastavro"
552
- version = "1.10.0"
553
- source = { registry = "https://pypi.org/simple" }
554
- sdist = { url = "https://files.pythonhosted.org/packages/f3/67/7121d2221e998706cac00fa779ec44c1c943cb65e8a7ed1bd57d78d93f2c/fastavro-1.10.0.tar.gz", hash = "sha256:47bf41ac6d52cdfe4a3da88c75a802321321b37b663a900d12765101a5d6886f", size = 987970 }
555
- wheels = [
556
- { url = "https://files.pythonhosted.org/packages/c9/c4/163cf154cc694c2dccc70cd6796db6214ac668a1260bf0310401dad188dc/fastavro-1.10.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:82263af0adfddb39c85f9517d736e1e940fe506dfcc35bc9ab9f85e0fa9236d8", size = 1022741 },
557
- { url = "https://files.pythonhosted.org/packages/38/01/a24598f5f31b8582a92fe9c41bf91caeed50d5b5eaa7576e6f8b23cb488d/fastavro-1.10.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:566c193109ff0ff84f1072a165b7106c4f96050078a4e6ac7391f81ca1ef3efa", size = 3237421 },
558
- { url = "https://files.pythonhosted.org/packages/a7/bf/08bcf65cfb7feb0e5b1329fafeb4a9b95b7b5ec723ba58c7dbd0d04ded34/fastavro-1.10.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e400d2e55d068404d9fea7c5021f8b999c6f9d9afa1d1f3652ec92c105ffcbdd", size = 3300222 },
559
- { url = "https://files.pythonhosted.org/packages/53/4d/a6c25f3166328f8306ec2e6be1123ed78a55b8ab774a43a661124508881f/fastavro-1.10.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:9b8227497f71565270f9249fc9af32a93644ca683a0167cfe66d203845c3a038", size = 3233276 },
560
- { url = "https://files.pythonhosted.org/packages/47/1c/b2b2ce2bf866a248ae23e96a87b3b8369427ff79be9112073039bee1d245/fastavro-1.10.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:8e62d04c65461b30ac6d314e4197ad666371e97ae8cb2c16f971d802f6c7f514", size = 3388936 },
561
- { url = "https://files.pythonhosted.org/packages/1f/2c/43927e22a2d57587b3aa09765098a6d833246b672d34c10c5f135414745a/fastavro-1.10.0-cp313-cp313-win_amd64.whl", hash = "sha256:86baf8c9740ab570d0d4d18517da71626fe9be4d1142bea684db52bd5adb078f", size = 483967 },
562
- ]
563
-
564
- [[package]]
565
- name = "feedparser"
566
- version = "6.0.11"
567
- source = { registry = "https://pypi.org/simple" }
568
- dependencies = [
569
- { name = "sgmllib3k" },
570
- ]
571
- sdist = { url = "https://files.pythonhosted.org/packages/ff/aa/7af346ebeb42a76bf108027fe7f3328bb4e57a3a96e53e21fd9ef9dd6dd0/feedparser-6.0.11.tar.gz", hash = "sha256:c9d0407b64c6f2a065d0ebb292c2b35c01050cc0dc33757461aaabdc4c4184d5", size = 286197 }
572
- wheels = [
573
- { url = "https://files.pythonhosted.org/packages/7c/d4/8c31aad9cc18f451c49f7f9cfb5799dadffc88177f7917bc90a66459b1d7/feedparser-6.0.11-py3-none-any.whl", hash = "sha256:0be7ee7b395572b19ebeb1d6aafb0028dee11169f1c934e0ed67d54992f4ad45", size = 81343 },
574
- ]
575
-
576
  [[package]]
577
  name = "filelock"
578
  version = "3.17.0"
@@ -1067,22 +1008,6 @@ wheels = [
1067
  { url = "https://files.pythonhosted.org/packages/3e/cb/a375aa0a8e5ab806766ea6f167088bbb9b8aea836031e5f80f6f492b1f8d/langchain-0.3.15-py3-none-any.whl", hash = "sha256:2657735184054cae8181ac43fce6cbc9ee64ca81a2ad2aed3ccd6e5d6fe1f19f", size = 1009589 },
1068
  ]
1069
 
1070
- [[package]]
1071
- name = "langchain-cohere"
1072
- version = "0.4.2"
1073
- source = { registry = "https://pypi.org/simple" }
1074
- dependencies = [
1075
- { name = "cohere" },
1076
- { name = "langchain-community" },
1077
- { name = "langchain-core" },
1078
- { name = "pydantic" },
1079
- { name = "types-pyyaml" },
1080
- ]
1081
- sdist = { url = "https://files.pythonhosted.org/packages/24/c8/5bbc627c88231317f2c6f463a44b40fb1cb2cf0a0f61cdf4e2ee95f9eb28/langchain_cohere-0.4.2.tar.gz", hash = "sha256:96971055a806b63e388d08e4663fc16957cf07ad234a1524ef31f039790bb35b", size = 36391 }
1082
- wheels = [
1083
- { url = "https://files.pythonhosted.org/packages/f4/f0/0f2e4dc99c52d458cd23f7d8d18bb25280ff49529a4fd34e59a92faf6d46/langchain_cohere-0.4.2-py3-none-any.whl", hash = "sha256:1d4e5f9212daa64d997785de7a79e3e1c3971acba1d987f1a99a9a1be6acfb40", size = 42205 },
1084
- ]
1085
-
1086
  [[package]]
1087
  name = "langchain-community"
1088
  version = "0.3.15"
@@ -1363,15 +1288,12 @@ version = "0.1.0"
1363
  source = { virtual = "." }
1364
  dependencies = [
1365
  { name = "accelerate" },
1366
- { name = "arxiv" },
1367
  { name = "chainlit" },
1368
- { name = "cohere" },
1369
  { name = "huggingface-hub" },
1370
  { name = "iprogress" },
1371
  { name = "ipykernel" },
1372
  { name = "ipywidgets" },
1373
  { name = "langchain" },
1374
- { name = "langchain-cohere" },
1375
  { name = "langchain-community" },
1376
  { name = "langchain-core" },
1377
  { name = "langchain-experimental" },
@@ -1398,32 +1320,25 @@ dependencies = [
1398
  [package.metadata]
1399
  requires-dist = [
1400
  { name = "accelerate" },
1401
- { name = "arxiv" },
1402
  { name = "chainlit" },
1403
- { name = "cohere" },
1404
  { name = "huggingface-hub" },
1405
  { name = "iprogress" },
1406
  { name = "ipykernel" },
1407
  { name = "ipywidgets" },
1408
  { name = "langchain" },
1409
- { name = "langchain", specifier = "==0.3.15" },
1410
- { name = "langchain-cohere" },
1411
  { name = "langchain-community" },
1412
- { name = "langchain-community", specifier = "==0.3.15" },
1413
  { name = "langchain-core" },
1414
- { name = "langchain-core", specifier = "==0.3.31" },
1415
  { name = "langchain-experimental" },
1416
- { name = "langchain-huggingface", specifier = "==0.1.2" },
1417
  { name = "langchain-openai" },
1418
- { name = "langchain-openai", specifier = "==0.3.1" },
1419
- { name = "langchain-qdrant", specifier = "==0.2.0" },
1420
- { name = "langchain-text-splitters", specifier = ">=0.3.5" },
1421
  { name = "langgraph" },
1422
- { name = "langsmith", specifier = ">=0.3.1" },
1423
- { name = "lxml", specifier = ">=5.3.0" },
1424
- { name = "openai", specifier = ">=1.59.9" },
1425
  { name = "pymupdf" },
1426
- { name = "pypdf2", specifier = ">=3.0.1" },
1427
  { name = "qdrant-client" },
1428
  { name = "ragas" },
1429
  { name = "torch" },
@@ -2593,12 +2508,6 @@ wheels = [
2593
  { url = "https://files.pythonhosted.org/packages/69/8a/b9dc7678803429e4a3bc9ba462fa3dd9066824d3c607490235c6a796be5a/setuptools-75.8.0-py3-none-any.whl", hash = "sha256:e3982f444617239225d675215d51f6ba05f845d4eec313da4418fdbb56fb27e3", size = 1228782 },
2594
  ]
2595
 
2596
- [[package]]
2597
- name = "sgmllib3k"
2598
- version = "1.0.0"
2599
- source = { registry = "https://pypi.org/simple" }
2600
- sdist = { url = "https://files.pythonhosted.org/packages/9e/bd/3704a8c3e0942d711c1299ebf7b9091930adae6675d7c8f476a7ce48653c/sgmllib3k-1.0.0.tar.gz", hash = "sha256:7868fb1c8bfa764c1ac563d3cf369c381d1325d36124933a726f29fcdaa812e9", size = 5750 }
2601
-
2602
  [[package]]
2603
  name = "simple-websocket"
2604
  version = "1.1.0"
@@ -2903,27 +2812,6 @@ wheels = [
2903
  { url = "https://files.pythonhosted.org/packages/c7/30/37a3384d1e2e9320331baca41e835e90a3767303642c7a80d4510152cbcf/triton-3.2.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e5dfa23ba84541d7c0a531dfce76d8bcd19159d50a4a8b14ad01e91734a5c1b0", size = 253154278 },
2904
  ]
2905
 
2906
- [[package]]
2907
- name = "types-pyyaml"
2908
- version = "6.0.12.20241230"
2909
- source = { registry = "https://pypi.org/simple" }
2910
- sdist = { url = "https://files.pythonhosted.org/packages/9a/f9/4d566925bcf9396136c0a2e5dc7e230ff08d86fa011a69888dd184469d80/types_pyyaml-6.0.12.20241230.tar.gz", hash = "sha256:7f07622dbd34bb9c8b264fe860a17e0efcad00d50b5f27e93984909d9363498c", size = 17078 }
2911
- wheels = [
2912
- { url = "https://files.pythonhosted.org/packages/e8/c1/48474fbead512b70ccdb4f81ba5eb4a58f69d100ba19f17c92c0c4f50ae6/types_PyYAML-6.0.12.20241230-py3-none-any.whl", hash = "sha256:fa4d32565219b68e6dee5f67534c722e53c00d1cfc09c435ef04d7353e1e96e6", size = 20029 },
2913
- ]
2914
-
2915
- [[package]]
2916
- name = "types-requests"
2917
- version = "2.32.0.20241016"
2918
- source = { registry = "https://pypi.org/simple" }
2919
- dependencies = [
2920
- { name = "urllib3" },
2921
- ]
2922
- sdist = { url = "https://files.pythonhosted.org/packages/fa/3c/4f2a430c01a22abd49a583b6b944173e39e7d01b688190a5618bd59a2e22/types-requests-2.32.0.20241016.tar.gz", hash = "sha256:0d9cad2f27515d0e3e3da7134a1b6f28fb97129d86b867f24d9c726452634d95", size = 18065 }
2923
- wheels = [
2924
- { url = "https://files.pythonhosted.org/packages/d7/01/485b3026ff90e5190b5e24f1711522e06c79f4a56c8f4b95848ac072e20f/types_requests-2.32.0.20241016-py3-none-any.whl", hash = "sha256:4195d62d6d3e043a4eaaf08ff8a62184584d2e8684e9d2aa178c7915a7da3747", size = 15836 },
2925
- ]
2926
-
2927
  [[package]]
2928
  name = "typing-extensions"
2929
  version = "4.12.2"
 
126
  { url = "https://files.pythonhosted.org/packages/81/29/5ecc3a15d5a33e31b26c11426c45c501e439cb865d0bff96315d86443b78/appnope-0.1.4-py2.py3-none-any.whl", hash = "sha256:502575ee11cd7a28c0205f379b525beefebab9d161b7c964670864014ed7213c", size = 4321 },
127
  ]
128
 
 
 
 
 
 
 
 
 
 
 
 
 
 
129
  [[package]]
130
  name = "asttokens"
131
  version = "3.0.0"
 
303
  { url = "https://files.pythonhosted.org/packages/7e/d4/7ebdbd03970677812aac39c869717059dbb71a4cfc033ca6e5221787892c/click-8.1.8-py3-none-any.whl", hash = "sha256:63c132bbbed01578a06712a2d1f497bb62d9c1c0d329b7903a866228027263b2", size = 98188 },
304
  ]
305
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
306
  [[package]]
307
  name = "colorama"
308
  version = "0.4.6"
 
514
  { url = "https://files.pythonhosted.org/packages/8f/7d/2d6ce181d7a5f51dedb8c06206cbf0ec026a99bf145edd309f9e17c3282f/fastapi-0.115.8-py3-none-any.whl", hash = "sha256:753a96dd7e036b34eeef8babdfcfe3f28ff79648f86551eb36bfc1b0bf4a8cbf", size = 94814 },
515
  ]
516
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
517
  [[package]]
518
  name = "filelock"
519
  version = "3.17.0"
 
1008
  { url = "https://files.pythonhosted.org/packages/3e/cb/a375aa0a8e5ab806766ea6f167088bbb9b8aea836031e5f80f6f492b1f8d/langchain-0.3.15-py3-none-any.whl", hash = "sha256:2657735184054cae8181ac43fce6cbc9ee64ca81a2ad2aed3ccd6e5d6fe1f19f", size = 1009589 },
1009
  ]
1010
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1011
  [[package]]
1012
  name = "langchain-community"
1013
  version = "0.3.15"
 
1288
  source = { virtual = "." }
1289
  dependencies = [
1290
  { name = "accelerate" },
 
1291
  { name = "chainlit" },
 
1292
  { name = "huggingface-hub" },
1293
  { name = "iprogress" },
1294
  { name = "ipykernel" },
1295
  { name = "ipywidgets" },
1296
  { name = "langchain" },
 
1297
  { name = "langchain-community" },
1298
  { name = "langchain-core" },
1299
  { name = "langchain-experimental" },
 
1320
  [package.metadata]
1321
  requires-dist = [
1322
  { name = "accelerate" },
 
1323
  { name = "chainlit" },
 
1324
  { name = "huggingface-hub" },
1325
  { name = "iprogress" },
1326
  { name = "ipykernel" },
1327
  { name = "ipywidgets" },
1328
  { name = "langchain" },
 
 
1329
  { name = "langchain-community" },
 
1330
  { name = "langchain-core" },
 
1331
  { name = "langchain-experimental" },
1332
+ { name = "langchain-huggingface" },
1333
  { name = "langchain-openai" },
1334
+ { name = "langchain-qdrant" },
1335
+ { name = "langchain-text-splitters" },
 
1336
  { name = "langgraph" },
1337
+ { name = "langsmith" },
1338
+ { name = "lxml" },
1339
+ { name = "openai" },
1340
  { name = "pymupdf" },
1341
+ { name = "pypdf2" },
1342
  { name = "qdrant-client" },
1343
  { name = "ragas" },
1344
  { name = "torch" },
 
2508
  { url = "https://files.pythonhosted.org/packages/69/8a/b9dc7678803429e4a3bc9ba462fa3dd9066824d3c607490235c6a796be5a/setuptools-75.8.0-py3-none-any.whl", hash = "sha256:e3982f444617239225d675215d51f6ba05f845d4eec313da4418fdbb56fb27e3", size = 1228782 },
2509
  ]
2510
 
 
 
 
 
 
 
2511
  [[package]]
2512
  name = "simple-websocket"
2513
  version = "1.1.0"
 
2812
  { url = "https://files.pythonhosted.org/packages/c7/30/37a3384d1e2e9320331baca41e835e90a3767303642c7a80d4510152cbcf/triton-3.2.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e5dfa23ba84541d7c0a531dfce76d8bcd19159d50a4a8b14ad01e91734a5c1b0", size = 253154278 },
2813
  ]
2814
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2815
  [[package]]
2816
  name = "typing-extensions"
2817
  version = "4.12.2"