langroid 0.1.251__py3-none-any.whl → 0.1.253__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.
Files changed (46) hide show
  1. langroid/__init__.py +16 -15
  2. langroid/agent/__init__.py +1 -0
  3. langroid/agent/base.py +11 -1
  4. langroid/agent/callbacks/chainlit.py +5 -12
  5. langroid/agent/special/__init__.py +3 -2
  6. langroid/agent/special/doc_chat_agent.py +36 -56
  7. langroid/agent/special/neo4j/csv_kg_chat.py +2 -2
  8. langroid/agent/special/sql/__init__.py +1 -2
  9. langroid/agent/special/sql/sql_chat_agent.py +10 -4
  10. langroid/agent/special/sql/utils/__init__.py +4 -5
  11. langroid/agent/special/sql/utils/description_extractors.py +7 -2
  12. langroid/agent/special/sql/utils/populate_metadata.py +6 -1
  13. langroid/agent/special/table_chat_agent.py +2 -2
  14. langroid/agent/task.py +25 -8
  15. langroid/agent/tool_message.py +14 -3
  16. langroid/agent/tools/__init__.py +2 -3
  17. langroid/agent/tools/duckduckgo_search_tool.py +2 -2
  18. langroid/agent/tools/google_search_tool.py +2 -2
  19. langroid/agent/tools/metaphor_search_tool.py +2 -2
  20. langroid/agent/tools/retrieval_tool.py +2 -2
  21. langroid/agent/tools/run_python_code.py +2 -2
  22. langroid/agent/tools/segment_extract_tool.py +2 -2
  23. langroid/cachedb/base.py +10 -2
  24. langroid/cachedb/momento_cachedb.py +10 -4
  25. langroid/cachedb/redis_cachedb.py +2 -3
  26. langroid/embedding_models/__init__.py +1 -0
  27. langroid/exceptions.py +57 -0
  28. langroid/language_models/__init__.py +1 -0
  29. langroid/language_models/base.py +2 -3
  30. langroid/language_models/openai_gpt.py +15 -14
  31. langroid/language_models/prompt_formatter/__init__.py +4 -3
  32. langroid/parsing/document_parser.py +20 -4
  33. langroid/parsing/parser.pyi +56 -0
  34. langroid/utils/logging.py +7 -3
  35. langroid/utils/output/__init__.py +1 -2
  36. langroid/utils/output/citations.py +41 -0
  37. langroid/utils/output/printing.py +7 -2
  38. langroid/vector_store/__init__.py +33 -17
  39. langroid/vector_store/chromadb.py +2 -8
  40. langroid/vector_store/lancedb.py +36 -5
  41. langroid/vector_store/meilisearch.py +21 -11
  42. langroid/vector_store/momento.py +31 -14
  43. {langroid-0.1.251.dist-info → langroid-0.1.253.dist-info}/METADATA +31 -29
  44. {langroid-0.1.251.dist-info → langroid-0.1.253.dist-info}/RECORD +46 -44
  45. {langroid-0.1.251.dist-info → langroid-0.1.253.dist-info}/LICENSE +0 -0
  46. {langroid-0.1.251.dist-info → langroid-0.1.253.dist-info}/WHEEL +0 -0
@@ -7,16 +7,21 @@ Note that what we call "Collection" in Langroid is referred to as
7
7
  but for uniformity we use the Langroid terminology here.
8
8
  """
9
9
 
10
+ from __future__ import annotations
11
+
10
12
  import asyncio
11
13
  import logging
12
14
  import os
13
- from typing import Any, Callable, Dict, List, Optional, Sequence, Tuple
15
+ from typing import TYPE_CHECKING, Any, Callable, Dict, List, Optional, Sequence, Tuple
14
16
 
15
- import meilisearch_python_sdk as meilisearch
16
17
  from dotenv import load_dotenv
17
- from meilisearch_python_sdk.index import AsyncIndex
18
- from meilisearch_python_sdk.models.documents import DocumentsInfo
19
18
 
19
+ if TYPE_CHECKING:
20
+ from meilisearch_python_sdk.index import AsyncIndex
21
+ from meilisearch_python_sdk.models.documents import DocumentsInfo
22
+
23
+
24
+ from langroid.exceptions import LangroidImportError
20
25
  from langroid.mytypes import DocMetaData, Document
21
26
  from langroid.utils.configuration import settings
22
27
  from langroid.vector_store.base import VectorStore, VectorStoreConfig
@@ -34,6 +39,11 @@ class MeiliSearchConfig(VectorStoreConfig):
34
39
  class MeiliSearch(VectorStore):
35
40
  def __init__(self, config: MeiliSearchConfig = MeiliSearchConfig()):
36
41
  super().__init__(config)
42
+ try:
43
+ import meilisearch_python_sdk as meilisearch
44
+ except ImportError:
45
+ raise LangroidImportError("meilisearch", "meilisearch")
46
+
37
47
  self.config: MeiliSearchConfig = config
38
48
  self.host = config.host
39
49
  self.port = config.port
@@ -98,12 +108,12 @@ class MeiliSearch(VectorStore):
98
108
  async def _async_get_indexes(self) -> List[AsyncIndex]:
99
109
  async with self.client() as client:
100
110
  indexes = await client.get_indexes(limit=10_000)
101
- return [] if indexes is None else indexes
111
+ return [] if indexes is None else indexes # type: ignore
102
112
 
103
- async def _async_get_index(self, index_uid: str) -> AsyncIndex:
113
+ async def _async_get_index(self, index_uid: str) -> "AsyncIndex":
104
114
  async with self.client() as client:
105
115
  index = await client.get_index(index_uid)
106
- return index
116
+ return index # type: ignore
107
117
 
108
118
  def list_collections(self, empty: bool = False) -> List[str]:
109
119
  """
@@ -116,7 +126,7 @@ class MeiliSearch(VectorStore):
116
126
  else:
117
127
  return [ind.uid for ind in indexes]
118
128
 
119
- async def _async_create_index(self, collection_name: str) -> AsyncIndex:
129
+ async def _async_create_index(self, collection_name: str) -> "AsyncIndex":
120
130
  async with self.client() as client:
121
131
  index = await client.create_index(
122
132
  uid=collection_name,
@@ -128,7 +138,7 @@ class MeiliSearch(VectorStore):
128
138
  """Delete index if it exists. Returns True iff index was deleted"""
129
139
  async with self.client() as client:
130
140
  result = await client.delete_index_if_exists(uid=collection_name)
131
- return result
141
+ return result # type: ignore
132
142
 
133
143
  def create_collection(self, collection_name: str, replace: bool = False) -> None:
134
144
  """
@@ -198,7 +208,7 @@ class MeiliSearch(VectorStore):
198
208
  except ValueError:
199
209
  return id
200
210
 
201
- async def _async_get_documents(self, where: str = "") -> DocumentsInfo:
211
+ async def _async_get_documents(self, where: str = "") -> "DocumentsInfo":
202
212
  if self.config.collection_name is None:
203
213
  raise ValueError("No collection name set, cannot retrieve docs")
204
214
  filter = [] if where is None else where
@@ -258,7 +268,7 @@ class MeiliSearch(VectorStore):
258
268
  show_ranking_score=True,
259
269
  filter=filter,
260
270
  )
261
- return results.hits
271
+ return results.hits # type: ignore
262
272
 
263
273
  def similar_texts_with_scores(
264
274
  self,
@@ -3,23 +3,34 @@ Momento Vector Index.
3
3
  https://docs.momentohq.com/vector-index/develop/api-reference
4
4
  """
5
5
 
6
+ from __future__ import annotations
7
+
6
8
  import logging
7
9
  import os
8
10
  from typing import List, Optional, Sequence, Tuple, no_type_check
9
11
 
10
- import momento.responses.vector_index as mvi_response
11
12
  from dotenv import load_dotenv
12
- from momento import (
13
- # PreviewVectorIndexClientAsync,
14
- CredentialProvider,
15
- PreviewVectorIndexClient,
16
- VectorIndexConfigurations,
17
- )
18
- from momento.requests.vector_index import (
19
- ALL_METADATA,
20
- Item,
21
- SimilarityMetric,
22
- )
13
+
14
+ from langroid.exceptions import LangroidImportError
15
+
16
+ try:
17
+ import momento.responses.vector_index as mvi_response
18
+ from momento import (
19
+ # PreviewVectorIndexClientAsync,
20
+ CredentialProvider,
21
+ PreviewVectorIndexClient,
22
+ VectorIndexConfigurations,
23
+ )
24
+ from momento.requests.vector_index import (
25
+ ALL_METADATA,
26
+ Item,
27
+ SimilarityMetric,
28
+ )
29
+
30
+ has_momento = True
31
+ except ImportError:
32
+ has_momento = False
33
+
23
34
 
24
35
  from langroid.embedding_models.base import (
25
36
  EmbeddingModel,
@@ -41,12 +52,14 @@ class MomentoVIConfig(VectorStoreConfig):
41
52
  cloud: bool = True
42
53
  collection_name: str | None = "temp"
43
54
  embedding: EmbeddingModelsConfig = OpenAIEmbeddingsConfig()
44
- distance: SimilarityMetric = SimilarityMetric.COSINE_SIMILARITY
45
55
 
46
56
 
47
57
  class MomentoVI(VectorStore):
48
58
  def __init__(self, config: MomentoVIConfig = MomentoVIConfig()):
49
59
  super().__init__(config)
60
+ if not has_momento:
61
+ raise LangroidImportError("momento", "momento")
62
+ self.distance = SimilarityMetric.COSINE_SIMILARITY
50
63
  self.config: MomentoVIConfig = config
51
64
  emb_model = EmbeddingModel.create(config.embedding)
52
65
  self.embedding_fn: EmbeddingFunction = emb_model.embedding_fn()
@@ -114,6 +127,8 @@ class MomentoVI(VectorStore):
114
127
  Args:
115
128
  empty (bool, optional): Whether to include empty collections.
116
129
  """
130
+ if not has_momento:
131
+ raise LangroidImportError("momento", "momento")
117
132
  response = self.client.list_indexes()
118
133
  if isinstance(response, mvi_response.ListIndexes.Success):
119
134
  return [ind.name for ind in response.indexes]
@@ -131,11 +146,13 @@ class MomentoVI(VectorStore):
131
146
  replace (bool): Whether to replace an existing collection
132
147
  with the same name. Defaults to False.
133
148
  """
149
+ if not has_momento:
150
+ raise LangroidImportError("momento", "momento")
134
151
  self.config.collection_name = collection_name
135
152
  response = self.client.create_index(
136
153
  index_name=collection_name,
137
154
  num_dimensions=self.embedding_dim,
138
- similarity_metric=self.config.distance,
155
+ similarity_metric=self.distance,
139
156
  )
140
157
  if isinstance(response, mvi_response.CreateIndex.Success):
141
158
  logger.info(f"Created collection {collection_name}")
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: langroid
3
- Version: 0.1.251
3
+ Version: 0.1.253
4
4
  Summary: Harness LLMs with Multi-Agent Programming
5
5
  License: MIT
6
6
  Author: Prasad Chalasani
@@ -13,18 +13,21 @@ Classifier: Programming Language :: Python :: 3.11
13
13
  Provides-Extra: chainlit
14
14
  Provides-Extra: chromadb
15
15
  Provides-Extra: hf-embeddings
16
+ Provides-Extra: lancedb
16
17
  Provides-Extra: litellm
18
+ Provides-Extra: meilisearch
17
19
  Provides-Extra: metaphor
18
20
  Provides-Extra: mkdocs
21
+ Provides-Extra: momento
19
22
  Provides-Extra: mysql
20
23
  Provides-Extra: neo4j
24
+ Provides-Extra: pdf-parsers
21
25
  Provides-Extra: postgres
26
+ Provides-Extra: sql
22
27
  Provides-Extra: transformers
23
28
  Provides-Extra: unstructured
24
29
  Requires-Dist: aiohttp (>=3.9.1,<4.0.0)
25
30
  Requires-Dist: async-generator (>=1.10,<2.0)
26
- Requires-Dist: autopep8 (>=2.0.2,<3.0.0)
27
- Requires-Dist: black[jupyter] (>=24.3.0,<25.0.0)
28
31
  Requires-Dist: bs4 (>=0.0.1,<0.0.2)
29
32
  Requires-Dist: chainlit (>=1.0.400,<2.0.0) ; extra == "chainlit"
30
33
  Requires-Dist: chromadb (>=0.4.21,<=0.4.23) ; extra == "chromadb"
@@ -34,7 +37,6 @@ Requires-Dist: duckduckgo-search (>=6.0.0,<7.0.0)
34
37
  Requires-Dist: faker (>=18.9.0,<19.0.0)
35
38
  Requires-Dist: fakeredis (>=2.12.1,<3.0.0)
36
39
  Requires-Dist: fire (>=0.5.0,<0.6.0)
37
- Requires-Dist: flake8 (>=6.0.0,<7.0.0)
38
40
  Requires-Dist: google-api-python-client (>=2.95.0,<3.0.0)
39
41
  Requires-Dist: google-generativeai (>=0.5.2,<0.6.0)
40
42
  Requires-Dist: groq (>=0.5.0,<0.6.0)
@@ -42,11 +44,11 @@ Requires-Dist: grpcio (>=1.62.1,<2.0.0)
42
44
  Requires-Dist: halo (>=0.0.31,<0.0.32)
43
45
  Requires-Dist: huggingface-hub (>=0.21.2,<0.22.0) ; extra == "transformers"
44
46
  Requires-Dist: jinja2 (>=3.1.2,<4.0.0)
45
- Requires-Dist: lancedb (>=0.6.2,<0.7.0)
47
+ Requires-Dist: lancedb (>=0.6.2,<0.7.0) ; extra == "lancedb"
46
48
  Requires-Dist: litellm (>=1.30.1,<2.0.0) ; extra == "litellm"
47
49
  Requires-Dist: lxml (>=4.9.3,<5.0.0)
48
- Requires-Dist: meilisearch (>=0.28.3,<0.29.0)
49
- Requires-Dist: meilisearch-python-sdk (>=2.2.3,<3.0.0)
50
+ Requires-Dist: meilisearch (>=0.28.3,<0.29.0) ; extra == "meilisearch"
51
+ Requires-Dist: meilisearch-python-sdk (>=2.2.3,<3.0.0) ; extra == "meilisearch"
50
52
  Requires-Dist: metaphor-python (>=0.1.23,<0.2.0) ; extra == "metaphor"
51
53
  Requires-Dist: mkdocs (>=1.4.2,<2.0.0) ; extra == "mkdocs"
52
54
  Requires-Dist: mkdocs-awesome-pages-plugin (>=2.8.0,<3.0.0) ; extra == "mkdocs"
@@ -57,32 +59,26 @@ Requires-Dist: mkdocs-material (>=9.1.5,<10.0.0) ; extra == "mkdocs"
57
59
  Requires-Dist: mkdocs-rss-plugin (>=1.8.0,<2.0.0) ; extra == "mkdocs"
58
60
  Requires-Dist: mkdocs-section-index (>=0.3.5,<0.4.0) ; extra == "mkdocs"
59
61
  Requires-Dist: mkdocstrings[python] (>=0.21.2,<0.22.0) ; extra == "mkdocs"
60
- Requires-Dist: momento (>=1.10.2,<2.0.0)
61
- Requires-Dist: mypy (>=1.7.0,<2.0.0)
62
+ Requires-Dist: momento (>=1.10.2,<2.0.0) ; extra == "momento"
62
63
  Requires-Dist: neo4j (>=5.14.1,<6.0.0) ; extra == "neo4j"
63
64
  Requires-Dist: nest-asyncio (>=1.6.0,<2.0.0)
64
65
  Requires-Dist: nltk (>=3.8.1,<4.0.0)
65
- Requires-Dist: onnxruntime (==1.16.1)
66
+ Requires-Dist: onnxruntime (>=1.16.1,<2.0.0)
66
67
  Requires-Dist: openai (>=1.14.0,<2.0.0)
67
68
  Requires-Dist: pandas (>=2.0.3,<3.0.0)
68
- Requires-Dist: pdf2image (>=1.17.0,<2.0.0)
69
+ Requires-Dist: pdf2image (>=1.17.0,<2.0.0) ; extra == "pdf-parsers"
69
70
  Requires-Dist: pdfplumber (>=0.10.2,<0.11.0)
70
- Requires-Dist: pre-commit (>=3.3.2,<4.0.0)
71
71
  Requires-Dist: prettytable (>=3.8.0,<4.0.0)
72
- Requires-Dist: psycopg2 (>=2.9.7,<3.0.0) ; extra == "postgres"
73
- Requires-Dist: pyarrow (==15.0.0)
72
+ Requires-Dist: psycopg2 (>=2.9.7,<3.0.0) ; extra == "postgres" or extra == "sql"
73
+ Requires-Dist: pyarrow (==15.0.0) ; extra == "lancedb"
74
74
  Requires-Dist: pydantic (==1.10.13)
75
75
  Requires-Dist: pygithub (>=1.58.1,<2.0.0)
76
76
  Requires-Dist: pygments (>=2.15.1,<3.0.0)
77
- Requires-Dist: pymupdf (>=1.23.3,<2.0.0)
78
- Requires-Dist: pymysql (>=1.1.0,<2.0.0) ; extra == "mysql"
77
+ Requires-Dist: pymupdf (>=1.23.3,<2.0.0) ; extra == "pdf-parsers"
78
+ Requires-Dist: pymysql (>=1.1.0,<2.0.0) ; extra == "mysql" or extra == "sql"
79
79
  Requires-Dist: pyparsing (>=3.0.9,<4.0.0)
80
- Requires-Dist: pypdf (>=3.12.2,<4.0.0)
81
- Requires-Dist: pytesseract (>=0.3.10,<0.4.0)
82
- Requires-Dist: pytest-asyncio (>=0.21.1,<0.22.0)
83
- Requires-Dist: pytest-mysql (>=2.4.2,<3.0.0) ; extra == "mysql"
84
- Requires-Dist: pytest-postgresql (>=5.0.0,<6.0.0) ; extra == "postgres"
85
- Requires-Dist: pytest-redis (>=3.0.2,<4.0.0)
80
+ Requires-Dist: pypdf (>=3.12.2,<4.0.0) ; extra == "pdf-parsers"
81
+ Requires-Dist: pytesseract (>=0.3.10,<0.4.0) ; extra == "pdf-parsers"
86
82
  Requires-Dist: python-docx (>=1.1.0,<2.0.0)
87
83
  Requires-Dist: python-dotenv (>=1.0.0,<2.0.0)
88
84
  Requires-Dist: python-magic (>=0.4.27,<0.5.0)
@@ -93,21 +89,16 @@ Requires-Dist: redis (>=5.0.1,<6.0.0)
93
89
  Requires-Dist: requests (>=2.31.0,<3.0.0)
94
90
  Requires-Dist: requests-oauthlib (>=1.3.1,<2.0.0)
95
91
  Requires-Dist: rich (>=13.3.4,<14.0.0)
96
- Requires-Dist: ruff (>=0.2.2,<0.3.0)
97
92
  Requires-Dist: scrapy (>=2.11.0,<3.0.0)
98
93
  Requires-Dist: sentence-transformers (==2.2.2) ; extra == "hf-embeddings"
99
- Requires-Dist: sqlalchemy (>=2.0.19,<3.0.0)
100
- Requires-Dist: tantivy (>=0.21.0,<0.22.0)
94
+ Requires-Dist: sqlalchemy (>=2.0.19,<3.0.0) ; extra == "sql"
95
+ Requires-Dist: tantivy (>=0.21.0,<0.22.0) ; extra == "lancedb"
101
96
  Requires-Dist: thefuzz (>=0.20.0,<0.21.0)
102
97
  Requires-Dist: tiktoken (>=0.7.0,<0.8.0)
103
98
  Requires-Dist: torch (==2.0.0) ; extra == "hf-embeddings" or extra == "transformers"
104
99
  Requires-Dist: trafilatura (>=1.5.0,<2.0.0)
105
100
  Requires-Dist: transformers (>=4.40.1,<5.0.0) ; extra == "transformers"
106
101
  Requires-Dist: typer (>=0.9.0,<0.10.0)
107
- Requires-Dist: types-pillow (>=10.2.0.20240406,<11.0.0.0)
108
- Requires-Dist: types-pyyaml (>=6.0.12.20240311,<7.0.0.0)
109
- Requires-Dist: types-redis (>=4.5.5.2,<5.0.0.0)
110
- Requires-Dist: types-requests (>=2.31.0.1,<3.0.0.0)
111
102
  Requires-Dist: unstructured[docx,pdf,pptx] (>=0.10.16,<0.10.18) ; extra == "unstructured"
112
103
  Requires-Dist: wget (>=3.2,<4.0)
113
104
  Description-Content-Type: text/markdown
@@ -237,6 +228,17 @@ teacher_task.run()
237
228
  <summary> <b>Click to expand</b></summary>
238
229
 
239
230
  - **May 2024:**
231
+ - [Infinite loop detection](https://github.com/langroid/langroid/blob/0ed30eb467b00d5eaf2933b577a4b2cc37de1aa1/langroid/agent/task.py#L1121) for task loops of cycle-length <= 10 (configurable
232
+ in [`TaskConfig`](https://github.
233
+ com/langroid/langroid/blob/0ed30eb467b00d5eaf2933b577a4b2cc37de1aa1/langroid/agent
234
+ /task.py#L61). Only detects _exact_ loops, rather than
235
+ _approximate_ loops where the entities are saying essentially similar (but not
236
+ exactly the same) things repeatedly.
237
+ - "@"-addressing: any entity can address any other by name, which can be the name
238
+ of an agent's responder ("llm", "user", "agent") or a sub-task name. This is a
239
+ simpler alternative to the `RecipientTool` mechanism, with the tradeoff that
240
+ since it's not a tool, there's no way to enforce/remind the LLM to explicitly
241
+ specify an addressee (in scenarios where this is important).
240
242
  - [Much-Improved Citation](https://github.com/langroid/langroid/issues/477)
241
243
  generation and display when using `DocChatAgent`.
242
244
  - `gpt-4o` is now the default LLM throughout; Update tests and examples to work
@@ -1,16 +1,16 @@
1
- langroid/__init__.py,sha256=GXjDRv1rVNCxEB0BkfPIT4xgldKkB20b7kGPuGxNdiI,1803
2
- langroid/agent/__init__.py,sha256=_D8dxnfdr92ch1CIrUkKjrB5HVvsQdn62b1Fb2kBxV8,785
3
- langroid/agent/base.py,sha256=WzZ7l74brAF_li2dp6s3743-CGSXOMWhd6kd_fLGU-Q,36838
1
+ langroid/__init__.py,sha256=z_fCOLQJPOw3LLRPBlFB5-2HyCjpPgQa4m4iY5Fvb8Y,1800
2
+ langroid/agent/__init__.py,sha256=ll0Cubd2DZ-fsCMl7e10hf9ZjFGKzphfBco396IKITY,786
3
+ langroid/agent/base.py,sha256=6EznAMa4zeRdouo3U3_UzOI_cblvdpNH4v5CAM-fgbA,37171
4
4
  langroid/agent/batch.py,sha256=feRA_yRG768ElOQjrKEefcRv6Aefd_yY7qktuYUQDwc,10040
5
5
  langroid/agent/callbacks/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
6
- langroid/agent/callbacks/chainlit.py,sha256=LboE3zlLLzClKxpBkzHX4XU6fW4lNZW97zwwN97uuaU,21067
6
+ langroid/agent/callbacks/chainlit.py,sha256=XWih3UkHsYgPIaBQ1cZ-8H2VU_URh-sSfw8fcq1hfMo,20841
7
7
  langroid/agent/chat_agent.py,sha256=_xsBfGBkwcHd8IRErsW7tKNz7qn0h2oKSg_BFleOPCs,39475
8
8
  langroid/agent/chat_document.py,sha256=uwCq53SHRyxQw6qyhjzPYuJG48VHBgOf2122Ew3fk6c,9316
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=kIVDI4r-xGvplLU5s0nShPVHs6Jq-wOsfWE0kcMhAdQ,33056
12
- langroid/agent/special/__init__.py,sha256=NG0JkB5y4K0bgnd9Q9UIvFExun3uTfVOWEVLVymff1M,1207
13
- langroid/agent/special/doc_chat_agent.py,sha256=MTUrUyCZ7_wksTo11AwSTHMOKZf1WX-cAJowi_sfT2o,55320
12
+ langroid/agent/special/__init__.py,sha256=NoR_vTfZ2mkhVhKdcwstLMKONpRwL5aLiidD_A2yB78,1208
13
+ langroid/agent/special/doc_chat_agent.py,sha256=v3czg6jNIrfe1v4JXEbT3N2v2M7xaffD9UsKTRajqUI,54305
14
14
  langroid/agent/special/lance_doc_chat_agent.py,sha256=USp0U3eTaJzwF_3bdqE7CedSLbaqAi2tm-VzygcyLaA,10175
15
15
  langroid/agent/special/lance_rag/__init__.py,sha256=QTbs0IVE2ZgDg8JJy1zN97rUUg4uEPH7SLGctFNumk4,174
16
16
  langroid/agent/special/lance_rag/critic_agent.py,sha256=ufTdpHSeHgCzN85Q0sfWOrpBpsCjGVZdAg5yOH1ogU8,7296
@@ -18,38 +18,38 @@ langroid/agent/special/lance_rag/lance_rag_task.py,sha256=l_HQgrYY-CX2FwIsS961aE
18
18
  langroid/agent/special/lance_rag/query_planner_agent.py,sha256=wSkrtY3Qz98KAqpVf0xMf4LRgKbHLASWVNUrbqwUAB0,9814
19
19
  langroid/agent/special/lance_tools.py,sha256=btMwKdcT8RdwAjmzbtN1xxm3s1H7ipO9GSpUamryYx8,1456
20
20
  langroid/agent/special/neo4j/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
21
- langroid/agent/special/neo4j/csv_kg_chat.py,sha256=koL3sKtHm3aRkLTiARs54ngrcU3lOR1WaLLc_i8rWOU,6374
21
+ langroid/agent/special/neo4j/csv_kg_chat.py,sha256=dRsAgMBa1H_EMI2YYgJR2Xyv1D7e4o3G9M64mTewq_c,6409
22
22
  langroid/agent/special/neo4j/neo4j_chat_agent.py,sha256=vBr6EQ_eJCYAtqDe-gTSvWHT-jRE_fZOPsGWxuDJe4w,13092
23
23
  langroid/agent/special/neo4j/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
24
24
  langroid/agent/special/neo4j/utils/system_message.py,sha256=vRpz1P-OYLLiC6OGYYoK6x77yxVzDxMTCEJSsYUIuG4,2242
25
25
  langroid/agent/special/relevance_extractor_agent.py,sha256=zIx8GUdVo1aGW6ASla0NPQjYYIpmriK_TYMijqAx3F8,4796
26
26
  langroid/agent/special/retriever_agent.py,sha256=lvMvf-u9rSosg4YASuFdUbGLgkzLPknXAbJZfZ1LZCc,1868
27
- langroid/agent/special/sql/__init__.py,sha256=qUM-b4FfvIt0gYWP7_niyqR3OwVMMkuK2SyqUYWjyxs,207
28
- langroid/agent/special/sql/sql_chat_agent.py,sha256=ZTK19ToIpSxtedwzsqL38diMtHth6uVDf25Wng2dn7Q,13746
29
- langroid/agent/special/sql/utils/__init__.py,sha256=i8oYoyI4aV1LcYktMOhzi_eYbQ6RVt2e7Dj2bXkCZXc,447
30
- langroid/agent/special/sql/utils/description_extractors.py,sha256=RZ2R3DmASxB1ijzbA_TuxkhP00Pxcg_tAKlLXGo3rcg,6381
31
- langroid/agent/special/sql/utils/populate_metadata.py,sha256=x2OMKfmIBnJESBG3qKt6gvr3H3L4ZQcoxHfNdWfHjZs,2987
27
+ langroid/agent/special/sql/__init__.py,sha256=W--80eB-TlwDjjupcsjlqpdk1xuU_w5FaYPB3pb_j9I,194
28
+ langroid/agent/special/sql/sql_chat_agent.py,sha256=Now37yznNeiCE0ysC5W5BPG41xO69kxrHZWzLqs5dhQ,13903
29
+ langroid/agent/special/sql/utils/__init__.py,sha256=JFif6CRTrN-bc91uuAI4K9fe2ndIWSNMVxJ0WA68--M,446
30
+ langroid/agent/special/sql/utils/description_extractors.py,sha256=cX8TIpmTPXZXQTMpIi3OUFwFsPywxFFdurpx717Kq0I,6529
31
+ langroid/agent/special/sql/utils/populate_metadata.py,sha256=1J22UsyEPKzwK0XlJZtYn9r6kYc0FXIr8-lZrndYlhc,3131
32
32
  langroid/agent/special/sql/utils/system_message.py,sha256=qKLHkvQWRQodTtPLPxr1GSLUYUFASZU8x-ybV67cB68,1885
33
33
  langroid/agent/special/sql/utils/tools.py,sha256=6uB2424SLtmapui9ggcEr0ZTiB6_dL1-JRGgN8RK9Js,1332
34
- langroid/agent/special/table_chat_agent.py,sha256=xz4nWndTYTykET_oaveHcZUQ8IEpmA5yB8QGTXfOifw,9624
35
- langroid/agent/task.py,sha256=9Arj-ULbaJBCV97Cv5Qe30RLwhRKwIA3gxL5Cog7BL0,58527
36
- langroid/agent/tool_message.py,sha256=aNSYLiRCszPZXJpKt7bGXWjBRzJVJIZoTjQXy7RHMQs,8486
37
- langroid/agent/tools/__init__.py,sha256=q-maq3k2BXhPAU99G0H6-j_ozoRvx15I1RFpPVicQIU,304
38
- langroid/agent/tools/duckduckgo_search_tool.py,sha256=mLGhlgs6pwbYZIwrOs9shfh1dMBVT4DtkR29pYL3cCQ,1900
34
+ langroid/agent/special/table_chat_agent.py,sha256=d9v2wsblaRx7oMnKhLV7uO_ujvk9gh59pSGvBXyeyNc,9659
35
+ langroid/agent/task.py,sha256=J4GIvbPMlL9uXKr7J-bSPHGvFK5tI2R0INgbnbFRmqk,59265
36
+ langroid/agent/tool_message.py,sha256=okhIK0M2ZIGTlQF3h6UGkYk6ibH17mzm0ypDeczlWc0,9137
37
+ langroid/agent/tools/__init__.py,sha256=8Pc9BlGCB5FQ2IDGKS_WPpHCoWp5jblMU8EHJwwikAY,303
38
+ langroid/agent/tools/duckduckgo_search_tool.py,sha256=NhsCaGZkdv28nja7yveAhSK_w6l_Ftym8agbrdzqgfo,1935
39
39
  langroid/agent/tools/extract_tool.py,sha256=u5lL9rKBzaLBOrRyLnTAZ97pQ1uxyLP39XsWMnpaZpw,3789
40
40
  langroid/agent/tools/generator_tool.py,sha256=y0fB0ZObjA0b3L0uSTtrqRCKHDUR95arBftqiUeKD2o,663
41
- langroid/agent/tools/google_search_tool.py,sha256=cQxcNtb8XCNpOo_yCeYRwG_y-OATjPgkbr01kea9qWE,1421
42
- langroid/agent/tools/metaphor_search_tool.py,sha256=NKHss-AkI942_XhfMgUctAwHjIHpqp5NfYIebKV4UcE,2454
41
+ langroid/agent/tools/google_search_tool.py,sha256=y7b-3FtgXf0lfF4AYxrZ3K5pH2dhidvibUOAGBE--WI,1456
42
+ langroid/agent/tools/metaphor_search_tool.py,sha256=qj4gt453cLEX3EGW7nVzVu6X7LCdrwjSlcNY0qJW104,2489
43
43
  langroid/agent/tools/recipient_tool.py,sha256=NrLxIeQT-kbMv7AeYX0uqvGeMK4Q3fIDvG15OVzlgk8,9624
44
- langroid/agent/tools/retrieval_tool.py,sha256=6uvRNg-kG_ItPa3sF9NWkthQ5frHn8bkB1Z3GSd3Oas,836
45
- langroid/agent/tools/run_python_code.py,sha256=V3mHdHQYn0M0PAtyoHxjNvk6KvWWcQ4ugo0TOKc8HyI,1752
46
- langroid/agent/tools/segment_extract_tool.py,sha256=W39poS7Av2EuJ34tGKhLhzgj3zEyZnBplpSt2goRAp4,1285
44
+ langroid/agent/tools/retrieval_tool.py,sha256=2q2pfoYbZNfbWQ0McxrtmfF0ekGglIgRl-6uF26pa-E,871
45
+ langroid/agent/tools/run_python_code.py,sha256=BvoxYzzHijU-p4703n2iVlt5BCieR1oMSy50w0tQZAg,1787
46
+ langroid/agent/tools/segment_extract_tool.py,sha256=WOwZdTTOqKaJUDIqI0jWDV126VM1UjJzIUandHsnC-g,1320
47
47
  langroid/agent_config.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
48
48
  langroid/cachedb/__init__.py,sha256=ygx42MS7fvh2UwRMjukTk3dWBkzv_rACebTBRYa_MkU,148
49
- langroid/cachedb/base.py,sha256=tdIZmdDdDMW-wVkNQdi4vMQCHP718l9JM6cDhL6odf4,1229
50
- langroid/cachedb/momento_cachedb.py,sha256=IbaYG7HgG-G18GlWsYVnLv0r2e2S48z6sl8OlJOGUfc,2998
51
- langroid/cachedb/redis_cachedb.py,sha256=5WrwgareXGboZeaCLkJ8MarqRMrrXl4_8o8aDrdrOCE,4993
52
- langroid/embedding_models/__init__.py,sha256=AJg2668ytmUyqYP0SGw-ZKz2ITi4YK7IAv2lfCjFfOg,714
49
+ langroid/cachedb/base.py,sha256=LKiJyOFQUN1NRzPIynfbYKGFfSanA6auDfBNEedBK7Y,1342
50
+ langroid/cachedb/momento_cachedb.py,sha256=YEOJ62hEcV6iIeMr5aGgRYgWQqFYaej9gEDEcY0sm7M,3172
51
+ langroid/cachedb/redis_cachedb.py,sha256=NukuCWgdp1AWWNgguiZfuypbH9GHwiYe34ZZy866u54,4981
52
+ langroid/embedding_models/__init__.py,sha256=lsu8qxCjfGujXGueJWU-VI3LMZYGjLSYgqUKDd4F3Qo,715
53
53
  langroid/embedding_models/base.py,sha256=xY9QF01ilsMvaNH4JMDvkZgXY59AeYR4VAykgNd6Flg,1818
54
54
  langroid/embedding_models/clustering.py,sha256=tZWElUqXl9Etqla0FAa7og96iDKgjqWjucZR_Egtp-A,6684
55
55
  langroid/embedding_models/models.py,sha256=-xeN0irBPc1tUgRFHGM1ki4NwOIHr6F3SKuEjD5nTOg,7144
@@ -59,14 +59,14 @@ langroid/embedding_models/protoc/embeddings_pb2.py,sha256=4Q57PhOunv-uZNJrxYrWBX
59
59
  langroid/embedding_models/protoc/embeddings_pb2.pyi,sha256=UkNy7BrNsmQm0vLb3NtGXy8jVtz-kPWwwFsX-QbQBhQ,1475
60
60
  langroid/embedding_models/protoc/embeddings_pb2_grpc.py,sha256=9dYQqkW3JPyBpSEjeGXTNpSqAkC-6FPtBHyteVob2Y8,2452
61
61
  langroid/embedding_models/remote_embeds.py,sha256=6_kjXByVbqhY9cGwl9R83ZcYC2km-nGieNNAo1McHaY,5151
62
- langroid/exceptions.py,sha256=aQwRVRb04flh1GVbLo3PmoIf3sP9RC7Q5gJH9aVSEkI,169
63
- langroid/language_models/__init__.py,sha256=5L9ndEEC8iLJHjDJmYFTnv6-2-3xsxWUMHcugR8IeDs,821
62
+ langroid/exceptions.py,sha256=w_Cr41nPAmsa6gW5nNFaO9yDcBCWdQqRspL1jYvZf5w,2209
63
+ langroid/language_models/__init__.py,sha256=55602F5QA58MmRq-yRjoXK6xZOMRHQrR4QGaCnlX218,822
64
64
  langroid/language_models/azure_openai.py,sha256=ncRCbKooqLVOY-PWQUIo9C3yTuKEFbAwyngXT_M4P7k,5989
65
- langroid/language_models/base.py,sha256=2JhacnbQ-DJzLbOaJqyZPnl867xyiz_W-ODiAlEcp98,21131
65
+ langroid/language_models/base.py,sha256=8FTvWtOmIrz6K78kzyrVqf2uJk03dBc0AUnVY-l9ucg,21031
66
66
  langroid/language_models/config.py,sha256=5UF3DzO1a-Dfsc3vghE0XGq7g9t_xDsRCsuRiU4dgBg,366
67
67
  langroid/language_models/openai_assistants.py,sha256=9K-DEAL2aSWHeXj2hwCo2RAlK9_1oCPtqX2u1wISCj8,36
68
- langroid/language_models/openai_gpt.py,sha256=5O-roChpUDZ6OmRTOkR9e2AHHZL8w12Yzs9Q_xviDZ0,50668
69
- langroid/language_models/prompt_formatter/__init__.py,sha256=9JXFF22QNMmbQV1q4nrIeQVTtA3Tx8tEZABLtLBdFyc,352
68
+ langroid/language_models/openai_gpt.py,sha256=SSLBYb41ITLegdinFHL2u9Hm5v2bNgBDF8q0BsznY8A,50596
69
+ langroid/language_models/prompt_formatter/__init__.py,sha256=2-5cdE24XoFDhifOLl8yiscohil1ogbP1ECkYdBlBsk,372
70
70
  langroid/language_models/prompt_formatter/base.py,sha256=eDS1sgRNZVnoajwV_ZIha6cba5Dt8xjgzdRbPITwx3Q,1221
71
71
  langroid/language_models/prompt_formatter/hf_formatter.py,sha256=TFL6ppmeQWnzr6CKQzRZFYY810zE1mr8DZnhw6i85ok,5217
72
72
  langroid/language_models/prompt_formatter/llama2_formatter.py,sha256=YdcO88qyBeuMENVIVvVqSYuEpvYSTndUe_jd6hVTko4,2899
@@ -77,11 +77,12 @@ langroid/parsing/agent_chats.py,sha256=sbZRV9ujdM5QXvvuHVjIi2ysYSYlap-uqfMMUKulr
77
77
  langroid/parsing/code-parsing.md,sha256=--cyyNiSZSDlIwcjAV4-shKrSiRe2ytF3AdSoS_hD2g,3294
78
78
  langroid/parsing/code_parser.py,sha256=BbDAzp35wkYQ9U1dpf1ARL0lVyi0tfqEc6_eox2C090,3727
79
79
  langroid/parsing/config.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
80
- langroid/parsing/document_parser.py,sha256=sfyNhkIdAQkufOHb-tTv63EF51pGNzrnAl0DNeLR40I,23049
80
+ langroid/parsing/document_parser.py,sha256=L1-ltLdHkk2yUvVCAA9g7MH7P28sb4Te8pck40u1efY,23496
81
81
  langroid/parsing/image_text.py,sha256=sbLIQ5nHe2UnYUksBaQsmZGaX-X0qgEpPd7CEzi_z5M,910
82
82
  langroid/parsing/para_sentence_split.py,sha256=AJBzZojP3zpB-_IMiiHismhqcvkrVBQ3ZINoQyx_bE4,2000
83
83
  langroid/parsing/parse_json.py,sha256=tgB_oatcrgt6L9ZplC-xBBXjLzL1gjSQf1L2_W5kwFA,4230
84
84
  langroid/parsing/parser.py,sha256=2TT6YMgEe79Kz9bPIqI-1RIEK77V2H2gbpbX5DhNNrY,10743
85
+ langroid/parsing/parser.pyi,sha256=4t55zlG_23hUFO7OvOttY1xzbLze2elpGjoVTUK9izM,1693
85
86
  langroid/parsing/repo_loader.py,sha256=My5UIe-h1xr0I-6Icu0ZVwRHmGRRRW8SrJYMc9J1M9Q,29361
86
87
  langroid/parsing/routing.py,sha256=_NFPe7wLjd5B6s47w3M8-5vldL8e2Sz51Gb5bwF5ooY,1072
87
88
  langroid/parsing/search.py,sha256=plQtjarB9afGfJLB0CyPXPq3mM4m7kRsfd0_4brziEI,8846
@@ -107,24 +108,25 @@ langroid/utils/docker.py,sha256=kJQOLTgM0x9j9pgIIqp0dZNZCTvoUDhp6i8tYBq1Jr0,1105
107
108
  langroid/utils/globals.py,sha256=VkTHhlqSz86oOPq65sjul0XU8I52UNaFC5vwybMQ74w,1343
108
109
  langroid/utils/llms/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
109
110
  langroid/utils/llms/strings.py,sha256=CSAX9Z6FQOLXOzbLMe_Opqtc3ruDAKTTk7cPqc6Blh0,263
110
- langroid/utils/logging.py,sha256=R8TN-FqVpwZ4Ajgls9TDMthLvPpQd0QVNXK-PJDj1Z8,3917
111
- langroid/utils/output/__init__.py,sha256=4X8Hdo1SEm06NUnggMJrLtW8i1owdDQPrS7J08BaTec,341
112
- langroid/utils/output/printing.py,sha256=5EsYB1O4qKhocW19aebOUzK82RD9U5nygbY21yo8gfg,2872
111
+ langroid/utils/logging.py,sha256=WN180zjxhlozwtyTcLWmbVkXylBs5EvQj85dBPeVUwc,3985
112
+ langroid/utils/output/__init__.py,sha256=7P0f--4IZneNsTxXY5fd6d6iW-CeVe-KSsl-87sbBPc,340
113
+ langroid/utils/output/citations.py,sha256=PSY2cpti8W-ZGFMAgj1lYoEIZy0lsniLpCliMsVkXtc,1425
114
+ langroid/utils/output/printing.py,sha256=yzPJZN-8_jyOJmI9N_oLwEDfjMwVgk3IDiwnZ4eK_AE,2962
113
115
  langroid/utils/output/status.py,sha256=rzbE7mDJcgNNvdtylCseQcPGCGghtJvVq3lB-OPJ49E,1049
114
116
  langroid/utils/pandas_utils.py,sha256=UctS986Jtl_MvU5rA7-GfrjEHXP7MNu8ePhepv0bTn0,755
115
117
  langroid/utils/pydantic_utils.py,sha256=yb-ghaQYL7EIYeiZ0tailvZvAuJZNF7UBXkd3z35OYc,21728
116
118
  langroid/utils/system.py,sha256=RfAcQODu4tjl-pAO8zZ65yKB9-6WsvzSz2dEPkJdSdw,4909
117
119
  langroid/utils/web/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
118
120
  langroid/utils/web/login.py,sha256=1iz9eUAHa87vpKIkzwkmFa00avwFWivDSAr7QUhK7U0,2528
119
- langroid/vector_store/__init__.py,sha256=D82ioqPWxKTTbN0qiPNB-I1GjovhLw1MgDuYhcB3hCs,831
121
+ langroid/vector_store/__init__.py,sha256=BHrYUKy7LHBJAMPuObcD0vs_TRj-B-Xipw7JLy1J9q4,1086
120
122
  langroid/vector_store/base.py,sha256=VZl-pvGs6K-ruTT8SQmDthsCp-VARYaf6OuzKmcXN58,13469
121
- langroid/vector_store/chromadb.py,sha256=rp-qWmYJc_HR48JYNt1MixjJM90jZTdeZIYghd5CenA,8109
122
- langroid/vector_store/lancedb.py,sha256=lbl8wZuV6GNw0LnIwOSriSNwoMEba90umQTcQHtMw7Y,18483
123
- langroid/vector_store/meilisearch.py,sha256=d2huA9P-NoYRuAQ9ZeXJmMKr7ry8u90RUSR28k2ecQg,11340
124
- langroid/vector_store/momento.py,sha256=9cui31TTrILid2KIzUpBkN2Ey3g_CZWOQVdaFsA4Ors,10045
123
+ langroid/vector_store/chromadb.py,sha256=bZ5HjwgKgfJj1PUHsatYsrHv-v0dpOfMR2l0tJ2H0_A,7890
124
+ langroid/vector_store/lancedb.py,sha256=nC5pcrFoUOOO941Y7XiPZONUO4LuoZIAR1aR4PecKto,19014
125
+ langroid/vector_store/meilisearch.py,sha256=6frB7GFWeWmeKzRfLZIvzRjllniZ1cYj3HmhHQICXLs,11663
126
+ langroid/vector_store/momento.py,sha256=QaPzUnTwlswoawGB-paLtUPyLRvckFXLfLDfvbTzjNQ,10505
125
127
  langroid/vector_store/qdrant_cloud.py,sha256=3im4Mip0QXLkR6wiqVsjV1QvhSElfxdFSuDKddBDQ-4,188
126
128
  langroid/vector_store/qdrantdb.py,sha256=sk5Qb2ZNbooi0rorsMuqIMokF7WADw6PJ0D6goM2XBw,16802
127
- langroid-0.1.251.dist-info/LICENSE,sha256=EgVbvA6VSYgUlvC3RvPKehSg7MFaxWDsFuzLOsPPfJg,1065
128
- langroid-0.1.251.dist-info/METADATA,sha256=7zas4QChwjyKRKbSblv32RMUquw6ldzrtV57oceZmb4,49559
129
- langroid-0.1.251.dist-info/WHEEL,sha256=FMvqSimYX_P7y0a7UY-_Mc83r5zkBZsCYPm7Lr0Bsq4,88
130
- langroid-0.1.251.dist-info/RECORD,,
129
+ langroid-0.1.253.dist-info/LICENSE,sha256=EgVbvA6VSYgUlvC3RvPKehSg7MFaxWDsFuzLOsPPfJg,1065
130
+ langroid-0.1.253.dist-info/METADATA,sha256=7uPgSyezQf5zVej0TNnFlAA2wD0CIwOGpX6_MdV_L5w,50190
131
+ langroid-0.1.253.dist-info/WHEEL,sha256=FMvqSimYX_P7y0a7UY-_Mc83r5zkBZsCYPm7Lr0Bsq4,88
132
+ langroid-0.1.253.dist-info/RECORD,,