langroid 0.50.3__tar.gz → 0.50.5__tar.gz

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 (136) hide show
  1. {langroid-0.50.3 → langroid-0.50.5}/PKG-INFO +1 -1
  2. {langroid-0.50.3 → langroid-0.50.5}/langroid/agent/chat_agent.py +2 -7
  3. {langroid-0.50.3 → langroid-0.50.5}/langroid/agent/chat_document.py +8 -0
  4. {langroid-0.50.3 → langroid-0.50.5}/langroid/language_models/base.py +14 -0
  5. {langroid-0.50.3 → langroid-0.50.5}/langroid/language_models/openai_gpt.py +0 -24
  6. {langroid-0.50.3 → langroid-0.50.5}/pyproject.toml +1 -1
  7. {langroid-0.50.3 → langroid-0.50.5}/.gitignore +0 -0
  8. {langroid-0.50.3 → langroid-0.50.5}/LICENSE +0 -0
  9. {langroid-0.50.3 → langroid-0.50.5}/README.md +0 -0
  10. {langroid-0.50.3 → langroid-0.50.5}/langroid/__init__.py +0 -0
  11. {langroid-0.50.3 → langroid-0.50.5}/langroid/agent/__init__.py +0 -0
  12. {langroid-0.50.3 → langroid-0.50.5}/langroid/agent/base.py +0 -0
  13. {langroid-0.50.3 → langroid-0.50.5}/langroid/agent/batch.py +0 -0
  14. {langroid-0.50.3 → langroid-0.50.5}/langroid/agent/callbacks/__init__.py +0 -0
  15. {langroid-0.50.3 → langroid-0.50.5}/langroid/agent/callbacks/chainlit.py +0 -0
  16. {langroid-0.50.3 → langroid-0.50.5}/langroid/agent/openai_assistant.py +0 -0
  17. {langroid-0.50.3 → langroid-0.50.5}/langroid/agent/special/__init__.py +0 -0
  18. {langroid-0.50.3 → langroid-0.50.5}/langroid/agent/special/arangodb/__init__.py +0 -0
  19. {langroid-0.50.3 → langroid-0.50.5}/langroid/agent/special/arangodb/arangodb_agent.py +0 -0
  20. {langroid-0.50.3 → langroid-0.50.5}/langroid/agent/special/arangodb/system_messages.py +0 -0
  21. {langroid-0.50.3 → langroid-0.50.5}/langroid/agent/special/arangodb/tools.py +0 -0
  22. {langroid-0.50.3 → langroid-0.50.5}/langroid/agent/special/arangodb/utils.py +0 -0
  23. {langroid-0.50.3 → langroid-0.50.5}/langroid/agent/special/doc_chat_agent.py +0 -0
  24. {langroid-0.50.3 → langroid-0.50.5}/langroid/agent/special/doc_chat_task.py +0 -0
  25. {langroid-0.50.3 → langroid-0.50.5}/langroid/agent/special/lance_doc_chat_agent.py +0 -0
  26. {langroid-0.50.3 → langroid-0.50.5}/langroid/agent/special/lance_rag/__init__.py +0 -0
  27. {langroid-0.50.3 → langroid-0.50.5}/langroid/agent/special/lance_rag/critic_agent.py +0 -0
  28. {langroid-0.50.3 → langroid-0.50.5}/langroid/agent/special/lance_rag/lance_rag_task.py +0 -0
  29. {langroid-0.50.3 → langroid-0.50.5}/langroid/agent/special/lance_rag/query_planner_agent.py +0 -0
  30. {langroid-0.50.3 → langroid-0.50.5}/langroid/agent/special/lance_tools.py +0 -0
  31. {langroid-0.50.3 → langroid-0.50.5}/langroid/agent/special/neo4j/__init__.py +0 -0
  32. {langroid-0.50.3 → langroid-0.50.5}/langroid/agent/special/neo4j/csv_kg_chat.py +0 -0
  33. {langroid-0.50.3 → langroid-0.50.5}/langroid/agent/special/neo4j/neo4j_chat_agent.py +0 -0
  34. {langroid-0.50.3 → langroid-0.50.5}/langroid/agent/special/neo4j/system_messages.py +0 -0
  35. {langroid-0.50.3 → langroid-0.50.5}/langroid/agent/special/neo4j/tools.py +0 -0
  36. {langroid-0.50.3 → langroid-0.50.5}/langroid/agent/special/relevance_extractor_agent.py +0 -0
  37. {langroid-0.50.3 → langroid-0.50.5}/langroid/agent/special/retriever_agent.py +0 -0
  38. {langroid-0.50.3 → langroid-0.50.5}/langroid/agent/special/sql/__init__.py +0 -0
  39. {langroid-0.50.3 → langroid-0.50.5}/langroid/agent/special/sql/sql_chat_agent.py +0 -0
  40. {langroid-0.50.3 → langroid-0.50.5}/langroid/agent/special/sql/utils/__init__.py +0 -0
  41. {langroid-0.50.3 → langroid-0.50.5}/langroid/agent/special/sql/utils/description_extractors.py +0 -0
  42. {langroid-0.50.3 → langroid-0.50.5}/langroid/agent/special/sql/utils/populate_metadata.py +0 -0
  43. {langroid-0.50.3 → langroid-0.50.5}/langroid/agent/special/sql/utils/system_message.py +0 -0
  44. {langroid-0.50.3 → langroid-0.50.5}/langroid/agent/special/sql/utils/tools.py +0 -0
  45. {langroid-0.50.3 → langroid-0.50.5}/langroid/agent/special/table_chat_agent.py +0 -0
  46. {langroid-0.50.3 → langroid-0.50.5}/langroid/agent/task.py +0 -0
  47. {langroid-0.50.3 → langroid-0.50.5}/langroid/agent/tool_message.py +0 -0
  48. {langroid-0.50.3 → langroid-0.50.5}/langroid/agent/tools/__init__.py +0 -0
  49. {langroid-0.50.3 → langroid-0.50.5}/langroid/agent/tools/duckduckgo_search_tool.py +0 -0
  50. {langroid-0.50.3 → langroid-0.50.5}/langroid/agent/tools/exa_search_tool.py +0 -0
  51. {langroid-0.50.3 → langroid-0.50.5}/langroid/agent/tools/file_tools.py +0 -0
  52. {langroid-0.50.3 → langroid-0.50.5}/langroid/agent/tools/google_search_tool.py +0 -0
  53. {langroid-0.50.3 → langroid-0.50.5}/langroid/agent/tools/metaphor_search_tool.py +0 -0
  54. {langroid-0.50.3 → langroid-0.50.5}/langroid/agent/tools/orchestration.py +0 -0
  55. {langroid-0.50.3 → langroid-0.50.5}/langroid/agent/tools/recipient_tool.py +0 -0
  56. {langroid-0.50.3 → langroid-0.50.5}/langroid/agent/tools/retrieval_tool.py +0 -0
  57. {langroid-0.50.3 → langroid-0.50.5}/langroid/agent/tools/rewind_tool.py +0 -0
  58. {langroid-0.50.3 → langroid-0.50.5}/langroid/agent/tools/segment_extract_tool.py +0 -0
  59. {langroid-0.50.3 → langroid-0.50.5}/langroid/agent/tools/tavily_search_tool.py +0 -0
  60. {langroid-0.50.3 → langroid-0.50.5}/langroid/agent/xml_tool_message.py +0 -0
  61. {langroid-0.50.3 → langroid-0.50.5}/langroid/cachedb/__init__.py +0 -0
  62. {langroid-0.50.3 → langroid-0.50.5}/langroid/cachedb/base.py +0 -0
  63. {langroid-0.50.3 → langroid-0.50.5}/langroid/cachedb/momento_cachedb.py +0 -0
  64. {langroid-0.50.3 → langroid-0.50.5}/langroid/cachedb/redis_cachedb.py +0 -0
  65. {langroid-0.50.3 → langroid-0.50.5}/langroid/embedding_models/__init__.py +0 -0
  66. {langroid-0.50.3 → langroid-0.50.5}/langroid/embedding_models/base.py +0 -0
  67. {langroid-0.50.3 → langroid-0.50.5}/langroid/embedding_models/models.py +0 -0
  68. {langroid-0.50.3 → langroid-0.50.5}/langroid/embedding_models/protoc/__init__.py +0 -0
  69. {langroid-0.50.3 → langroid-0.50.5}/langroid/embedding_models/protoc/embeddings.proto +0 -0
  70. {langroid-0.50.3 → langroid-0.50.5}/langroid/embedding_models/protoc/embeddings_pb2.py +0 -0
  71. {langroid-0.50.3 → langroid-0.50.5}/langroid/embedding_models/protoc/embeddings_pb2.pyi +0 -0
  72. {langroid-0.50.3 → langroid-0.50.5}/langroid/embedding_models/protoc/embeddings_pb2_grpc.py +0 -0
  73. {langroid-0.50.3 → langroid-0.50.5}/langroid/embedding_models/remote_embeds.py +0 -0
  74. {langroid-0.50.3 → langroid-0.50.5}/langroid/exceptions.py +0 -0
  75. {langroid-0.50.3 → langroid-0.50.5}/langroid/language_models/__init__.py +0 -0
  76. {langroid-0.50.3 → langroid-0.50.5}/langroid/language_models/azure_openai.py +0 -0
  77. {langroid-0.50.3 → langroid-0.50.5}/langroid/language_models/config.py +0 -0
  78. {langroid-0.50.3 → langroid-0.50.5}/langroid/language_models/mock_lm.py +0 -0
  79. {langroid-0.50.3 → langroid-0.50.5}/langroid/language_models/model_info.py +0 -0
  80. {langroid-0.50.3 → langroid-0.50.5}/langroid/language_models/prompt_formatter/__init__.py +0 -0
  81. {langroid-0.50.3 → langroid-0.50.5}/langroid/language_models/prompt_formatter/base.py +0 -0
  82. {langroid-0.50.3 → langroid-0.50.5}/langroid/language_models/prompt_formatter/hf_formatter.py +0 -0
  83. {langroid-0.50.3 → langroid-0.50.5}/langroid/language_models/prompt_formatter/llama2_formatter.py +0 -0
  84. {langroid-0.50.3 → langroid-0.50.5}/langroid/language_models/utils.py +0 -0
  85. {langroid-0.50.3 → langroid-0.50.5}/langroid/mytypes.py +0 -0
  86. {langroid-0.50.3 → langroid-0.50.5}/langroid/parsing/__init__.py +0 -0
  87. {langroid-0.50.3 → langroid-0.50.5}/langroid/parsing/agent_chats.py +0 -0
  88. {langroid-0.50.3 → langroid-0.50.5}/langroid/parsing/code_parser.py +0 -0
  89. {langroid-0.50.3 → langroid-0.50.5}/langroid/parsing/document_parser.py +0 -0
  90. {langroid-0.50.3 → langroid-0.50.5}/langroid/parsing/md_parser.py +0 -0
  91. {langroid-0.50.3 → langroid-0.50.5}/langroid/parsing/para_sentence_split.py +0 -0
  92. {langroid-0.50.3 → langroid-0.50.5}/langroid/parsing/parse_json.py +0 -0
  93. {langroid-0.50.3 → langroid-0.50.5}/langroid/parsing/parser.py +0 -0
  94. {langroid-0.50.3 → langroid-0.50.5}/langroid/parsing/pdf_utils.py +0 -0
  95. {langroid-0.50.3 → langroid-0.50.5}/langroid/parsing/repo_loader.py +0 -0
  96. {langroid-0.50.3 → langroid-0.50.5}/langroid/parsing/routing.py +0 -0
  97. {langroid-0.50.3 → langroid-0.50.5}/langroid/parsing/search.py +0 -0
  98. {langroid-0.50.3 → langroid-0.50.5}/langroid/parsing/spider.py +0 -0
  99. {langroid-0.50.3 → langroid-0.50.5}/langroid/parsing/table_loader.py +0 -0
  100. {langroid-0.50.3 → langroid-0.50.5}/langroid/parsing/url_loader.py +0 -0
  101. {langroid-0.50.3 → langroid-0.50.5}/langroid/parsing/urls.py +0 -0
  102. {langroid-0.50.3 → langroid-0.50.5}/langroid/parsing/utils.py +0 -0
  103. {langroid-0.50.3 → langroid-0.50.5}/langroid/parsing/web_search.py +0 -0
  104. {langroid-0.50.3 → langroid-0.50.5}/langroid/prompts/__init__.py +0 -0
  105. {langroid-0.50.3 → langroid-0.50.5}/langroid/prompts/dialog.py +0 -0
  106. {langroid-0.50.3 → langroid-0.50.5}/langroid/prompts/prompts_config.py +0 -0
  107. {langroid-0.50.3 → langroid-0.50.5}/langroid/prompts/templates.py +0 -0
  108. {langroid-0.50.3 → langroid-0.50.5}/langroid/py.typed +0 -0
  109. {langroid-0.50.3 → langroid-0.50.5}/langroid/pydantic_v1/__init__.py +0 -0
  110. {langroid-0.50.3 → langroid-0.50.5}/langroid/pydantic_v1/main.py +0 -0
  111. {langroid-0.50.3 → langroid-0.50.5}/langroid/utils/__init__.py +0 -0
  112. {langroid-0.50.3 → langroid-0.50.5}/langroid/utils/algorithms/__init__.py +0 -0
  113. {langroid-0.50.3 → langroid-0.50.5}/langroid/utils/algorithms/graph.py +0 -0
  114. {langroid-0.50.3 → langroid-0.50.5}/langroid/utils/configuration.py +0 -0
  115. {langroid-0.50.3 → langroid-0.50.5}/langroid/utils/constants.py +0 -0
  116. {langroid-0.50.3 → langroid-0.50.5}/langroid/utils/git_utils.py +0 -0
  117. {langroid-0.50.3 → langroid-0.50.5}/langroid/utils/globals.py +0 -0
  118. {langroid-0.50.3 → langroid-0.50.5}/langroid/utils/logging.py +0 -0
  119. {langroid-0.50.3 → langroid-0.50.5}/langroid/utils/object_registry.py +0 -0
  120. {langroid-0.50.3 → langroid-0.50.5}/langroid/utils/output/__init__.py +0 -0
  121. {langroid-0.50.3 → langroid-0.50.5}/langroid/utils/output/citations.py +0 -0
  122. {langroid-0.50.3 → langroid-0.50.5}/langroid/utils/output/printing.py +0 -0
  123. {langroid-0.50.3 → langroid-0.50.5}/langroid/utils/output/status.py +0 -0
  124. {langroid-0.50.3 → langroid-0.50.5}/langroid/utils/pandas_utils.py +0 -0
  125. {langroid-0.50.3 → langroid-0.50.5}/langroid/utils/pydantic_utils.py +0 -0
  126. {langroid-0.50.3 → langroid-0.50.5}/langroid/utils/system.py +0 -0
  127. {langroid-0.50.3 → langroid-0.50.5}/langroid/utils/types.py +0 -0
  128. {langroid-0.50.3 → langroid-0.50.5}/langroid/vector_store/__init__.py +0 -0
  129. {langroid-0.50.3 → langroid-0.50.5}/langroid/vector_store/base.py +0 -0
  130. {langroid-0.50.3 → langroid-0.50.5}/langroid/vector_store/chromadb.py +0 -0
  131. {langroid-0.50.3 → langroid-0.50.5}/langroid/vector_store/lancedb.py +0 -0
  132. {langroid-0.50.3 → langroid-0.50.5}/langroid/vector_store/meilisearch.py +0 -0
  133. {langroid-0.50.3 → langroid-0.50.5}/langroid/vector_store/pineconedb.py +0 -0
  134. {langroid-0.50.3 → langroid-0.50.5}/langroid/vector_store/postgres.py +0 -0
  135. {langroid-0.50.3 → langroid-0.50.5}/langroid/vector_store/qdrantdb.py +0 -0
  136. {langroid-0.50.3 → langroid-0.50.5}/langroid/vector_store/weaviatedb.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: langroid
3
- Version: 0.50.3
3
+ Version: 0.50.5
4
4
  Summary: Harness LLMs with Multi-Agent Programming
5
5
  Author-email: Prasad Chalasani <pchalasani@gmail.com>
6
6
  License: MIT
@@ -94,7 +94,7 @@ class ChatAgentConfig(AgentConfig):
94
94
  handle_llm_no_tool: Any = None
95
95
  use_tools: bool = False
96
96
  use_functions_api: bool = True
97
- use_tools_api: bool = False
97
+ use_tools_api: bool = True
98
98
  strict_recovery: bool = True
99
99
  enable_orchestration_tool_handling: bool = True
100
100
  output_format: Optional[type] = None
@@ -308,12 +308,7 @@ class ChatAgent(Agent):
308
308
 
309
309
  def _fn_call_available(self) -> bool:
310
310
  """Does this agent's LLM support function calling?"""
311
- return (
312
- self.llm is not None
313
- and isinstance(self.llm, OpenAIGPT)
314
- and self.llm.is_openai_chat_model()
315
- and self.llm.supports_functions_or_tools()
316
- )
311
+ return self.llm is not None and self.llm.supports_functions_or_tools()
317
312
 
318
313
  def _strict_tools_available(self) -> bool:
319
314
  """Does this agent's LLM support strict tools?"""
@@ -215,9 +215,17 @@ class ChatDocument(Document):
215
215
  """
216
216
  tool_type = "" # FUNC or TOOL
217
217
  tool = "" # tool name or function name
218
+ oai_tools = (
219
+ []
220
+ if self.oai_tool_calls is None
221
+ else [t for t in self.oai_tool_calls if t.function is not None]
222
+ )
218
223
  if self.function_call is not None:
219
224
  tool_type = "FUNC"
220
225
  tool = self.function_call.name
226
+ elif len(oai_tools) > 0:
227
+ tool_type = "OAI_TOOL"
228
+ tool = ",".join(t.function.name for t in oai_tools) # type: ignore
221
229
  else:
222
230
  try:
223
231
  json_tools = self.get_tool_names()
@@ -626,6 +626,20 @@ class LanguageModel(ABC):
626
626
  )
627
627
  return get_model_info(orig_model, model)
628
628
 
629
+ def supports_functions_or_tools(self) -> bool:
630
+ """
631
+ Does this Model's API support "native" tool-calling, i.e.
632
+ can we call the API with arguments that contain a list of available tools,
633
+ and their schemas?
634
+ Note that, given the plethora of LLM provider APIs this determination is
635
+ imperfect at best, and leans towards returning True.
636
+ When the API calls fails with an error indicating tools are not supported,
637
+ then users are encouraged to use the Langroid-based prompt-based
638
+ ToolMessage mechanism, which works with ANY LLM. To enable this,
639
+ in your ChatAgentConfig, set `use_functions_api=False`, and `use_tools=True`.
640
+ """
641
+ return self.info().has_tools
642
+
629
643
  def chat_context_length(self) -> int:
630
644
  return self.config.chat_context_length or DEFAULT_CONTEXT_LENGTH
631
645
 
@@ -682,9 +682,6 @@ class OpenAIGPT(LanguageModel):
682
682
  openai_chat_models = [e.value for e in OpenAIChatModel]
683
683
  return self.config.chat_model in openai_chat_models
684
684
 
685
- def supports_functions_or_tools(self) -> bool:
686
- return self.is_openai_chat_model() and self.info().has_tools
687
-
688
685
  def is_openai_completion_model(self) -> bool:
689
686
  openai_completion_models = [e.value for e in OpenAICompletionModel]
690
687
  return self.config.completion_model in openai_completion_models
@@ -1644,17 +1641,6 @@ class OpenAIGPT(LanguageModel):
1644
1641
  ) -> LLMResponse:
1645
1642
  self.run_on_first_use()
1646
1643
 
1647
- if [functions, tools] != [None, None] and not self.is_openai_chat_model():
1648
- raise ValueError(
1649
- f"""
1650
- `functions` and `tools` can only be specified for OpenAI chat LLMs,
1651
- or LLMs served via an OpenAI-compatible API.
1652
- {self.config.chat_model} does not support function-calling or tools.
1653
- Instead, please use Langroid's ToolMessages, which are equivalent.
1654
- In the ChatAgentConfig, set `use_functions_api=False`
1655
- and `use_tools=True`, this will enable ToolMessages.
1656
- """
1657
- )
1658
1644
  if self.config.use_completion_for_chat and not self.is_openai_chat_model():
1659
1645
  # only makes sense for non-OpenAI models
1660
1646
  if self.config.formatter is None or self.config.hf_formatter is None:
@@ -1699,16 +1685,6 @@ class OpenAIGPT(LanguageModel):
1699
1685
  ) -> LLMResponse:
1700
1686
  self.run_on_first_use()
1701
1687
 
1702
- if [functions, tools] != [None, None] and not self.is_openai_chat_model():
1703
- raise ValueError(
1704
- f"""
1705
- `functions` and `tools` can only be specified for OpenAI chat models;
1706
- {self.config.chat_model} does not support function-calling or tools.
1707
- Instead, please use Langroid's ToolMessages, which are equivalent.
1708
- In the ChatAgentConfig, set `use_functions_api=False`
1709
- and `use_tools=True`, this will enable ToolMessages.
1710
- """
1711
- )
1712
1688
  # turn off streaming for async calls
1713
1689
  if (
1714
1690
  self.config.use_completion_for_chat
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "langroid"
3
- version = "0.50.3"
3
+ version = "0.50.5"
4
4
  authors = [
5
5
  {name = "Prasad Chalasani", email = "pchalasani@gmail.com"},
6
6
  ]
File without changes
File without changes
File without changes
File without changes
File without changes