langroid 0.3.1__py3-none-any.whl → 0.5.1__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -32,13 +32,7 @@ from langroid.utils.configuration import settings
32
32
  from langroid.utils.pydantic_utils import (
33
33
  dataframe_to_document_model,
34
34
  dataframe_to_documents,
35
- extend_document_class,
36
- extra_metadata,
37
- flatten_pydantic_instance,
38
- flatten_pydantic_model,
39
- nested_dict_from_flat,
40
35
  )
41
- from langroid.utils.system import pydantic_major_version
42
36
  from langroid.vector_store.base import VectorStore, VectorStoreConfig
43
37
 
44
38
  try:
@@ -58,10 +52,6 @@ class LanceDBConfig(VectorStoreConfig):
58
52
  storage_path: str = ".lancedb/data"
59
53
  embedding: EmbeddingModelsConfig = OpenAIEmbeddingsConfig()
60
54
  distance: str = "cosine"
61
- # document_class is used to store in lancedb with right schema,
62
- # and also to retrieve the right type of Documents when searching.
63
- document_class: Type[Document] = Document
64
- flatten: bool = False # flatten Document class into LanceSchema ?
65
55
 
66
56
 
67
57
  class LanceDB(VectorStore):
@@ -78,7 +68,6 @@ class LanceDB(VectorStore):
78
68
  self.port = config.port
79
69
  self.is_from_dataframe = False # were docs ingested from a dataframe?
80
70
  self.df_metadata_columns: List[str] = [] # metadata columns from dataframe
81
- self._setup_schemas(config.document_class)
82
71
 
83
72
  load_dotenv()
84
73
  if self.config.cloud:
@@ -104,40 +93,6 @@ class LanceDB(VectorStore):
104
93
  uri=new_storage_path,
105
94
  )
106
95
 
107
- # Note: Only create collection if a non-null collection name is provided.
108
- # This is useful to delay creation of vecdb until we have a suitable
109
- # collection name (e.g. we could get it from the url or folder path).
110
- if config.collection_name is not None:
111
- self.create_collection(
112
- config.collection_name, replace=config.replace_collection
113
- )
114
-
115
- def _setup_schemas(self, doc_cls: Type[Document] | None) -> None:
116
- try:
117
- doc_cls = doc_cls or self.config.document_class
118
- self.unflattened_schema = self._create_lance_schema(doc_cls)
119
- self.schema = (
120
- self._create_flat_lance_schema(doc_cls)
121
- if self.config.flatten
122
- else self.unflattened_schema
123
- )
124
- except (AttributeError, TypeError) as e:
125
- pydantic_version = pydantic_major_version()
126
- if pydantic_version > 1:
127
- raise ValueError(
128
- f"""
129
- {e}
130
- ====
131
- You are using Pydantic v{pydantic_version},
132
- which is not yet compatible with Langroid's LanceDB integration.
133
- To use Lancedb with Langroid, please install the
134
- latest pydantic 1.x instead of pydantic v2, e.g.
135
- pip install "pydantic<2.0.0"
136
- """
137
- )
138
- else:
139
- raise e
140
-
141
96
  def clear_empty_collections(self) -> int:
142
97
  coll_names = self.list_collections()
143
98
  n_deletes = 0
@@ -234,91 +189,8 @@ class LanceDB(VectorStore):
234
189
  ) # type: ignore
235
190
  return NewModel # type: ignore
236
191
 
237
- def _create_flat_lance_schema(self, doc_cls: Type[Document]) -> Type[BaseModel]:
238
- """
239
- Flat version of the lance_schema, as nested Pydantic schemas are not yet
240
- supported by LanceDB.
241
- """
242
- if not has_lancedb:
243
- raise LangroidImportError("lancedb", "lancedb")
244
- lance_model = self._create_lance_schema(doc_cls)
245
- FlatModel = flatten_pydantic_model(lance_model, base_model=LanceModel)
246
- return FlatModel
247
-
248
192
  def create_collection(self, collection_name: str, replace: bool = False) -> None:
249
- """
250
- Create a collection with the given name, optionally replacing an existing
251
- collection if `replace` is True.
252
- Args:
253
- collection_name (str): Name of the collection to create.
254
- replace (bool): Whether to replace an existing collection
255
- with the same name. Defaults to False.
256
- """
257
- self.config.collection_name = collection_name
258
- collections = self.list_collections()
259
- if collection_name in collections:
260
- coll = self.client.open_table(collection_name)
261
- if coll.head().shape[0] > 0:
262
- logger.warning(f"Non-empty Collection {collection_name} already exists")
263
- if not replace:
264
- logger.warning("Not replacing collection")
265
- return
266
- else:
267
- logger.warning("Recreating fresh collection")
268
- try:
269
- self.client.create_table(
270
- collection_name, schema=self.schema, mode="overwrite"
271
- )
272
- except (AttributeError, TypeError) as e:
273
- pydantic_version = pydantic_major_version()
274
- if pydantic_version > 1:
275
- raise ValueError(
276
- f"""
277
- {e}
278
- ====
279
- You are using Pydantic v{pydantic_version},
280
- which is not yet compatible with Langroid's LanceDB integration.
281
- To use Lancedb with Langroid, please install the
282
- latest pydantic 1.x instead of pydantic v2, e.g.
283
- pip install "pydantic<2.0.0"
284
- """
285
- )
286
- else:
287
- raise e
288
-
289
- if settings.debug:
290
- level = logger.getEffectiveLevel()
291
- logger.setLevel(logging.INFO)
292
- logger.setLevel(level)
293
-
294
- def _maybe_set_doc_class_schema(self, doc: Document) -> None:
295
- """
296
- Set the config.document_class and self.schema based on doc if needed
297
- Args:
298
- doc: an instance of Document, to be added to a collection
299
- """
300
- extra_metadata_fields = extra_metadata(doc, self.config.document_class)
301
- if len(extra_metadata_fields) > 0:
302
- logger.warning(
303
- f"""
304
- Added documents contain extra metadata fields:
305
- {extra_metadata_fields}
306
- which were not present in the original config.document_class.
307
- Trying to change document_class and corresponding schemas.
308
- Overriding LanceDBConfig.document_class with an auto-generated
309
- Pydantic class that includes these extra fields.
310
- If this fails, or you see odd results, it is recommended that you
311
- define a subclass of Document, with metadata of class derived from
312
- DocMetaData, with extra fields defined via
313
- `Field(..., description="...")` declarations,
314
- and set this document class as the value of the
315
- LanceDBConfig.document_class attribute.
316
- """
317
- )
318
-
319
- doc_cls = extend_document_class(doc)
320
- self.config.document_class = doc_cls
321
- self._setup_schemas(doc_cls)
193
+ self.config.replace_collection = replace
322
194
 
323
195
  def add_documents(self, documents: Sequence[Document]) -> None:
324
196
  super().maybe_add_ids(documents)
@@ -329,39 +201,52 @@ class LanceDB(VectorStore):
329
201
  coll_name = self.config.collection_name
330
202
  if coll_name is None:
331
203
  raise ValueError("No collection name set, cannot ingest docs")
332
- self._maybe_set_doc_class_schema(documents[0])
204
+ # self._maybe_set_doc_class_schema(documents[0])
205
+ table_exists = False
333
206
  if (
334
- coll_name not in colls
335
- or self.client.open_table(coll_name).head(1).shape[0] == 0
207
+ coll_name in colls
208
+ and self.client.open_table(coll_name).head(1).shape[0] > 0
336
209
  ):
337
- # collection either doesn't exist or is empty, so replace it,
338
- self.create_collection(coll_name, replace=True)
210
+ # collection exists and is not empty:
211
+ # if replace_collection is True, we'll overwrite the existing collection,
212
+ # else we'll append to it.
213
+ if self.config.replace_collection:
214
+ self.client.drop_table(coll_name)
215
+ else:
216
+ table_exists = True
339
217
 
340
218
  ids = [str(d.id()) for d in documents]
341
219
  # don't insert all at once, batch in chunks of b,
342
220
  # else we get an API error
343
221
  b = self.config.batch_size
344
222
 
345
- def make_batches() -> Generator[List[BaseModel], None, None]:
223
+ def make_batches() -> Generator[List[Dict[str, Any]], None, None]:
346
224
  for i in range(0, len(ids), b):
347
225
  batch = [
348
- self.unflattened_schema(
226
+ dict(
349
227
  id=ids[i + j],
350
228
  vector=embedding_vecs[i + j],
351
229
  **doc.dict(),
352
230
  )
353
231
  for j, doc in enumerate(documents[i : i + b])
354
232
  ]
355
- if self.config.flatten:
356
- batch = [
357
- flatten_pydantic_instance(instance) # type: ignore
358
- for instance in batch
359
- ]
360
233
  yield batch
361
234
 
362
- tbl = self.client.open_table(self.config.collection_name)
363
235
  try:
364
- tbl.add(make_batches())
236
+ if table_exists:
237
+ tbl = self.client.open_table(coll_name)
238
+ tbl.add(make_batches())
239
+ else:
240
+ batch_gen = make_batches()
241
+ batch = next(batch_gen)
242
+ # use first batch to create table...
243
+ tbl = self.client.create_table(
244
+ coll_name,
245
+ data=batch,
246
+ mode="create",
247
+ )
248
+ # ... and add the rest
249
+ tbl.add(batch_gen)
365
250
  except Exception as e:
366
251
  logger.error(
367
252
  f"""
@@ -427,7 +312,6 @@ class LanceDB(VectorStore):
427
312
  exclude=["vector"],
428
313
  )
429
314
  self.config.document_class = doc_cls # type: ignore
430
- self._setup_schemas(doc_cls) # type: ignore
431
315
  else:
432
316
  # collection exists and is not empty, so append to it
433
317
  tbl = self.client.open_table(self.config.collection_name)
@@ -452,35 +336,19 @@ class LanceDB(VectorStore):
452
336
  return self._records_to_docs(records)
453
337
 
454
338
  def _records_to_docs(self, records: List[Dict[str, Any]]) -> List[Document]:
455
- if self.config.flatten:
456
- docs = [
457
- self.unflattened_schema(**nested_dict_from_flat(rec)) for rec in records
458
- ]
459
- else:
460
- try:
461
- docs = [self.schema(**rec) for rec in records]
462
- except ValidationError as e:
463
- raise ValueError(
464
- f"""
465
- Error validating LanceDB result: {e}
466
- HINT: This could happen when you're re-using an
467
- existing LanceDB store with a different schema.
468
- Try deleting your local lancedb storage at `{self.config.storage_path}`
469
- re-ingesting your documents and/or replacing the collections.
470
- """
471
- )
472
-
473
- doc_cls = self.config.document_class
474
- doc_cls_field_names = doc_cls.__fields__.keys()
475
- return [
476
- doc_cls(
477
- **{
478
- field_name: getattr(doc, field_name)
479
- for field_name in doc_cls_field_names
480
- }
339
+ try:
340
+ docs = [self.config.document_class(**rec) for rec in records]
341
+ except ValidationError as e:
342
+ raise ValueError(
343
+ f"""
344
+ Error validating LanceDB result: {e}
345
+ HINT: This could happen when you're re-using an
346
+ existing LanceDB store with a different schema.
347
+ Try deleting your local lancedb storage at `{self.config.storage_path}`
348
+ re-ingesting your documents and/or replacing the collections.
349
+ """
481
350
  )
482
- for doc in docs
483
- ]
351
+ return docs
484
352
 
485
353
  def get_all_documents(self, where: str = "") -> List[Document]:
486
354
  if self.config.collection_name is None:
@@ -380,7 +380,11 @@ class QdrantDB(VectorStore):
380
380
  with_payload=True,
381
381
  with_vectors=False,
382
382
  )
383
- docs += [Document(**record.payload) for record in results] # type: ignore
383
+ docs += [
384
+ self.config.document_class(**record.payload) # type: ignore
385
+ for record in results
386
+ ]
387
+ # ignore
384
388
  if next_page_offset is None:
385
389
  break
386
390
  offset = next_page_offset # type: ignore
@@ -451,7 +455,7 @@ class QdrantDB(VectorStore):
451
455
  ] # 2D list -> 1D list
452
456
  scores = [match.score for match in search_result if match is not None]
453
457
  docs = [
454
- Document(**(match.payload)) # type: ignore
458
+ self.config.document_class(**(match.payload)) # type: ignore
455
459
  for match in search_result
456
460
  if match is not None
457
461
  ]
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: langroid
3
- Version: 0.3.1
3
+ Version: 0.5.1
4
4
  Summary: Harness LLMs with Multi-Agent Programming
5
5
  License: MIT
6
6
  Author: Prasad Chalasani
@@ -1,25 +1,29 @@
1
1
  langroid/__init__.py,sha256=z_fCOLQJPOw3LLRPBlFB5-2HyCjpPgQa4m4iY5Fvb8Y,1800
2
2
  langroid/agent/__init__.py,sha256=ll0Cubd2DZ-fsCMl7e10hf9ZjFGKzphfBco396IKITY,786
3
- langroid/agent/base.py,sha256=eeYZ-NYbrepOjUVQS9K0nDhE8x2gKUNjgxFTA24mook,37560
3
+ langroid/agent/base.py,sha256=x6SbInDGJUL_kusr-ligYsCwuaid2CmcRkzlucOXyw0,38999
4
4
  langroid/agent/batch.py,sha256=feRA_yRG768ElOQjrKEefcRv6Aefd_yY7qktuYUQDwc,10040
5
5
  langroid/agent/callbacks/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
6
6
  langroid/agent/callbacks/chainlit.py,sha256=UKG2_v4ktfkEaGvdouVRHEqQejEYya2Rli8jrP65TmA,22055
7
- langroid/agent/chat_agent.py,sha256=bTQrIMbN8JxxtnVNC-xzODVLvH3SHmy5vijRjY3cCUE,41564
7
+ langroid/agent/chat_agent.py,sha256=M5tdp1HuFthhMChLNd5XKBWxoiMSTkOuXlM8JoRLiUk,41586
8
8
  langroid/agent/chat_document.py,sha256=MwtNABK28tfSzqCeQlxoauT8uPn8oldU7dlnrX8aQ10,11232
9
9
  langroid/agent/helpers.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
10
10
  langroid/agent/junk,sha256=LxfuuW7Cijsg0szAzT81OjWWv1PMNI-6w_-DspVIO2s,339
11
11
  langroid/agent/openai_assistant.py,sha256=3saI9PwF8IZNJcjqyUy-rj73TInAzdlk14LiOvT_Dkc,33548
12
12
  langroid/agent/special/__init__.py,sha256=gik_Xtm_zV7U9s30Mn8UX3Gyuy4jTjQe9zjiE3HWmEo,1273
13
- langroid/agent/special/doc_chat_agent.py,sha256=CXFLfDMEabaBZwZwFgNOaG3E3S86xcBM4txrsMD_70I,54014
14
- langroid/agent/special/lance_doc_chat_agent.py,sha256=USp0U3eTaJzwF_3bdqE7CedSLbaqAi2tm-VzygcyLaA,10175
13
+ langroid/agent/special/doc_chat_agent.py,sha256=8NPAhMnHkFUolQ8EHos40tz5Vwuz_m33NjUfjheXWXY,54569
14
+ langroid/agent/special/lance_doc_chat_agent.py,sha256=Hjpu6u9UPAFMg5J6K97PRFaLbNrGhInC0N9oGi09CeY,10006
15
15
  langroid/agent/special/lance_rag/__init__.py,sha256=QTbs0IVE2ZgDg8JJy1zN97rUUg4uEPH7SLGctFNumk4,174
16
- langroid/agent/special/lance_rag/critic_agent.py,sha256=ufTdpHSeHgCzN85Q0sfWOrpBpsCjGVZdAg5yOH1ogU8,7296
16
+ langroid/agent/special/lance_rag/critic_agent.py,sha256=S3NA3OAO7XaXjCrmwhKB7qCPlgRZFvDxiB5Qra65Zhs,7959
17
17
  langroid/agent/special/lance_rag/lance_rag_task.py,sha256=l_HQgrYY-CX2FwIsS961aEF3bYog3GDYo98fj0C0mSk,2889
18
- langroid/agent/special/lance_rag/query_planner_agent.py,sha256=M4RC_0f98_pwVL7ygrr1VI80LgJiFcmKjJFH0M4tccI,9830
19
- langroid/agent/special/lance_tools.py,sha256=BksGrrNgGgyYWP0HnfAuXMc0KzXooFOzY2l5rDDMtQ8,1467
18
+ langroid/agent/special/lance_rag/query_planner_agent.py,sha256=QB8UYITUCkgSPturEwu_3i4kU8jXxW_jXNGSLlH5tMc,10109
19
+ langroid/agent/special/lance_rag_new/__init__.py,sha256=QTbs0IVE2ZgDg8JJy1zN97rUUg4uEPH7SLGctFNumk4,174
20
+ langroid/agent/special/lance_rag_new/critic_agent.py,sha256=ksUjI4Wd3SgXsEwMpEmCIvJrKd3k1k_AyUIYaNV5pBw,8341
21
+ langroid/agent/special/lance_rag_new/lance_rag_task.py,sha256=mKo4lCC1ff5Jt9BlxwclQ_y3omw2S_f0MVIJfNmXM6w,5267
22
+ langroid/agent/special/lance_rag_new/query_planner_agent.py,sha256=JqO_5fKW8HPn-zqKsZzX1sl05RgtcT63qpDMR9-q33A,10251
23
+ langroid/agent/special/lance_tools.py,sha256=BznV_r3LAFyybvBRa9KQ0oU7mPM3uQVfri7PFp7M_qc,1894
20
24
  langroid/agent/special/neo4j/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
21
25
  langroid/agent/special/neo4j/csv_kg_chat.py,sha256=dRsAgMBa1H_EMI2YYgJR2Xyv1D7e4o3G9M64mTewq_c,6409
22
- langroid/agent/special/neo4j/neo4j_chat_agent.py,sha256=Y4Zu-m8WKO1xjeBRarV_m4y00Y5n_NR2B-hepjZp_cY,13104
26
+ langroid/agent/special/neo4j/neo4j_chat_agent.py,sha256=ryXFx2-ddlNzip8Zssrg0bCyNcFyIu4vax_z3WBXkyI,13106
23
27
  langroid/agent/special/neo4j/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
24
28
  langroid/agent/special/neo4j/utils/system_message.py,sha256=vRpz1P-OYLLiC6OGYYoK6x77yxVzDxMTCEJSsYUIuG4,2242
25
29
  langroid/agent/special/relevance_extractor_agent.py,sha256=zIx8GUdVo1aGW6ASla0NPQjYYIpmriK_TYMijqAx3F8,4796
@@ -34,7 +38,7 @@ langroid/agent/special/sql/utils/tools.py,sha256=vFYysk6Vi7HJjII8B4RitA3pt_z3gkS
34
38
  langroid/agent/special/table_chat_agent.py,sha256=d9v2wsblaRx7oMnKhLV7uO_ujvk9gh59pSGvBXyeyNc,9659
35
39
  langroid/agent/task.py,sha256=vKM2dmRYSH4i_VA0lf2axUtZcTGU44rVHz6EyxI4kG0,73990
36
40
  langroid/agent/team.py,sha256=88VNRSmK35WEl620GfBzuIrBASXYSeBZ8yDKX-nP_Bo,75778
37
- langroid/agent/tool_message.py,sha256=wIyZnUcZpxkiRPvM9O3MO3b5BBAdLEEan9kqPbvtApc,9743
41
+ langroid/agent/tool_message.py,sha256=ggxmIZO_wi6x5uD-YWml07Bfgms-ohOSKHyQQdJFi4o,9571
38
42
  langroid/agent/tools/__init__.py,sha256=e-63cfwQNk_ftRKQwgDAJQK16QLbRVWDBILeXIc7wLk,402
39
43
  langroid/agent/tools/duckduckgo_search_tool.py,sha256=NhsCaGZkdv28nja7yveAhSK_w6l_Ftym8agbrdzqgfo,1935
40
44
  langroid/agent/tools/extract_tool.py,sha256=u5lL9rKBzaLBOrRyLnTAZ97pQ1uxyLP39XsWMnpaZpw,3789
@@ -118,20 +122,20 @@ langroid/utils/output/citations.py,sha256=PSY2cpti8W-ZGFMAgj1lYoEIZy0lsniLpCliMs
118
122
  langroid/utils/output/printing.py,sha256=yzPJZN-8_jyOJmI9N_oLwEDfjMwVgk3IDiwnZ4eK_AE,2962
119
123
  langroid/utils/output/status.py,sha256=rzbE7mDJcgNNvdtylCseQcPGCGghtJvVq3lB-OPJ49E,1049
120
124
  langroid/utils/pandas_utils.py,sha256=UctS986Jtl_MvU5rA7-GfrjEHXP7MNu8ePhepv0bTn0,755
121
- langroid/utils/pydantic_utils.py,sha256=FKC8VKXH2uBEpFjnnMgIcEsQn6hs31ftea8zv5pMK9g,21740
125
+ langroid/utils/pydantic_utils.py,sha256=X35qxjE4sSIi-oBMkI1s9fiUIJbpXHLmJqcJ7zsy0jg,19914
122
126
  langroid/utils/system.py,sha256=nvKeeUAj4eviR4kYpcr9h-HYdhqUNMTRBTHBOhz0GdU,5182
123
127
  langroid/utils/web/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
124
128
  langroid/utils/web/login.py,sha256=1iz9eUAHa87vpKIkzwkmFa00avwFWivDSAr7QUhK7U0,2528
125
129
  langroid/vector_store/__init__.py,sha256=6xBjb_z4QtUy4vz4RuFbcbSwmHrggHL8-q0DwCf3PMM,972
126
- langroid/vector_store/base.py,sha256=tuEPaxJcuU_39sRnUjjNd8D8n8IjP6jrbwQv_ecNpSw,13532
127
- langroid/vector_store/chromadb.py,sha256=bZ5HjwgKgfJj1PUHsatYsrHv-v0dpOfMR2l0tJ2H0_A,7890
128
- langroid/vector_store/lancedb.py,sha256=9x7e_5zo7nLhMbhjYby2ZpBJ-vyawcC0_XAuatfHJf8,20517
130
+ langroid/vector_store/base.py,sha256=pkc4n0yWGVk7iRUOLFkU_ID5NiBFfAcA3lBlPNX79pU,13623
131
+ langroid/vector_store/chromadb.py,sha256=KMfHrgovQEOeJR_LsMpGM8BteJ50wpisDu608RhU3SU,7940
132
+ langroid/vector_store/lancedb.py,sha256=MLubJBhtNIFX6zY0qANqCoB6MlL-oZiJCg9gZp2H2rs,14620
129
133
  langroid/vector_store/meilisearch.py,sha256=6frB7GFWeWmeKzRfLZIvzRjllniZ1cYj3HmhHQICXLs,11663
130
134
  langroid/vector_store/momento.py,sha256=qR-zBF1RKVHQZPZQYW_7g-XpTwr46p8HJuYPCkfJbM4,10534
131
135
  langroid/vector_store/qdrant_cloud.py,sha256=3im4Mip0QXLkR6wiqVsjV1QvhSElfxdFSuDKddBDQ-4,188
132
- langroid/vector_store/qdrantdb.py,sha256=HkcK6jOf-FEDoOiG94MpsYDJr98T7vZkDyG__1BlnWI,17354
133
- pyproject.toml,sha256=x0YGXi9ennkubMYlFO-Eeyp6h2YE_aOBbeRJrUtTm34,7063
134
- langroid-0.3.1.dist-info/LICENSE,sha256=EgVbvA6VSYgUlvC3RvPKehSg7MFaxWDsFuzLOsPPfJg,1065
135
- langroid-0.3.1.dist-info/METADATA,sha256=9WLpuCfOtRfjB30PZa2jwGmnlotxXRZgHqt6UWiNh4E,54402
136
- langroid-0.3.1.dist-info/WHEEL,sha256=FMvqSimYX_P7y0a7UY-_Mc83r5zkBZsCYPm7Lr0Bsq4,88
137
- langroid-0.3.1.dist-info/RECORD,,
136
+ langroid/vector_store/qdrantdb.py,sha256=v88lqFkepADvlN6lByUj9I4NEKa9X9lWH16uTPPbYrE,17457
137
+ pyproject.toml,sha256=1jCGCKPNCobDsOptcZnMKZIsI044DCR2YSnEPpEL4sY,7063
138
+ langroid-0.5.1.dist-info/LICENSE,sha256=EgVbvA6VSYgUlvC3RvPKehSg7MFaxWDsFuzLOsPPfJg,1065
139
+ langroid-0.5.1.dist-info/METADATA,sha256=TK7kU-GZZPw3-m2A1UJZwBH3kdL5wEHb0umIVGCcmeg,54402
140
+ langroid-0.5.1.dist-info/WHEEL,sha256=FMvqSimYX_P7y0a7UY-_Mc83r5zkBZsCYPm7Lr0Bsq4,88
141
+ langroid-0.5.1.dist-info/RECORD,,
pyproject.toml CHANGED
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "langroid"
3
- version = "0.3.1"
3
+ version = "0.5.1"
4
4
  description = "Harness LLMs with Multi-Agent Programming"
5
5
  authors = ["Prasad Chalasani <pchalasani@gmail.com>"]
6
6
  readme = "README.md"