langroid 0.1.199__py3-none-any.whl → 0.1.200__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.
@@ -6,9 +6,8 @@ models will have the same tokenizer, so we just use the first one.
6
6
  """
7
7
  import logging
8
8
  import re
9
- from typing import Any, List, Set, Type
9
+ from typing import Any, List, Set, Tuple, Type
10
10
 
11
- from huggingface_hub import HfApi, ModelFilter
12
11
  from jinja2.exceptions import TemplateError
13
12
 
14
13
  from langroid.language_models.base import LanguageModel, LLMMessage, Role
@@ -18,7 +17,7 @@ from langroid.language_models.prompt_formatter.base import PromptFormatter
18
17
  logger = logging.getLogger(__name__)
19
18
 
20
19
 
21
- def try_import_AutoTokenizer() -> Type[Any]:
20
+ def try_import_hf_modules() -> Tuple[Type[Any], Type[Any], Type[Any]]:
22
21
  """
23
22
  Attempts to import the AutoTokenizer class from the transformers package.
24
23
  Returns:
@@ -27,14 +26,18 @@ def try_import_AutoTokenizer() -> Type[Any]:
27
26
  ImportError: If the transformers package is not installed.
28
27
  """
29
28
  try:
29
+ from huggingface_hub import HfApi, ModelFilter
30
30
  from transformers import AutoTokenizer
31
31
 
32
- return AutoTokenizer # type: ignore
32
+ return AutoTokenizer, HfApi, ModelFilter
33
33
  except ImportError:
34
34
  raise ImportError(
35
35
  """
36
- You are trying to use the HuggingFace transformers.AutoTokenizer,
37
- but the `transformers` package is not installed
36
+ You are trying to use some/all of:
37
+ HuggingFace transformers.AutoTokenizer,
38
+ huggingface_hub.HfApi,
39
+ huggingface_hub.ModelFilter,
40
+ but these are not not installed
38
41
  by default with Langroid. Please install langroid using the
39
42
  `transformers` extra, like so:
40
43
  pip install "langroid[transformers]"
@@ -44,6 +47,7 @@ def try_import_AutoTokenizer() -> Type[Any]:
44
47
 
45
48
 
46
49
  def find_hf_formatter(model_name: str) -> str:
50
+ AutoTokenizer, HfApi, ModelFilter = try_import_hf_modules()
47
51
  hf_api = HfApi()
48
52
  # try to find a matching model, with progressivly shorter prefixes of model_name
49
53
  model_name = model_name.lower().split("/")[-1]
@@ -61,7 +65,7 @@ def find_hf_formatter(model_name: str) -> str:
61
65
  mdl = next(models)
62
66
  except StopIteration:
63
67
  continue
64
- AutoTokenizer = try_import_AutoTokenizer()
68
+
65
69
  tokenizer = AutoTokenizer.from_pretrained(mdl.id)
66
70
  if tokenizer.chat_template is not None:
67
71
  return str(mdl.id)
@@ -73,6 +77,7 @@ class HFFormatter(PromptFormatter):
73
77
 
74
78
  def __init__(self, config: HFPromptFormatterConfig):
75
79
  super().__init__(config)
80
+ AutoTokenizer, HfApi, ModelFilter = try_import_hf_modules()
76
81
  self.config: HFPromptFormatterConfig = config
77
82
  hf_api = HfApi()
78
83
  models = hf_api.list_models(
@@ -85,7 +90,7 @@ class HFFormatter(PromptFormatter):
85
90
  mdl = next(models)
86
91
  except StopIteration:
87
92
  raise ValueError(f"Model {config.model_name} not found on HuggingFace Hub")
88
- AutoTokenizer = try_import_AutoTokenizer()
93
+
89
94
  self.tokenizer = AutoTokenizer.from_pretrained(mdl.id)
90
95
  if self.tokenizer.chat_template is None:
91
96
  raise ValueError(
@@ -1,22 +1,30 @@
1
1
  from . import base
2
- from . import chromadb
2
+
3
3
  from . import qdrantdb
4
4
  from . import meilisearch
5
5
  from . import lancedb
6
6
 
7
- from .chromadb import ChromaDBConfig, ChromaDB
8
7
  from .qdrantdb import QdrantDBConfig, QdrantDB
9
8
  from .meilisearch import MeiliSearch, MeiliSearchConfig
10
9
  from .lancedb import LanceDB, LanceDBConfig
11
10
 
11
+ has_chromadb = False
12
+ try:
13
+ from . import chromadb
14
+ from .chromadb import ChromaDBConfig, ChromaDB
15
+
16
+ chromadb # silence linters
17
+ ChromaDB
18
+ ChromaDBConfig
19
+ has_chromadb = True
20
+ except ImportError:
21
+ pass
22
+
12
23
  __all__ = [
13
24
  "base",
14
- "chromadb",
15
25
  "qdrantdb",
16
26
  "meilisearch",
17
27
  "lancedb",
18
- "ChromaDBConfig",
19
- "ChromaDB",
20
28
  "QdrantDBConfig",
21
29
  "QdrantDB",
22
30
  "MeiliSearch",
@@ -24,3 +32,6 @@ __all__ = [
24
32
  "LanceDB",
25
33
  "LanceDBConfig",
26
34
  ]
35
+
36
+ if has_chromadb:
37
+ __all__.extend(["chromadb", "ChromaDBConfig", "ChromaDB"])
@@ -2,8 +2,6 @@ import json
2
2
  import logging
3
3
  from typing import Any, Dict, List, Optional, Sequence, Tuple
4
4
 
5
- import chromadb
6
-
7
5
  from langroid.embedding_models.base import (
8
6
  EmbeddingModel,
9
7
  EmbeddingModelsConfig,
@@ -28,6 +26,17 @@ class ChromaDBConfig(VectorStoreConfig):
28
26
  class ChromaDB(VectorStore):
29
27
  def __init__(self, config: ChromaDBConfig = ChromaDBConfig()):
30
28
  super().__init__(config)
29
+ try:
30
+ import chromadb
31
+ except ImportError:
32
+ raise ImportError(
33
+ """
34
+ ChromaDB is not installed by default with Langroid.
35
+ If you want to use it, please install it with the `chromadb` extra, e.g.
36
+ pip install "langroid[chromadb]"
37
+ or an equivalent command.
38
+ """
39
+ )
31
40
  self.config = config
32
41
  emb_model = EmbeddingModel.create(config.embedding)
33
42
  self.embedding_fn = emb_model.embedding_fn()
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: langroid
3
- Version: 0.1.199
3
+ Version: 0.1.200
4
4
  Summary: Harness LLMs with Multi-Agent Programming
5
5
  License: MIT
6
6
  Author: Prasad Chalasani
@@ -11,9 +11,11 @@ Classifier: Programming Language :: Python :: 3
11
11
  Classifier: Programming Language :: Python :: 3.10
12
12
  Classifier: Programming Language :: Python :: 3.11
13
13
  Provides-Extra: chainlit
14
+ Provides-Extra: chromadb
14
15
  Provides-Extra: hf-embeddings
15
16
  Provides-Extra: litellm
16
17
  Provides-Extra: metaphor
18
+ Provides-Extra: mkdocs
17
19
  Provides-Extra: mysql
18
20
  Provides-Extra: neo4j
19
21
  Provides-Extra: postgres
@@ -27,7 +29,7 @@ Requires-Dist: autopep8 (>=2.0.2,<3.0.0)
27
29
  Requires-Dist: black[jupyter] (>=23.3.0,<24.0.0)
28
30
  Requires-Dist: bs4 (>=0.0.1,<0.0.2)
29
31
  Requires-Dist: chainlit (>=1.0.301,<2.0.0) ; extra == "chainlit"
30
- Requires-Dist: chromadb (>=0.4.21,<=0.4.23)
32
+ Requires-Dist: chromadb (>=0.4.21,<=0.4.23) ; extra == "chromadb"
31
33
  Requires-Dist: colorlog (>=6.7.0,<7.0.0)
32
34
  Requires-Dist: docstring-parser (>=0.15,<0.16)
33
35
  Requires-Dist: duckduckgo-search (>=4.4,<5.0)
@@ -37,6 +39,7 @@ Requires-Dist: fire (>=0.5.0,<0.6.0)
37
39
  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: halo (>=0.0.31,<0.0.32)
42
+ Requires-Dist: huggingface-hub (>=0.21.2,<0.22.0) ; extra == "transformers"
40
43
  Requires-Dist: jinja2 (>=3.1.2,<4.0.0)
41
44
  Requires-Dist: lancedb (>=0.4.1,<0.5.0)
42
45
  Requires-Dist: litellm (>=1.23.0,<2.0.0) ; extra == "litellm"
@@ -44,15 +47,15 @@ Requires-Dist: lxml (>=4.9.3,<5.0.0)
44
47
  Requires-Dist: meilisearch (>=0.28.3,<0.29.0)
45
48
  Requires-Dist: meilisearch-python-sdk (>=2.2.3,<3.0.0)
46
49
  Requires-Dist: metaphor-python (>=0.1.23,<0.2.0) ; extra == "metaphor"
47
- Requires-Dist: mkdocs (>=1.4.2,<2.0.0)
48
- Requires-Dist: mkdocs-awesome-pages-plugin (>=2.8.0,<3.0.0)
49
- Requires-Dist: mkdocs-gen-files (>=0.4.0,<0.5.0)
50
- Requires-Dist: mkdocs-jupyter (>=0.24.1,<0.25.0)
51
- Requires-Dist: mkdocs-literate-nav (>=0.6.0,<0.7.0)
52
- Requires-Dist: mkdocs-material (>=9.1.5,<10.0.0)
50
+ Requires-Dist: mkdocs (>=1.4.2,<2.0.0) ; extra == "mkdocs"
51
+ Requires-Dist: mkdocs-awesome-pages-plugin (>=2.8.0,<3.0.0) ; extra == "mkdocs"
52
+ Requires-Dist: mkdocs-gen-files (>=0.4.0,<0.5.0) ; extra == "mkdocs"
53
+ Requires-Dist: mkdocs-jupyter (>=0.24.1,<0.25.0) ; extra == "mkdocs"
54
+ Requires-Dist: mkdocs-literate-nav (>=0.6.0,<0.7.0) ; extra == "mkdocs"
55
+ Requires-Dist: mkdocs-material (>=9.1.5,<10.0.0) ; extra == "mkdocs"
53
56
  Requires-Dist: mkdocs-rss-plugin (>=1.8.0,<2.0.0)
54
- Requires-Dist: mkdocs-section-index (>=0.3.5,<0.4.0)
55
- Requires-Dist: mkdocstrings[python] (>=0.21.2,<0.22.0)
57
+ Requires-Dist: mkdocs-section-index (>=0.3.5,<0.4.0) ; extra == "mkdocs"
58
+ Requires-Dist: mkdocstrings[python] (>=0.21.2,<0.22.0) ; extra == "mkdocs"
56
59
  Requires-Dist: momento (>=1.10.2,<2.0.0)
57
60
  Requires-Dist: mypy (>=1.7.0,<2.0.0)
58
61
  Requires-Dist: neo4j (>=5.14.1,<6.0.0) ; extra == "neo4j"
@@ -61,7 +61,7 @@ langroid/language_models/openai_assistants.py,sha256=9K-DEAL2aSWHeXj2hwCo2RAlK9_
61
61
  langroid/language_models/openai_gpt.py,sha256=W2Cxj13qScqnfJCHvZJIqDM9YMNOFAFhnsIuBcnmDac,49327
62
62
  langroid/language_models/prompt_formatter/__init__.py,sha256=9JXFF22QNMmbQV1q4nrIeQVTtA3Tx8tEZABLtLBdFyc,352
63
63
  langroid/language_models/prompt_formatter/base.py,sha256=eDS1sgRNZVnoajwV_ZIha6cba5Dt8xjgzdRbPITwx3Q,1221
64
- langroid/language_models/prompt_formatter/hf_formatter.py,sha256=PS8w6K7ON5ANw0rU8KDrCtSqf2klxbR7plLKP1M4iXY,5057
64
+ langroid/language_models/prompt_formatter/hf_formatter.py,sha256=QhVj5DcJYqveLC6nE3DKjsiJ8jY-J__8--NNp-2h8vI,5216
65
65
  langroid/language_models/prompt_formatter/llama2_formatter.py,sha256=YdcO88qyBeuMENVIVvVqSYuEpvYSTndUe_jd6hVTko4,2899
66
66
  langroid/language_models/utils.py,sha256=J1Y1HoYPkwS7L-kuLRAGzjcseqAj_S8u_MaaqlOA9uk,4265
67
67
  langroid/mytypes.py,sha256=opL488mtHKob1uJeK_h1-kNjU5GZwkgCfXhBQCsONWU,2614
@@ -107,15 +107,15 @@ langroid/utils/system.py,sha256=l-kFqIWkSD9YHOTka02dnihdbnR1mWVrnKSGK3LuEjo,4577
107
107
  langroid/utils/web/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
108
108
  langroid/utils/web/login.py,sha256=1iz9eUAHa87vpKIkzwkmFa00avwFWivDSAr7QUhK7U0,2528
109
109
  langroid/utils/web/selenium_login.py,sha256=mYI6EvVmne34N9RajlsxxRqJQJvV-WG4LGp6sEECHPw,1156
110
- langroid/vector_store/__init__.py,sha256=qOa3_BLvf8tjdUBT4Zq7pSLTY9TD2Fgw62UHHJWNu8w,557
110
+ langroid/vector_store/__init__.py,sha256=Ba-HF_kW_XlzlCl3oKqIv144fXA0qkIsz94SIWJgXR8,738
111
111
  langroid/vector_store/base.py,sha256=JNk-2f6t_WCavizU332tOoZcXHP73RpobRk88Aus52w,13706
112
- langroid/vector_store/chromadb.py,sha256=fPD0OwPBSSUgZaQQcQjApeUCOaw17eW0MQ7XzVNmz9k,7559
112
+ langroid/vector_store/chromadb.py,sha256=lTEB9Fu6GlX2ip88tmK2aimjU_ExS1DCwm1TGybtGE4,7944
113
113
  langroid/vector_store/lancedb.py,sha256=Vl0nWKqFyczgPRmWXLzof9UgOB0OhVZIuczY_rSAF10,17985
114
114
  langroid/vector_store/meilisearch.py,sha256=d2huA9P-NoYRuAQ9ZeXJmMKr7ry8u90RUSR28k2ecQg,11340
115
115
  langroid/vector_store/momento.py,sha256=j6Eo6oIDN2fe7lsBOlCXJn3uvvERHHTFL5QJfeREeOM,10044
116
116
  langroid/vector_store/qdrant_cloud.py,sha256=3im4Mip0QXLkR6wiqVsjV1QvhSElfxdFSuDKddBDQ-4,188
117
117
  langroid/vector_store/qdrantdb.py,sha256=_egbsP9SWBwmI827EDYSSOqfIQSmwNsmJfFTxrLpWYE,13457
118
- langroid-0.1.199.dist-info/LICENSE,sha256=EgVbvA6VSYgUlvC3RvPKehSg7MFaxWDsFuzLOsPPfJg,1065
119
- langroid-0.1.199.dist-info/METADATA,sha256=I6PUyegsUG-Ny8TzbCV73EpdjN6DK6NRlGJQJm7U-gQ,45883
120
- langroid-0.1.199.dist-info/WHEEL,sha256=FMvqSimYX_P7y0a7UY-_Mc83r5zkBZsCYPm7Lr0Bsq4,88
121
- langroid-0.1.199.dist-info/RECORD,,
118
+ langroid-0.1.200.dist-info/LICENSE,sha256=EgVbvA6VSYgUlvC3RvPKehSg7MFaxWDsFuzLOsPPfJg,1065
119
+ langroid-0.1.200.dist-info/METADATA,sha256=fZw9kRTjGR2JamcyPF52dPrN6RRKRrX9XThU3B8wB7k,46189
120
+ langroid-0.1.200.dist-info/WHEEL,sha256=FMvqSimYX_P7y0a7UY-_Mc83r5zkBZsCYPm7Lr0Bsq4,88
121
+ langroid-0.1.200.dist-info/RECORD,,