langroid 0.9.3__py3-none-any.whl → 0.9.5__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.
langroid/agent/base.py CHANGED
@@ -45,7 +45,13 @@ from langroid.mytypes import Entity
45
45
  from langroid.parsing.parse_json import extract_top_level_json
46
46
  from langroid.parsing.parser import Parser, ParsingConfig
47
47
  from langroid.prompts.prompts_config import PromptsConfig
48
- from langroid.pydantic_v1 import BaseSettings, Field, ValidationError, validator
48
+ from langroid.pydantic_v1 import (
49
+ BaseModel,
50
+ BaseSettings,
51
+ Field,
52
+ ValidationError,
53
+ validator,
54
+ )
49
55
  from langroid.utils.configuration import settings
50
56
  from langroid.utils.constants import DONE, NO_ANSWER, PASS, PASS_TO, SEND_TO
51
57
  from langroid.utils.object_registry import ObjectRegistry
@@ -1300,8 +1306,25 @@ class Agent(ABC):
1300
1306
  # else wrap it in an agent response and return it so
1301
1307
  # orchestrator can find a respondent
1302
1308
  result = self.create_agent_response(tool_messages=[maybe_result])
1303
- else:
1309
+ elif isinstance(maybe_result, (ChatDocument, str)):
1304
1310
  result = maybe_result
1311
+ elif isinstance(maybe_result, BaseModel):
1312
+ result = maybe_result.json()
1313
+ else:
1314
+ # last resort: use json.dumps() or str() to make it a str
1315
+ try:
1316
+ result = json.dumps(maybe_result)
1317
+ except Exception:
1318
+ try:
1319
+ result = str(maybe_result)
1320
+ except Exception as e:
1321
+ logger.error(
1322
+ f"""
1323
+ Error converting result of {tool_name} to str: {e}",
1324
+ """,
1325
+ exc_info=True,
1326
+ )
1327
+ result = None
1305
1328
  except Exception as e:
1306
1329
  # raise the error here since we are sure it's
1307
1330
  # not a pydantic validation error,
@@ -18,7 +18,7 @@ from langroid.language_models.prompt_formatter.base import PromptFormatter
18
18
  logger = logging.getLogger(__name__)
19
19
 
20
20
 
21
- def try_import_hf_modules() -> Tuple[Type[Any], Type[Any], Type[Any]]:
21
+ def try_import_hf_modules() -> Tuple[Type[Any], Type[Any]]:
22
22
  """
23
23
  Attempts to import the AutoTokenizer class from the transformers package.
24
24
  Returns:
@@ -27,17 +27,16 @@ def try_import_hf_modules() -> Tuple[Type[Any], Type[Any], Type[Any]]:
27
27
  ImportError: If the transformers package is not installed.
28
28
  """
29
29
  try:
30
- from huggingface_hub import HfApi, ModelFilter
30
+ from huggingface_hub import HfApi
31
31
  from transformers import AutoTokenizer
32
32
 
33
- return AutoTokenizer, HfApi, ModelFilter
33
+ return AutoTokenizer, HfApi
34
34
  except ImportError:
35
35
  raise ImportError(
36
36
  """
37
37
  You are trying to use some/all of:
38
38
  HuggingFace transformers.AutoTokenizer,
39
- huggingface_hub.HfApi,
40
- huggingface_hub.ModelFilter,
39
+ huggingface_hub.HfApi,
41
40
  but these are not not installed
42
41
  by default with Langroid. Please install langroid using the
43
42
  `transformers` extra, like so:
@@ -48,7 +47,7 @@ def try_import_hf_modules() -> Tuple[Type[Any], Type[Any], Type[Any]]:
48
47
 
49
48
 
50
49
  def find_hf_formatter(model_name: str) -> str:
51
- AutoTokenizer, HfApi, ModelFilter = try_import_hf_modules()
50
+ AutoTokenizer, HfApi = try_import_hf_modules()
52
51
  hf_api = HfApi()
53
52
  # try to find a matching model, with progressivly shorter prefixes of model_name
54
53
  model_name = model_name.lower().split("/")[-1]
@@ -57,19 +56,19 @@ def find_hf_formatter(model_name: str) -> str:
57
56
  for i in range(len(parts), 0, -1):
58
57
  prefix = "-".join(parts[:i])
59
58
  models = hf_api.list_models(
60
- filter=ModelFilter(
61
- task="text-generation",
62
- model_name=prefix,
63
- )
59
+ task="text-generation",
60
+ model_name=prefix,
64
61
  )
65
62
  try:
66
63
  mdl = next(models)
67
- except StopIteration:
64
+ tokenizer = AutoTokenizer.from_pretrained(mdl.id)
65
+ if tokenizer.chat_template is not None:
66
+ return str(mdl.id)
67
+ else:
68
+ continue
69
+ except Exception:
68
70
  continue
69
71
 
70
- tokenizer = AutoTokenizer.from_pretrained(mdl.id)
71
- if tokenizer.chat_template is not None:
72
- return str(mdl.id)
73
72
  return ""
74
73
 
75
74
 
@@ -78,14 +77,12 @@ class HFFormatter(PromptFormatter):
78
77
 
79
78
  def __init__(self, config: HFPromptFormatterConfig):
80
79
  super().__init__(config)
81
- AutoTokenizer, HfApi, ModelFilter = try_import_hf_modules()
80
+ AutoTokenizer, HfApi = try_import_hf_modules()
82
81
  self.config: HFPromptFormatterConfig = config
83
82
  hf_api = HfApi()
84
83
  models = hf_api.list_models(
85
- filter=ModelFilter(
86
- task="text-generation",
87
- model_name=config.model_name,
88
- )
84
+ task="text-generation",
85
+ model_name=config.model_name,
89
86
  )
90
87
  try:
91
88
  mdl = next(models)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: langroid
3
- Version: 0.9.3
3
+ Version: 0.9.5
4
4
  Summary: Harness LLMs with Multi-Agent Programming
5
5
  License: MIT
6
6
  Author: Prasad Chalasani
@@ -1,6 +1,6 @@
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=dCGYbT2s35OEgbYtuDWOBhpeJzjo2TPnbbG4NrjVv70,58201
3
+ langroid/agent/base.py,sha256=MYG3kBduJxgQsGUpcS97SE2clTq4VUnGm1Ky6tKJhnM,58995
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=Qedk1-CBCgo9PdaIa7AboLBFCTgAMg9q5nGmoqpZ378,22050
@@ -74,7 +74,7 @@ langroid/language_models/mock_lm.py,sha256=2Ka05SVGSUy096bsa2AyjaqC5jmcFoe7Hycpd
74
74
  langroid/language_models/openai_gpt.py,sha256=T-Gznbv8Nqrkf8rmO3L6pRVracYE1oG_LhrfenzdfNA,61386
75
75
  langroid/language_models/prompt_formatter/__init__.py,sha256=2-5cdE24XoFDhifOLl8yiscohil1ogbP1ECkYdBlBsk,372
76
76
  langroid/language_models/prompt_formatter/base.py,sha256=eDS1sgRNZVnoajwV_ZIha6cba5Dt8xjgzdRbPITwx3Q,1221
77
- langroid/language_models/prompt_formatter/hf_formatter.py,sha256=TFL6ppmeQWnzr6CKQzRZFYY810zE1mr8DZnhw6i85ok,5217
77
+ langroid/language_models/prompt_formatter/hf_formatter.py,sha256=PVJppmjRvD-2DF-XNC6mE05vTZ9wbu37SmXwZBQhad0,5055
78
78
  langroid/language_models/prompt_formatter/llama2_formatter.py,sha256=YdcO88qyBeuMENVIVvVqSYuEpvYSTndUe_jd6hVTko4,2899
79
79
  langroid/language_models/utils.py,sha256=o6Zo2cnnvKrfSgF26knVQ1xkSxEoE7yN85296gNdVOw,4858
80
80
  langroid/mytypes.py,sha256=ptAFxEAtiwmIfUnGisNotTe8wT9LKBf22lOfPgZoQIY,2368
@@ -133,8 +133,8 @@ langroid/vector_store/meilisearch.py,sha256=6frB7GFWeWmeKzRfLZIvzRjllniZ1cYj3Hmh
133
133
  langroid/vector_store/momento.py,sha256=qR-zBF1RKVHQZPZQYW_7g-XpTwr46p8HJuYPCkfJbM4,10534
134
134
  langroid/vector_store/qdrant_cloud.py,sha256=3im4Mip0QXLkR6wiqVsjV1QvhSElfxdFSuDKddBDQ-4,188
135
135
  langroid/vector_store/qdrantdb.py,sha256=v88lqFkepADvlN6lByUj9I4NEKa9X9lWH16uTPPbYrE,17457
136
- pyproject.toml,sha256=e_Hl1GsHZewj8GP8pkES4Uae4go14w3E4mTMTE7hHi0,7087
137
- langroid-0.9.3.dist-info/LICENSE,sha256=EgVbvA6VSYgUlvC3RvPKehSg7MFaxWDsFuzLOsPPfJg,1065
138
- langroid-0.9.3.dist-info/METADATA,sha256=1ztTQxmzQdlj7U4G3kHozii28FTsgzgU7dXL-ptLtm4,54751
139
- langroid-0.9.3.dist-info/WHEEL,sha256=FMvqSimYX_P7y0a7UY-_Mc83r5zkBZsCYPm7Lr0Bsq4,88
140
- langroid-0.9.3.dist-info/RECORD,,
136
+ pyproject.toml,sha256=STQ2CYykc2Cf2J4p_RgIb0nXTw8esZs7k2gqurI6HSY,7087
137
+ langroid-0.9.5.dist-info/LICENSE,sha256=EgVbvA6VSYgUlvC3RvPKehSg7MFaxWDsFuzLOsPPfJg,1065
138
+ langroid-0.9.5.dist-info/METADATA,sha256=OoluP4y6n-wu3Jsx2p9Ah5SRyhMTKQOA3_R5CyNvA7g,54751
139
+ langroid-0.9.5.dist-info/WHEEL,sha256=FMvqSimYX_P7y0a7UY-_Mc83r5zkBZsCYPm7Lr0Bsq4,88
140
+ langroid-0.9.5.dist-info/RECORD,,
pyproject.toml CHANGED
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "langroid"
3
- version = "0.9.3"
3
+ version = "0.9.5"
4
4
  description = "Harness LLMs with Multi-Agent Programming"
5
5
  authors = ["Prasad Chalasani <pchalasani@gmail.com>"]
6
6
  readme = "README.md"