langroid 0.22.0__py3-none-any.whl → 0.22.2__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
@@ -703,7 +703,7 @@ class Agent(ABC):
703
703
  if self.llm is None:
704
704
  return False
705
705
 
706
- if message is not None and len(self.get_tool_messages(message)) > 0:
706
+ if message is not None and len(self.try_get_tool_messages(message)) > 0:
707
707
  # if there is a valid "tool" message (either JSON or via `function_call`)
708
708
  # then LLM cannot respond to it
709
709
  return False
@@ -717,7 +717,7 @@ class Agent(ABC):
717
717
  Args:
718
718
  message (str|ChatDocument): message or ChatDocument object to respond to.
719
719
  """
720
- tools = self.get_tool_messages(message)
720
+ tools = self.try_get_tool_messages(message)
721
721
  if len(tools) == 0 and self.config.respond_tools_only:
722
722
  return False
723
723
  if message is not None and self.has_only_unhandled_tools(message):
@@ -915,11 +915,21 @@ class Agent(ABC):
915
915
  """
916
916
  if msg is None:
917
917
  return False
918
- tools = self.get_tool_messages(msg, all_tools=True)
918
+ tools = self.try_get_tool_messages(msg, all_tools=True)
919
919
  if len(tools) == 0:
920
920
  return False
921
921
  return all(not self._tool_recipient_match(t) for t in tools)
922
922
 
923
+ def try_get_tool_messages(
924
+ self,
925
+ msg: str | ChatDocument | None,
926
+ all_tools: bool = False,
927
+ ) -> List[ToolMessage]:
928
+ try:
929
+ return self.get_tool_messages(msg, all_tools)
930
+ except ValidationError:
931
+ return []
932
+
923
933
  def get_tool_messages(
924
934
  self,
925
935
  msg: str | ChatDocument | None,
@@ -1417,7 +1427,7 @@ class Agent(ABC):
1417
1427
  if content_any is not None and isinstance(content_any, output_type):
1418
1428
  return cast(T, content_any)
1419
1429
 
1420
- tools = self.get_tool_messages(msg, all_tools=True)
1430
+ tools = self.try_get_tool_messages(msg, all_tools=True)
1421
1431
 
1422
1432
  if get_origin(output_type) is list:
1423
1433
  list_element_type = get_args(output_type)[0]
langroid/agent/task.py CHANGED
@@ -1314,7 +1314,7 @@ class Task:
1314
1314
  actual_turns = e.turns if e.turns > 0 else turns
1315
1315
  e.agent.callbacks.set_parent_agent(self.agent)
1316
1316
  # e.callbacks.set_parent_agent(self.agent)
1317
- pending_tools = self.agent.get_tool_messages(self.pending_message)
1317
+ pending_tools = self.agent.try_get_tool_messages(self.pending_message)
1318
1318
  # TODO disable this
1319
1319
  if (
1320
1320
  len(pending_tools) > 1
@@ -1332,7 +1332,7 @@ class Task:
1332
1332
  )
1333
1333
  # update result.tool_messages if any
1334
1334
  if isinstance(result, ChatDocument):
1335
- self.agent.get_tool_messages(result)
1335
+ self.agent.try_get_tool_messages(result)
1336
1336
  if result is not None:
1337
1337
  content, id2result, oai_tool_id = self.agent.process_tool_results(
1338
1338
  result.content,
@@ -1363,7 +1363,7 @@ class Task:
1363
1363
  result = response_fn(self.pending_message)
1364
1364
  # update result.tool_messages if any
1365
1365
  if isinstance(result, ChatDocument):
1366
- self.agent.get_tool_messages(result)
1366
+ self.agent.try_get_tool_messages(result)
1367
1367
 
1368
1368
  result_chat_doc = self.agent.to_ChatDocument(
1369
1369
  result,
@@ -1446,7 +1446,7 @@ class Task:
1446
1446
  if isinstance(e, Task):
1447
1447
  actual_turns = e.turns if e.turns > 0 else turns
1448
1448
  e.agent.callbacks.set_parent_agent(self.agent)
1449
- pending_tools = self.agent.get_tool_messages(self.pending_message)
1449
+ pending_tools = self.agent.try_get_tool_messages(self.pending_message)
1450
1450
  # TODO disable this
1451
1451
  if (
1452
1452
  len(pending_tools) > 1
@@ -67,6 +67,10 @@ class ToolMessage(ABC, BaseModel):
67
67
  # since we don't require the LLM to specify them
68
68
  schema_extra = {"exclude": {"purpose", "id"}}
69
69
 
70
+ @classmethod
71
+ def name(cls) -> str:
72
+ return str(cls.default_value("request")) # redundant str() to appease mypy
73
+
70
74
  @classmethod
71
75
  def instructions(cls) -> str:
72
76
  return """
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: langroid
3
- Version: 0.22.0
3
+ Version: 0.22.2
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=FEAIVwFKlmkOSV3RfRR0-v5UofJBfsBUUSsSEE2ioUI,66824
3
+ langroid/agent/base.py,sha256=IatVtrdstxMcreeVSndNoChFKxrJIEkYRpNruBxRQ7M,67112
4
4
  langroid/agent/batch.py,sha256=QZdlt1563hx4l3AXrCaGovE-PNG93M3DsvQAbDzdiS8,13705
5
5
  langroid/agent/callbacks/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
6
6
  langroid/agent/callbacks/chainlit.py,sha256=JJXI3UGTyTDg2FFath4rqY1GyUo_0pbVBt8CZpvdtn4,23289
@@ -38,8 +38,8 @@ langroid/agent/special/sql/utils/system_message.py,sha256=qKLHkvQWRQodTtPLPxr1GS
38
38
  langroid/agent/special/sql/utils/tools.py,sha256=vFYysk6Vi7HJjII8B4RitA3pt_z3gkSglDNdhNVMiFc,1332
39
39
  langroid/agent/special/table_chat_agent.py,sha256=d9v2wsblaRx7oMnKhLV7uO_ujvk9gh59pSGvBXyeyNc,9659
40
40
  langroid/agent/structured_message.py,sha256=y7pud1EgRNeTFZlJmBkLmwME3yQJ_IYik-Xds9kdZbY,282
41
- langroid/agent/task.py,sha256=f7clh6p6Md0G4YGHqbFeeT88U4XoP0i3eatekV21hHE,86643
42
- langroid/agent/tool_message.py,sha256=qQebCWogYTtptznIF1mLERwspWjmVxDWFJeERBO-YsI,11207
41
+ langroid/agent/task.py,sha256=0ewueaJBXvOvlSAHipL21xqgcpiGySDHr-A_Ov0WyQ8,86659
42
+ langroid/agent/tool_message.py,sha256=bjBSk1N1IgqqYGmOy6O97zPFMSaUdEK7r8ZjOaJwoeE,11335
43
43
  langroid/agent/tools/__init__.py,sha256=IMgCte-_ZIvCkozGQmvMqxIw7_nKLKzD78ccJL1bnQU,804
44
44
  langroid/agent/tools/duckduckgo_search_tool.py,sha256=NhsCaGZkdv28nja7yveAhSK_w6l_Ftym8agbrdzqgfo,1935
45
45
  langroid/agent/tools/file_tools.py,sha256=GjPB5YDILucYapElnvvoYpGJuZQ25ecLs2REv7edPEo,7292
@@ -142,8 +142,8 @@ langroid/vector_store/meilisearch.py,sha256=6frB7GFWeWmeKzRfLZIvzRjllniZ1cYj3Hmh
142
142
  langroid/vector_store/momento.py,sha256=qR-zBF1RKVHQZPZQYW_7g-XpTwr46p8HJuYPCkfJbM4,10534
143
143
  langroid/vector_store/qdrant_cloud.py,sha256=3im4Mip0QXLkR6wiqVsjV1QvhSElfxdFSuDKddBDQ-4,188
144
144
  langroid/vector_store/qdrantdb.py,sha256=v88lqFkepADvlN6lByUj9I4NEKa9X9lWH16uTPPbYrE,17457
145
- pyproject.toml,sha256=uLe37eP_bS9-a9g2l1uNFzDJgpCRqJvbmmwmLQlD3AA,7488
146
- langroid-0.22.0.dist-info/LICENSE,sha256=EgVbvA6VSYgUlvC3RvPKehSg7MFaxWDsFuzLOsPPfJg,1065
147
- langroid-0.22.0.dist-info/METADATA,sha256=M15Qy48jMSppZvJRZLNNVLMZpQR9gNoDeFjoLBCKr6M,57107
148
- langroid-0.22.0.dist-info/WHEEL,sha256=Nq82e9rUAnEjt98J6MlVmMCZb-t9cYE2Ir1kpBmnWfs,88
149
- langroid-0.22.0.dist-info/RECORD,,
145
+ pyproject.toml,sha256=SqUjrPzZZgrSr-AojnyP3Du81tNyxCEsP_N1m-smqiA,7488
146
+ langroid-0.22.2.dist-info/LICENSE,sha256=EgVbvA6VSYgUlvC3RvPKehSg7MFaxWDsFuzLOsPPfJg,1065
147
+ langroid-0.22.2.dist-info/METADATA,sha256=xoC9bs2-ntnP7OWrkvrGRmFWt2opCRmNCaeCy2hF7Tc,57107
148
+ langroid-0.22.2.dist-info/WHEEL,sha256=Nq82e9rUAnEjt98J6MlVmMCZb-t9cYE2Ir1kpBmnWfs,88
149
+ langroid-0.22.2.dist-info/RECORD,,
pyproject.toml CHANGED
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "langroid"
3
- version = "0.22.0"
3
+ version = "0.22.2"
4
4
  description = "Harness LLMs with Multi-Agent Programming"
5
5
  authors = ["Prasad Chalasani <pchalasani@gmail.com>"]
6
6
  readme = "README.md"