langroid 0.51.0__tar.gz → 0.51.1__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.51.0 → langroid-0.51.1}/PKG-INFO +1 -1
  2. {langroid-0.51.0 → langroid-0.51.1}/langroid/parsing/document_parser.py +27 -12
  3. {langroid-0.51.0 → langroid-0.51.1}/pyproject.toml +1 -1
  4. {langroid-0.51.0 → langroid-0.51.1}/.gitignore +0 -0
  5. {langroid-0.51.0 → langroid-0.51.1}/LICENSE +0 -0
  6. {langroid-0.51.0 → langroid-0.51.1}/README.md +0 -0
  7. {langroid-0.51.0 → langroid-0.51.1}/langroid/__init__.py +0 -0
  8. {langroid-0.51.0 → langroid-0.51.1}/langroid/agent/__init__.py +0 -0
  9. {langroid-0.51.0 → langroid-0.51.1}/langroid/agent/base.py +0 -0
  10. {langroid-0.51.0 → langroid-0.51.1}/langroid/agent/batch.py +0 -0
  11. {langroid-0.51.0 → langroid-0.51.1}/langroid/agent/callbacks/__init__.py +0 -0
  12. {langroid-0.51.0 → langroid-0.51.1}/langroid/agent/callbacks/chainlit.py +0 -0
  13. {langroid-0.51.0 → langroid-0.51.1}/langroid/agent/chat_agent.py +0 -0
  14. {langroid-0.51.0 → langroid-0.51.1}/langroid/agent/chat_document.py +0 -0
  15. {langroid-0.51.0 → langroid-0.51.1}/langroid/agent/openai_assistant.py +0 -0
  16. {langroid-0.51.0 → langroid-0.51.1}/langroid/agent/special/__init__.py +0 -0
  17. {langroid-0.51.0 → langroid-0.51.1}/langroid/agent/special/arangodb/__init__.py +0 -0
  18. {langroid-0.51.0 → langroid-0.51.1}/langroid/agent/special/arangodb/arangodb_agent.py +0 -0
  19. {langroid-0.51.0 → langroid-0.51.1}/langroid/agent/special/arangodb/system_messages.py +0 -0
  20. {langroid-0.51.0 → langroid-0.51.1}/langroid/agent/special/arangodb/tools.py +0 -0
  21. {langroid-0.51.0 → langroid-0.51.1}/langroid/agent/special/arangodb/utils.py +0 -0
  22. {langroid-0.51.0 → langroid-0.51.1}/langroid/agent/special/doc_chat_agent.py +0 -0
  23. {langroid-0.51.0 → langroid-0.51.1}/langroid/agent/special/doc_chat_task.py +0 -0
  24. {langroid-0.51.0 → langroid-0.51.1}/langroid/agent/special/lance_doc_chat_agent.py +0 -0
  25. {langroid-0.51.0 → langroid-0.51.1}/langroid/agent/special/lance_rag/__init__.py +0 -0
  26. {langroid-0.51.0 → langroid-0.51.1}/langroid/agent/special/lance_rag/critic_agent.py +0 -0
  27. {langroid-0.51.0 → langroid-0.51.1}/langroid/agent/special/lance_rag/lance_rag_task.py +0 -0
  28. {langroid-0.51.0 → langroid-0.51.1}/langroid/agent/special/lance_rag/query_planner_agent.py +0 -0
  29. {langroid-0.51.0 → langroid-0.51.1}/langroid/agent/special/lance_tools.py +0 -0
  30. {langroid-0.51.0 → langroid-0.51.1}/langroid/agent/special/neo4j/__init__.py +0 -0
  31. {langroid-0.51.0 → langroid-0.51.1}/langroid/agent/special/neo4j/csv_kg_chat.py +0 -0
  32. {langroid-0.51.0 → langroid-0.51.1}/langroid/agent/special/neo4j/neo4j_chat_agent.py +0 -0
  33. {langroid-0.51.0 → langroid-0.51.1}/langroid/agent/special/neo4j/system_messages.py +0 -0
  34. {langroid-0.51.0 → langroid-0.51.1}/langroid/agent/special/neo4j/tools.py +0 -0
  35. {langroid-0.51.0 → langroid-0.51.1}/langroid/agent/special/relevance_extractor_agent.py +0 -0
  36. {langroid-0.51.0 → langroid-0.51.1}/langroid/agent/special/retriever_agent.py +0 -0
  37. {langroid-0.51.0 → langroid-0.51.1}/langroid/agent/special/sql/__init__.py +0 -0
  38. {langroid-0.51.0 → langroid-0.51.1}/langroid/agent/special/sql/sql_chat_agent.py +0 -0
  39. {langroid-0.51.0 → langroid-0.51.1}/langroid/agent/special/sql/utils/__init__.py +0 -0
  40. {langroid-0.51.0 → langroid-0.51.1}/langroid/agent/special/sql/utils/description_extractors.py +0 -0
  41. {langroid-0.51.0 → langroid-0.51.1}/langroid/agent/special/sql/utils/populate_metadata.py +0 -0
  42. {langroid-0.51.0 → langroid-0.51.1}/langroid/agent/special/sql/utils/system_message.py +0 -0
  43. {langroid-0.51.0 → langroid-0.51.1}/langroid/agent/special/sql/utils/tools.py +0 -0
  44. {langroid-0.51.0 → langroid-0.51.1}/langroid/agent/special/table_chat_agent.py +0 -0
  45. {langroid-0.51.0 → langroid-0.51.1}/langroid/agent/task.py +0 -0
  46. {langroid-0.51.0 → langroid-0.51.1}/langroid/agent/tool_message.py +0 -0
  47. {langroid-0.51.0 → langroid-0.51.1}/langroid/agent/tools/__init__.py +0 -0
  48. {langroid-0.51.0 → langroid-0.51.1}/langroid/agent/tools/duckduckgo_search_tool.py +0 -0
  49. {langroid-0.51.0 → langroid-0.51.1}/langroid/agent/tools/exa_search_tool.py +0 -0
  50. {langroid-0.51.0 → langroid-0.51.1}/langroid/agent/tools/file_tools.py +0 -0
  51. {langroid-0.51.0 → langroid-0.51.1}/langroid/agent/tools/google_search_tool.py +0 -0
  52. {langroid-0.51.0 → langroid-0.51.1}/langroid/agent/tools/metaphor_search_tool.py +0 -0
  53. {langroid-0.51.0 → langroid-0.51.1}/langroid/agent/tools/orchestration.py +0 -0
  54. {langroid-0.51.0 → langroid-0.51.1}/langroid/agent/tools/recipient_tool.py +0 -0
  55. {langroid-0.51.0 → langroid-0.51.1}/langroid/agent/tools/retrieval_tool.py +0 -0
  56. {langroid-0.51.0 → langroid-0.51.1}/langroid/agent/tools/rewind_tool.py +0 -0
  57. {langroid-0.51.0 → langroid-0.51.1}/langroid/agent/tools/segment_extract_tool.py +0 -0
  58. {langroid-0.51.0 → langroid-0.51.1}/langroid/agent/tools/tavily_search_tool.py +0 -0
  59. {langroid-0.51.0 → langroid-0.51.1}/langroid/agent/xml_tool_message.py +0 -0
  60. {langroid-0.51.0 → langroid-0.51.1}/langroid/cachedb/__init__.py +0 -0
  61. {langroid-0.51.0 → langroid-0.51.1}/langroid/cachedb/base.py +0 -0
  62. {langroid-0.51.0 → langroid-0.51.1}/langroid/cachedb/momento_cachedb.py +0 -0
  63. {langroid-0.51.0 → langroid-0.51.1}/langroid/cachedb/redis_cachedb.py +0 -0
  64. {langroid-0.51.0 → langroid-0.51.1}/langroid/embedding_models/__init__.py +0 -0
  65. {langroid-0.51.0 → langroid-0.51.1}/langroid/embedding_models/base.py +0 -0
  66. {langroid-0.51.0 → langroid-0.51.1}/langroid/embedding_models/models.py +0 -0
  67. {langroid-0.51.0 → langroid-0.51.1}/langroid/embedding_models/protoc/__init__.py +0 -0
  68. {langroid-0.51.0 → langroid-0.51.1}/langroid/embedding_models/protoc/embeddings.proto +0 -0
  69. {langroid-0.51.0 → langroid-0.51.1}/langroid/embedding_models/protoc/embeddings_pb2.py +0 -0
  70. {langroid-0.51.0 → langroid-0.51.1}/langroid/embedding_models/protoc/embeddings_pb2.pyi +0 -0
  71. {langroid-0.51.0 → langroid-0.51.1}/langroid/embedding_models/protoc/embeddings_pb2_grpc.py +0 -0
  72. {langroid-0.51.0 → langroid-0.51.1}/langroid/embedding_models/remote_embeds.py +0 -0
  73. {langroid-0.51.0 → langroid-0.51.1}/langroid/exceptions.py +0 -0
  74. {langroid-0.51.0 → langroid-0.51.1}/langroid/language_models/__init__.py +0 -0
  75. {langroid-0.51.0 → langroid-0.51.1}/langroid/language_models/azure_openai.py +0 -0
  76. {langroid-0.51.0 → langroid-0.51.1}/langroid/language_models/base.py +0 -0
  77. {langroid-0.51.0 → langroid-0.51.1}/langroid/language_models/config.py +0 -0
  78. {langroid-0.51.0 → langroid-0.51.1}/langroid/language_models/mock_lm.py +0 -0
  79. {langroid-0.51.0 → langroid-0.51.1}/langroid/language_models/model_info.py +0 -0
  80. {langroid-0.51.0 → langroid-0.51.1}/langroid/language_models/openai_gpt.py +0 -0
  81. {langroid-0.51.0 → langroid-0.51.1}/langroid/language_models/prompt_formatter/__init__.py +0 -0
  82. {langroid-0.51.0 → langroid-0.51.1}/langroid/language_models/prompt_formatter/base.py +0 -0
  83. {langroid-0.51.0 → langroid-0.51.1}/langroid/language_models/prompt_formatter/hf_formatter.py +0 -0
  84. {langroid-0.51.0 → langroid-0.51.1}/langroid/language_models/prompt_formatter/llama2_formatter.py +0 -0
  85. {langroid-0.51.0 → langroid-0.51.1}/langroid/language_models/utils.py +0 -0
  86. {langroid-0.51.0 → langroid-0.51.1}/langroid/mytypes.py +0 -0
  87. {langroid-0.51.0 → langroid-0.51.1}/langroid/parsing/__init__.py +0 -0
  88. {langroid-0.51.0 → langroid-0.51.1}/langroid/parsing/agent_chats.py +0 -0
  89. {langroid-0.51.0 → langroid-0.51.1}/langroid/parsing/code_parser.py +0 -0
  90. {langroid-0.51.0 → langroid-0.51.1}/langroid/parsing/md_parser.py +0 -0
  91. {langroid-0.51.0 → langroid-0.51.1}/langroid/parsing/para_sentence_split.py +0 -0
  92. {langroid-0.51.0 → langroid-0.51.1}/langroid/parsing/parse_json.py +0 -0
  93. {langroid-0.51.0 → langroid-0.51.1}/langroid/parsing/parser.py +0 -0
  94. {langroid-0.51.0 → langroid-0.51.1}/langroid/parsing/pdf_utils.py +0 -0
  95. {langroid-0.51.0 → langroid-0.51.1}/langroid/parsing/repo_loader.py +0 -0
  96. {langroid-0.51.0 → langroid-0.51.1}/langroid/parsing/routing.py +0 -0
  97. {langroid-0.51.0 → langroid-0.51.1}/langroid/parsing/search.py +0 -0
  98. {langroid-0.51.0 → langroid-0.51.1}/langroid/parsing/spider.py +0 -0
  99. {langroid-0.51.0 → langroid-0.51.1}/langroid/parsing/table_loader.py +0 -0
  100. {langroid-0.51.0 → langroid-0.51.1}/langroid/parsing/url_loader.py +0 -0
  101. {langroid-0.51.0 → langroid-0.51.1}/langroid/parsing/urls.py +0 -0
  102. {langroid-0.51.0 → langroid-0.51.1}/langroid/parsing/utils.py +0 -0
  103. {langroid-0.51.0 → langroid-0.51.1}/langroid/parsing/web_search.py +0 -0
  104. {langroid-0.51.0 → langroid-0.51.1}/langroid/prompts/__init__.py +0 -0
  105. {langroid-0.51.0 → langroid-0.51.1}/langroid/prompts/dialog.py +0 -0
  106. {langroid-0.51.0 → langroid-0.51.1}/langroid/prompts/prompts_config.py +0 -0
  107. {langroid-0.51.0 → langroid-0.51.1}/langroid/prompts/templates.py +0 -0
  108. {langroid-0.51.0 → langroid-0.51.1}/langroid/py.typed +0 -0
  109. {langroid-0.51.0 → langroid-0.51.1}/langroid/pydantic_v1/__init__.py +0 -0
  110. {langroid-0.51.0 → langroid-0.51.1}/langroid/pydantic_v1/main.py +0 -0
  111. {langroid-0.51.0 → langroid-0.51.1}/langroid/utils/__init__.py +0 -0
  112. {langroid-0.51.0 → langroid-0.51.1}/langroid/utils/algorithms/__init__.py +0 -0
  113. {langroid-0.51.0 → langroid-0.51.1}/langroid/utils/algorithms/graph.py +0 -0
  114. {langroid-0.51.0 → langroid-0.51.1}/langroid/utils/configuration.py +0 -0
  115. {langroid-0.51.0 → langroid-0.51.1}/langroid/utils/constants.py +0 -0
  116. {langroid-0.51.0 → langroid-0.51.1}/langroid/utils/git_utils.py +0 -0
  117. {langroid-0.51.0 → langroid-0.51.1}/langroid/utils/globals.py +0 -0
  118. {langroid-0.51.0 → langroid-0.51.1}/langroid/utils/logging.py +0 -0
  119. {langroid-0.51.0 → langroid-0.51.1}/langroid/utils/object_registry.py +0 -0
  120. {langroid-0.51.0 → langroid-0.51.1}/langroid/utils/output/__init__.py +0 -0
  121. {langroid-0.51.0 → langroid-0.51.1}/langroid/utils/output/citations.py +0 -0
  122. {langroid-0.51.0 → langroid-0.51.1}/langroid/utils/output/printing.py +0 -0
  123. {langroid-0.51.0 → langroid-0.51.1}/langroid/utils/output/status.py +0 -0
  124. {langroid-0.51.0 → langroid-0.51.1}/langroid/utils/pandas_utils.py +0 -0
  125. {langroid-0.51.0 → langroid-0.51.1}/langroid/utils/pydantic_utils.py +0 -0
  126. {langroid-0.51.0 → langroid-0.51.1}/langroid/utils/system.py +0 -0
  127. {langroid-0.51.0 → langroid-0.51.1}/langroid/utils/types.py +0 -0
  128. {langroid-0.51.0 → langroid-0.51.1}/langroid/vector_store/__init__.py +0 -0
  129. {langroid-0.51.0 → langroid-0.51.1}/langroid/vector_store/base.py +0 -0
  130. {langroid-0.51.0 → langroid-0.51.1}/langroid/vector_store/chromadb.py +0 -0
  131. {langroid-0.51.0 → langroid-0.51.1}/langroid/vector_store/lancedb.py +0 -0
  132. {langroid-0.51.0 → langroid-0.51.1}/langroid/vector_store/meilisearch.py +0 -0
  133. {langroid-0.51.0 → langroid-0.51.1}/langroid/vector_store/pineconedb.py +0 -0
  134. {langroid-0.51.0 → langroid-0.51.1}/langroid/vector_store/postgres.py +0 -0
  135. {langroid-0.51.0 → langroid-0.51.1}/langroid/vector_store/qdrantdb.py +0 -0
  136. {langroid-0.51.0 → langroid-0.51.1}/langroid/vector_store/weaviatedb.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: langroid
3
- Version: 0.51.0
3
+ Version: 0.51.1
4
4
  Summary: Harness LLMs with Multi-Agent Programming
5
5
  Author-email: Prasad Chalasani <pchalasani@gmail.com>
6
6
  License: MIT
@@ -1201,6 +1201,20 @@ class LLMPdfParser(DocumentParser):
1201
1201
  pdf_chunks = pool.map(self._merge_pages_into_pdf_with_metadata, chunks)
1202
1202
  return pdf_chunks
1203
1203
 
1204
+ @staticmethod
1205
+ def _page_num_str(page_numbers: Any) -> str:
1206
+ """
1207
+ Converts page numbers to a formatted string.
1208
+ """
1209
+ if isinstance(page_numbers, list):
1210
+ if len(page_numbers) == 0:
1211
+ return ""
1212
+ return str(page_numbers[0]) + "-" + str(page_numbers[-1])
1213
+ elif isinstance(page_numbers, int):
1214
+ return str(page_numbers)
1215
+ else:
1216
+ return str(page_numbers).replace(" ", "-")
1217
+
1204
1218
  async def _send_chunk_to_llm(self, chunk: Dict[str, Any]) -> str:
1205
1219
  """
1206
1220
  Sends a PDF chunk to the LLM API and returns the response text.
@@ -1219,6 +1233,7 @@ class LLMPdfParser(DocumentParser):
1219
1233
  max_output_tokens=self.max_tokens,
1220
1234
  )
1221
1235
  llm = OpenAIGPT(config=llm_config)
1236
+ page_nums = self._page_num_str(chunk.get("page_numbers", "?"))
1222
1237
  base64_string = base64.b64encode(chunk["pdf_bytes"]).decode("utf-8")
1223
1238
  data_uri = f"data:application/pdf;base64,{base64_string}"
1224
1239
  if "gemini" in self.model_name.lower():
@@ -1226,7 +1241,9 @@ class LLMPdfParser(DocumentParser):
1226
1241
  type="image_url",
1227
1242
  image_url=dict(url=data_uri),
1228
1243
  )
1229
- elif "claude" in self.model_name.lower() and llm.is_litellm_proxy:
1244
+ elif "claude" in self.model_name.lower():
1245
+ # optimistrally try this: some API proxies like litellm
1246
+ # support this, and others may not.
1230
1247
  file_content = dict(
1231
1248
  type="file",
1232
1249
  file=dict(
@@ -1234,18 +1251,11 @@ class LLMPdfParser(DocumentParser):
1234
1251
  ),
1235
1252
  )
1236
1253
  else:
1237
- if not llm.is_openai_chat_model():
1238
- logger.warning(
1239
- f"""
1240
- File uploads may not be supported for this model
1241
- {self.model_name}. But attempting to
1242
- use OpenAI-like file upload.
1243
- """,
1244
- )
1254
+ # fallback: assume file upload is similar to OpenAI API
1245
1255
  file_content = dict(
1246
1256
  type="file",
1247
1257
  file=dict(
1248
- filename="dummy.pdf",
1258
+ filename=f"pages-{page_nums}.pdf",
1249
1259
  file_data=data_uri,
1250
1260
  ),
1251
1261
  )
@@ -1304,9 +1314,14 @@ class LLMPdfParser(DocumentParser):
1304
1314
  await asyncio.sleep(delay)
1305
1315
  else:
1306
1316
  # Log failure after max retries
1317
+ page_nums = chunk.get("page_numbers", "Unknown")
1307
1318
  logging.error(
1308
- "Max retries reached for pages %s",
1309
- chunk.get("page_numbers", "Unknown"),
1319
+ f"""
1320
+ Max retries reached for pages {page_nums}.
1321
+ It is possible your LLM API provider for
1322
+ the model {self.model_name} does not support
1323
+ file uploads via an OpenAI-compatible API.
1324
+ """,
1310
1325
  )
1311
1326
  break
1312
1327
  return "" # Return empty string if all retries fail
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "langroid"
3
- version = "0.51.0"
3
+ version = "0.51.1"
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