langroid 0.41.0__tar.gz → 0.41.2__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 (135) hide show
  1. {langroid-0.41.0 → langroid-0.41.2}/PKG-INFO +3 -3
  2. {langroid-0.41.0 → langroid-0.41.2}/langroid/language_models/model_info.py +10 -3
  3. {langroid-0.41.0 → langroid-0.41.2}/langroid/language_models/openai_gpt.py +32 -7
  4. {langroid-0.41.0 → langroid-0.41.2}/langroid/parsing/url_loader.py +5 -1
  5. {langroid-0.41.0 → langroid-0.41.2}/pyproject.toml +3 -3
  6. {langroid-0.41.0 → langroid-0.41.2}/.gitignore +0 -0
  7. {langroid-0.41.0 → langroid-0.41.2}/LICENSE +0 -0
  8. {langroid-0.41.0 → langroid-0.41.2}/README.md +0 -0
  9. {langroid-0.41.0 → langroid-0.41.2}/langroid/__init__.py +0 -0
  10. {langroid-0.41.0 → langroid-0.41.2}/langroid/agent/__init__.py +0 -0
  11. {langroid-0.41.0 → langroid-0.41.2}/langroid/agent/base.py +0 -0
  12. {langroid-0.41.0 → langroid-0.41.2}/langroid/agent/batch.py +0 -0
  13. {langroid-0.41.0 → langroid-0.41.2}/langroid/agent/callbacks/__init__.py +0 -0
  14. {langroid-0.41.0 → langroid-0.41.2}/langroid/agent/callbacks/chainlit.py +0 -0
  15. {langroid-0.41.0 → langroid-0.41.2}/langroid/agent/chat_agent.py +0 -0
  16. {langroid-0.41.0 → langroid-0.41.2}/langroid/agent/chat_document.py +0 -0
  17. {langroid-0.41.0 → langroid-0.41.2}/langroid/agent/openai_assistant.py +0 -0
  18. {langroid-0.41.0 → langroid-0.41.2}/langroid/agent/special/__init__.py +0 -0
  19. {langroid-0.41.0 → langroid-0.41.2}/langroid/agent/special/arangodb/__init__.py +0 -0
  20. {langroid-0.41.0 → langroid-0.41.2}/langroid/agent/special/arangodb/arangodb_agent.py +0 -0
  21. {langroid-0.41.0 → langroid-0.41.2}/langroid/agent/special/arangodb/system_messages.py +0 -0
  22. {langroid-0.41.0 → langroid-0.41.2}/langroid/agent/special/arangodb/tools.py +0 -0
  23. {langroid-0.41.0 → langroid-0.41.2}/langroid/agent/special/arangodb/utils.py +0 -0
  24. {langroid-0.41.0 → langroid-0.41.2}/langroid/agent/special/doc_chat_agent.py +0 -0
  25. {langroid-0.41.0 → langroid-0.41.2}/langroid/agent/special/lance_doc_chat_agent.py +0 -0
  26. {langroid-0.41.0 → langroid-0.41.2}/langroid/agent/special/lance_rag/__init__.py +0 -0
  27. {langroid-0.41.0 → langroid-0.41.2}/langroid/agent/special/lance_rag/critic_agent.py +0 -0
  28. {langroid-0.41.0 → langroid-0.41.2}/langroid/agent/special/lance_rag/lance_rag_task.py +0 -0
  29. {langroid-0.41.0 → langroid-0.41.2}/langroid/agent/special/lance_rag/query_planner_agent.py +0 -0
  30. {langroid-0.41.0 → langroid-0.41.2}/langroid/agent/special/lance_tools.py +0 -0
  31. {langroid-0.41.0 → langroid-0.41.2}/langroid/agent/special/neo4j/__init__.py +0 -0
  32. {langroid-0.41.0 → langroid-0.41.2}/langroid/agent/special/neo4j/csv_kg_chat.py +0 -0
  33. {langroid-0.41.0 → langroid-0.41.2}/langroid/agent/special/neo4j/neo4j_chat_agent.py +0 -0
  34. {langroid-0.41.0 → langroid-0.41.2}/langroid/agent/special/neo4j/system_messages.py +0 -0
  35. {langroid-0.41.0 → langroid-0.41.2}/langroid/agent/special/neo4j/tools.py +0 -0
  36. {langroid-0.41.0 → langroid-0.41.2}/langroid/agent/special/relevance_extractor_agent.py +0 -0
  37. {langroid-0.41.0 → langroid-0.41.2}/langroid/agent/special/retriever_agent.py +0 -0
  38. {langroid-0.41.0 → langroid-0.41.2}/langroid/agent/special/sql/__init__.py +0 -0
  39. {langroid-0.41.0 → langroid-0.41.2}/langroid/agent/special/sql/sql_chat_agent.py +0 -0
  40. {langroid-0.41.0 → langroid-0.41.2}/langroid/agent/special/sql/utils/__init__.py +0 -0
  41. {langroid-0.41.0 → langroid-0.41.2}/langroid/agent/special/sql/utils/description_extractors.py +0 -0
  42. {langroid-0.41.0 → langroid-0.41.2}/langroid/agent/special/sql/utils/populate_metadata.py +0 -0
  43. {langroid-0.41.0 → langroid-0.41.2}/langroid/agent/special/sql/utils/system_message.py +0 -0
  44. {langroid-0.41.0 → langroid-0.41.2}/langroid/agent/special/sql/utils/tools.py +0 -0
  45. {langroid-0.41.0 → langroid-0.41.2}/langroid/agent/special/table_chat_agent.py +0 -0
  46. {langroid-0.41.0 → langroid-0.41.2}/langroid/agent/task.py +0 -0
  47. {langroid-0.41.0 → langroid-0.41.2}/langroid/agent/tool_message.py +0 -0
  48. {langroid-0.41.0 → langroid-0.41.2}/langroid/agent/tools/__init__.py +0 -0
  49. {langroid-0.41.0 → langroid-0.41.2}/langroid/agent/tools/duckduckgo_search_tool.py +0 -0
  50. {langroid-0.41.0 → langroid-0.41.2}/langroid/agent/tools/exa_search_tool.py +0 -0
  51. {langroid-0.41.0 → langroid-0.41.2}/langroid/agent/tools/file_tools.py +0 -0
  52. {langroid-0.41.0 → langroid-0.41.2}/langroid/agent/tools/google_search_tool.py +0 -0
  53. {langroid-0.41.0 → langroid-0.41.2}/langroid/agent/tools/metaphor_search_tool.py +0 -0
  54. {langroid-0.41.0 → langroid-0.41.2}/langroid/agent/tools/orchestration.py +0 -0
  55. {langroid-0.41.0 → langroid-0.41.2}/langroid/agent/tools/recipient_tool.py +0 -0
  56. {langroid-0.41.0 → langroid-0.41.2}/langroid/agent/tools/retrieval_tool.py +0 -0
  57. {langroid-0.41.0 → langroid-0.41.2}/langroid/agent/tools/rewind_tool.py +0 -0
  58. {langroid-0.41.0 → langroid-0.41.2}/langroid/agent/tools/segment_extract_tool.py +0 -0
  59. {langroid-0.41.0 → langroid-0.41.2}/langroid/agent/tools/tavily_search_tool.py +0 -0
  60. {langroid-0.41.0 → langroid-0.41.2}/langroid/agent/xml_tool_message.py +0 -0
  61. {langroid-0.41.0 → langroid-0.41.2}/langroid/cachedb/__init__.py +0 -0
  62. {langroid-0.41.0 → langroid-0.41.2}/langroid/cachedb/base.py +0 -0
  63. {langroid-0.41.0 → langroid-0.41.2}/langroid/cachedb/momento_cachedb.py +0 -0
  64. {langroid-0.41.0 → langroid-0.41.2}/langroid/cachedb/redis_cachedb.py +0 -0
  65. {langroid-0.41.0 → langroid-0.41.2}/langroid/embedding_models/__init__.py +0 -0
  66. {langroid-0.41.0 → langroid-0.41.2}/langroid/embedding_models/base.py +0 -0
  67. {langroid-0.41.0 → langroid-0.41.2}/langroid/embedding_models/models.py +0 -0
  68. {langroid-0.41.0 → langroid-0.41.2}/langroid/embedding_models/protoc/__init__.py +0 -0
  69. {langroid-0.41.0 → langroid-0.41.2}/langroid/embedding_models/protoc/embeddings.proto +0 -0
  70. {langroid-0.41.0 → langroid-0.41.2}/langroid/embedding_models/protoc/embeddings_pb2.py +0 -0
  71. {langroid-0.41.0 → langroid-0.41.2}/langroid/embedding_models/protoc/embeddings_pb2.pyi +0 -0
  72. {langroid-0.41.0 → langroid-0.41.2}/langroid/embedding_models/protoc/embeddings_pb2_grpc.py +0 -0
  73. {langroid-0.41.0 → langroid-0.41.2}/langroid/embedding_models/remote_embeds.py +0 -0
  74. {langroid-0.41.0 → langroid-0.41.2}/langroid/exceptions.py +0 -0
  75. {langroid-0.41.0 → langroid-0.41.2}/langroid/language_models/__init__.py +0 -0
  76. {langroid-0.41.0 → langroid-0.41.2}/langroid/language_models/azure_openai.py +0 -0
  77. {langroid-0.41.0 → langroid-0.41.2}/langroid/language_models/base.py +0 -0
  78. {langroid-0.41.0 → langroid-0.41.2}/langroid/language_models/config.py +0 -0
  79. {langroid-0.41.0 → langroid-0.41.2}/langroid/language_models/mock_lm.py +0 -0
  80. {langroid-0.41.0 → langroid-0.41.2}/langroid/language_models/prompt_formatter/__init__.py +0 -0
  81. {langroid-0.41.0 → langroid-0.41.2}/langroid/language_models/prompt_formatter/base.py +0 -0
  82. {langroid-0.41.0 → langroid-0.41.2}/langroid/language_models/prompt_formatter/hf_formatter.py +0 -0
  83. {langroid-0.41.0 → langroid-0.41.2}/langroid/language_models/prompt_formatter/llama2_formatter.py +0 -0
  84. {langroid-0.41.0 → langroid-0.41.2}/langroid/language_models/utils.py +0 -0
  85. {langroid-0.41.0 → langroid-0.41.2}/langroid/mytypes.py +0 -0
  86. {langroid-0.41.0 → langroid-0.41.2}/langroid/parsing/__init__.py +0 -0
  87. {langroid-0.41.0 → langroid-0.41.2}/langroid/parsing/agent_chats.py +0 -0
  88. {langroid-0.41.0 → langroid-0.41.2}/langroid/parsing/code_parser.py +0 -0
  89. {langroid-0.41.0 → langroid-0.41.2}/langroid/parsing/document_parser.py +0 -0
  90. {langroid-0.41.0 → langroid-0.41.2}/langroid/parsing/para_sentence_split.py +0 -0
  91. {langroid-0.41.0 → langroid-0.41.2}/langroid/parsing/parse_json.py +0 -0
  92. {langroid-0.41.0 → langroid-0.41.2}/langroid/parsing/parser.py +0 -0
  93. {langroid-0.41.0 → langroid-0.41.2}/langroid/parsing/pdf_utils.py +0 -0
  94. {langroid-0.41.0 → langroid-0.41.2}/langroid/parsing/repo_loader.py +0 -0
  95. {langroid-0.41.0 → langroid-0.41.2}/langroid/parsing/routing.py +0 -0
  96. {langroid-0.41.0 → langroid-0.41.2}/langroid/parsing/search.py +0 -0
  97. {langroid-0.41.0 → langroid-0.41.2}/langroid/parsing/spider.py +0 -0
  98. {langroid-0.41.0 → langroid-0.41.2}/langroid/parsing/table_loader.py +0 -0
  99. {langroid-0.41.0 → langroid-0.41.2}/langroid/parsing/urls.py +0 -0
  100. {langroid-0.41.0 → langroid-0.41.2}/langroid/parsing/utils.py +0 -0
  101. {langroid-0.41.0 → langroid-0.41.2}/langroid/parsing/web_search.py +0 -0
  102. {langroid-0.41.0 → langroid-0.41.2}/langroid/prompts/__init__.py +0 -0
  103. {langroid-0.41.0 → langroid-0.41.2}/langroid/prompts/dialog.py +0 -0
  104. {langroid-0.41.0 → langroid-0.41.2}/langroid/prompts/prompts_config.py +0 -0
  105. {langroid-0.41.0 → langroid-0.41.2}/langroid/prompts/templates.py +0 -0
  106. {langroid-0.41.0 → langroid-0.41.2}/langroid/py.typed +0 -0
  107. {langroid-0.41.0 → langroid-0.41.2}/langroid/pydantic_v1/__init__.py +0 -0
  108. {langroid-0.41.0 → langroid-0.41.2}/langroid/pydantic_v1/main.py +0 -0
  109. {langroid-0.41.0 → langroid-0.41.2}/langroid/utils/__init__.py +0 -0
  110. {langroid-0.41.0 → langroid-0.41.2}/langroid/utils/algorithms/__init__.py +0 -0
  111. {langroid-0.41.0 → langroid-0.41.2}/langroid/utils/algorithms/graph.py +0 -0
  112. {langroid-0.41.0 → langroid-0.41.2}/langroid/utils/configuration.py +0 -0
  113. {langroid-0.41.0 → langroid-0.41.2}/langroid/utils/constants.py +0 -0
  114. {langroid-0.41.0 → langroid-0.41.2}/langroid/utils/git_utils.py +0 -0
  115. {langroid-0.41.0 → langroid-0.41.2}/langroid/utils/globals.py +0 -0
  116. {langroid-0.41.0 → langroid-0.41.2}/langroid/utils/logging.py +0 -0
  117. {langroid-0.41.0 → langroid-0.41.2}/langroid/utils/object_registry.py +0 -0
  118. {langroid-0.41.0 → langroid-0.41.2}/langroid/utils/output/__init__.py +0 -0
  119. {langroid-0.41.0 → langroid-0.41.2}/langroid/utils/output/citations.py +0 -0
  120. {langroid-0.41.0 → langroid-0.41.2}/langroid/utils/output/printing.py +0 -0
  121. {langroid-0.41.0 → langroid-0.41.2}/langroid/utils/output/status.py +0 -0
  122. {langroid-0.41.0 → langroid-0.41.2}/langroid/utils/pandas_utils.py +0 -0
  123. {langroid-0.41.0 → langroid-0.41.2}/langroid/utils/pydantic_utils.py +0 -0
  124. {langroid-0.41.0 → langroid-0.41.2}/langroid/utils/system.py +0 -0
  125. {langroid-0.41.0 → langroid-0.41.2}/langroid/utils/types.py +0 -0
  126. {langroid-0.41.0 → langroid-0.41.2}/langroid/vector_store/__init__.py +0 -0
  127. {langroid-0.41.0 → langroid-0.41.2}/langroid/vector_store/base.py +0 -0
  128. {langroid-0.41.0 → langroid-0.41.2}/langroid/vector_store/chromadb.py +0 -0
  129. {langroid-0.41.0 → langroid-0.41.2}/langroid/vector_store/lancedb.py +0 -0
  130. {langroid-0.41.0 → langroid-0.41.2}/langroid/vector_store/meilisearch.py +0 -0
  131. {langroid-0.41.0 → langroid-0.41.2}/langroid/vector_store/momento.py +0 -0
  132. {langroid-0.41.0 → langroid-0.41.2}/langroid/vector_store/pineconedb.py +0 -0
  133. {langroid-0.41.0 → langroid-0.41.2}/langroid/vector_store/postgres.py +0 -0
  134. {langroid-0.41.0 → langroid-0.41.2}/langroid/vector_store/qdrantdb.py +0 -0
  135. {langroid-0.41.0 → langroid-0.41.2}/langroid/vector_store/weaviatedb.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: langroid
3
- Version: 0.41.0
3
+ Version: 0.41.2
4
4
  Summary: Harness LLMs with Multi-Agent Programming
5
5
  Author-email: Prasad Chalasani <pchalasani@gmail.com>
6
6
  License: MIT
@@ -12,7 +12,7 @@ Requires-Dist: async-generator<2.0,>=1.10
12
12
  Requires-Dist: bs4<1.0.0,>=0.0.1
13
13
  Requires-Dist: cerebras-cloud-sdk<2.0.0,>=1.1.0
14
14
  Requires-Dist: colorlog<7.0.0,>=6.7.0
15
- Requires-Dist: docling<3.0.0,>=2.16.0
15
+ Requires-Dist: docling<3.0.0,>=2.20.0
16
16
  Requires-Dist: docstring-parser<1.0,>=0.16
17
17
  Requires-Dist: duckduckgo-search<7.0.0,>=6.0.0
18
18
  Requires-Dist: exa-py>=1.8.7
@@ -96,7 +96,7 @@ Requires-Dist: psycopg2<3.0.0,>=2.9.7; extra == 'db'
96
96
  Requires-Dist: pymysql<2.0.0,>=1.1.0; extra == 'db'
97
97
  Requires-Dist: sqlalchemy<3.0.0,>=2.0.19; extra == 'db'
98
98
  Provides-Extra: doc-chat
99
- Requires-Dist: docling<3.0.0,>=2.16.0; extra == 'doc-chat'
99
+ Requires-Dist: docling<3.0.0,>=2.20.0; extra == 'doc-chat'
100
100
  Requires-Dist: pdf2image<2.0.0,>=1.17.0; extra == 'doc-chat'
101
101
  Requires-Dist: pymupdf4llm<0.1.0,>=0.0.17; extra == 'doc-chat'
102
102
  Requires-Dist: pymupdf<2.0.0,>=1.23.3; extra == 'doc-chat'
@@ -320,8 +320,15 @@ MODEL_INFO: Dict[str, ModelInfo] = {
320
320
  }
321
321
 
322
322
 
323
- def get_model_info(model: str | ModelName) -> ModelInfo:
323
+ def get_model_info(
324
+ model: str | ModelName,
325
+ fallback_model: str | ModelName = "",
326
+ ) -> ModelInfo:
324
327
  """Get model information by name or enum value"""
328
+ return _get_model_info(model) or _get_model_info(fallback_model) or ModelInfo()
329
+
330
+
331
+ def _get_model_info(model: str | ModelName) -> ModelInfo | None:
325
332
  if isinstance(model, str):
326
- return MODEL_INFO.get(model) or ModelInfo()
327
- return MODEL_INFO.get(model.value) or ModelInfo()
333
+ return MODEL_INFO.get(model)
334
+ return MODEL_INFO.get(model.value)
@@ -468,7 +468,10 @@ class OpenAIGPT(LanguageModel):
468
468
  self.supports_strict_tools = self.api_base is None
469
469
  self.supports_json_schema = (
470
470
  self.api_base is None
471
- and get_model_info(self.config.chat_model).has_structured_output
471
+ and get_model_info( # look for family/provider-specific then generic
472
+ self.chat_model_orig, # e.g. "gemini/gemini-2.0-flash"
473
+ self.config.chat_model, # e.g. "gemini-2.0-flash"
474
+ ).has_structured_output
472
475
  )
473
476
 
474
477
  if settings.chat_model != "":
@@ -620,7 +623,10 @@ class OpenAIGPT(LanguageModel):
620
623
  def supports_functions_or_tools(self) -> bool:
621
624
  return (
622
625
  self.is_openai_chat_model()
623
- and get_model_info(self.config.chat_model).has_tools
626
+ and get_model_info(
627
+ self.chat_model_orig,
628
+ self.config.chat_model,
629
+ ).has_tools
624
630
  )
625
631
 
626
632
  def is_openai_completion_model(self) -> bool:
@@ -644,7 +650,10 @@ class OpenAIGPT(LanguageModel):
644
650
  """
645
651
  List of params that are not supported by the current model
646
652
  """
647
- model_info = get_model_info(self.config.chat_model)
653
+ model_info = get_model_info(
654
+ self.chat_model_orig,
655
+ self.config.chat_model,
656
+ )
648
657
  unsupported = set(model_info.unsupported_params)
649
658
  for param, model_list in OpenAI_API_ParamInfo().params.items():
650
659
  if (
@@ -659,7 +668,10 @@ class OpenAIGPT(LanguageModel):
659
668
  Map of param name -> new name for specific models.
660
669
  Currently main troublemaker is o1* series.
661
670
  """
662
- return get_model_info(self.config.chat_model).rename_params
671
+ return get_model_info(
672
+ self.chat_model_orig,
673
+ self.config.chat_model,
674
+ ).rename_params
663
675
 
664
676
  def chat_context_length(self) -> int:
665
677
  """
@@ -671,7 +683,12 @@ class OpenAIGPT(LanguageModel):
671
683
  if self.config.use_completion_for_chat
672
684
  else self.config.chat_model
673
685
  )
674
- return get_model_info(model).context_length
686
+ orig_model = (
687
+ self.config.completion_model
688
+ if self.config.use_completion_for_chat
689
+ else self.chat_model_orig
690
+ )
691
+ return get_model_info(orig_model, model).context_length
675
692
 
676
693
  def completion_context_length(self) -> int:
677
694
  """
@@ -683,7 +700,12 @@ class OpenAIGPT(LanguageModel):
683
700
  if self.config.use_chat_for_completion
684
701
  else self.config.completion_model
685
702
  )
686
- return get_model_info(model).context_length
703
+ orig_model = (
704
+ self.chat_model_orig
705
+ if self.config.use_chat_for_completion
706
+ else self.config.completion_model
707
+ )
708
+ return get_model_info(orig_model, model).context_length
687
709
 
688
710
  def chat_cost(self) -> Tuple[float, float]:
689
711
  """
@@ -709,7 +731,10 @@ class OpenAIGPT(LanguageModel):
709
731
  return (
710
732
  self.config.stream
711
733
  and settings.stream
712
- and get_model_info(self.config.chat_model).allows_streaming
734
+ and get_model_info(
735
+ self.chat_model_orig,
736
+ self.config.chat_model,
737
+ ).allows_streaming
713
738
  and not settings.quiet
714
739
  )
715
740
 
@@ -68,7 +68,11 @@ class URLLoader:
68
68
  docs.extend(new_chunks)
69
69
  else:
70
70
  # Try to detect content type and handle accordingly
71
- headers = requests.head(url).headers
71
+ try:
72
+ headers = requests.head(url).headers
73
+ except Exception as e:
74
+ logging.warning(f"Error getting headers for {url}: {e}")
75
+ headers = {}
72
76
  content_type = headers.get("Content-Type", "").lower()
73
77
  temp_file_suffix = None
74
78
  if "application/pdf" in content_type:
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "langroid"
3
- version = "0.41.0"
3
+ version = "0.41.2"
4
4
  authors = [
5
5
  {name = "Prasad Chalasani", email = "pchalasani@gmail.com"},
6
6
  ]
@@ -15,7 +15,7 @@ dependencies = [
15
15
  "bs4<1.0.0,>=0.0.1",
16
16
  "cerebras-cloud-sdk<2.0.0,>=1.1.0",
17
17
  "colorlog<7.0.0,>=6.7.0",
18
- "docling<3.0.0,>=2.16.0",
18
+ "docling<3.0.0,>=2.20.0",
19
19
  "docstring-parser<1.0,>=0.16",
20
20
  "duckduckgo-search<7.0.0,>=6.0.0",
21
21
  "exa-py>=1.8.7",
@@ -62,7 +62,7 @@ dependencies = [
62
62
 
63
63
  [project.optional-dependencies]
64
64
  doc-chat = [
65
- "docling<3.0.0,>=2.16.0",
65
+ "docling<3.0.0,>=2.20.0",
66
66
  "pdf2image<2.0.0,>=1.17.0",
67
67
  "pymupdf4llm<0.1.0,>=0.0.17",
68
68
  "pymupdf<2.0.0,>=1.23.3",
File without changes
File without changes
File without changes
File without changes
File without changes