langroid 0.59.10__tar.gz → 0.59.12__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 (146) hide show
  1. {langroid-0.59.10 → langroid-0.59.12}/PKG-INFO +1 -1
  2. {langroid-0.59.10 → langroid-0.59.12}/langroid/agent/special/doc_chat_agent.py +4 -1
  3. {langroid-0.59.10 → langroid-0.59.12}/langroid/parsing/parse_json.py +25 -14
  4. {langroid-0.59.10 → langroid-0.59.12}/pyproject.toml +1 -1
  5. {langroid-0.59.10 → langroid-0.59.12}/.gitignore +0 -0
  6. {langroid-0.59.10 → langroid-0.59.12}/LICENSE +0 -0
  7. {langroid-0.59.10 → langroid-0.59.12}/README.md +0 -0
  8. {langroid-0.59.10 → langroid-0.59.12}/langroid/__init__.py +0 -0
  9. {langroid-0.59.10 → langroid-0.59.12}/langroid/agent/__init__.py +0 -0
  10. {langroid-0.59.10 → langroid-0.59.12}/langroid/agent/base.py +0 -0
  11. {langroid-0.59.10 → langroid-0.59.12}/langroid/agent/batch.py +0 -0
  12. {langroid-0.59.10 → langroid-0.59.12}/langroid/agent/callbacks/__init__.py +0 -0
  13. {langroid-0.59.10 → langroid-0.59.12}/langroid/agent/callbacks/chainlit.py +0 -0
  14. {langroid-0.59.10 → langroid-0.59.12}/langroid/agent/chat_agent.py +0 -0
  15. {langroid-0.59.10 → langroid-0.59.12}/langroid/agent/chat_document.py +0 -0
  16. {langroid-0.59.10 → langroid-0.59.12}/langroid/agent/done_sequence_parser.py +0 -0
  17. {langroid-0.59.10 → langroid-0.59.12}/langroid/agent/openai_assistant.py +0 -0
  18. {langroid-0.59.10 → langroid-0.59.12}/langroid/agent/special/__init__.py +0 -0
  19. {langroid-0.59.10 → langroid-0.59.12}/langroid/agent/special/arangodb/__init__.py +0 -0
  20. {langroid-0.59.10 → langroid-0.59.12}/langroid/agent/special/arangodb/arangodb_agent.py +0 -0
  21. {langroid-0.59.10 → langroid-0.59.12}/langroid/agent/special/arangodb/system_messages.py +0 -0
  22. {langroid-0.59.10 → langroid-0.59.12}/langroid/agent/special/arangodb/tools.py +0 -0
  23. {langroid-0.59.10 → langroid-0.59.12}/langroid/agent/special/arangodb/utils.py +0 -0
  24. {langroid-0.59.10 → langroid-0.59.12}/langroid/agent/special/doc_chat_task.py +0 -0
  25. {langroid-0.59.10 → langroid-0.59.12}/langroid/agent/special/lance_doc_chat_agent.py +0 -0
  26. {langroid-0.59.10 → langroid-0.59.12}/langroid/agent/special/lance_rag/__init__.py +0 -0
  27. {langroid-0.59.10 → langroid-0.59.12}/langroid/agent/special/lance_rag/critic_agent.py +0 -0
  28. {langroid-0.59.10 → langroid-0.59.12}/langroid/agent/special/lance_rag/lance_rag_task.py +0 -0
  29. {langroid-0.59.10 → langroid-0.59.12}/langroid/agent/special/lance_rag/query_planner_agent.py +0 -0
  30. {langroid-0.59.10 → langroid-0.59.12}/langroid/agent/special/lance_tools.py +0 -0
  31. {langroid-0.59.10 → langroid-0.59.12}/langroid/agent/special/neo4j/__init__.py +0 -0
  32. {langroid-0.59.10 → langroid-0.59.12}/langroid/agent/special/neo4j/csv_kg_chat.py +0 -0
  33. {langroid-0.59.10 → langroid-0.59.12}/langroid/agent/special/neo4j/neo4j_chat_agent.py +0 -0
  34. {langroid-0.59.10 → langroid-0.59.12}/langroid/agent/special/neo4j/system_messages.py +0 -0
  35. {langroid-0.59.10 → langroid-0.59.12}/langroid/agent/special/neo4j/tools.py +0 -0
  36. {langroid-0.59.10 → langroid-0.59.12}/langroid/agent/special/relevance_extractor_agent.py +0 -0
  37. {langroid-0.59.10 → langroid-0.59.12}/langroid/agent/special/retriever_agent.py +0 -0
  38. {langroid-0.59.10 → langroid-0.59.12}/langroid/agent/special/sql/__init__.py +0 -0
  39. {langroid-0.59.10 → langroid-0.59.12}/langroid/agent/special/sql/sql_chat_agent.py +0 -0
  40. {langroid-0.59.10 → langroid-0.59.12}/langroid/agent/special/sql/utils/__init__.py +0 -0
  41. {langroid-0.59.10 → langroid-0.59.12}/langroid/agent/special/sql/utils/description_extractors.py +0 -0
  42. {langroid-0.59.10 → langroid-0.59.12}/langroid/agent/special/sql/utils/populate_metadata.py +0 -0
  43. {langroid-0.59.10 → langroid-0.59.12}/langroid/agent/special/sql/utils/system_message.py +0 -0
  44. {langroid-0.59.10 → langroid-0.59.12}/langroid/agent/special/sql/utils/tools.py +0 -0
  45. {langroid-0.59.10 → langroid-0.59.12}/langroid/agent/special/table_chat_agent.py +0 -0
  46. {langroid-0.59.10 → langroid-0.59.12}/langroid/agent/task.py +0 -0
  47. {langroid-0.59.10 → langroid-0.59.12}/langroid/agent/tool_message.py +0 -0
  48. {langroid-0.59.10 → langroid-0.59.12}/langroid/agent/tools/__init__.py +0 -0
  49. {langroid-0.59.10 → langroid-0.59.12}/langroid/agent/tools/duckduckgo_search_tool.py +0 -0
  50. {langroid-0.59.10 → langroid-0.59.12}/langroid/agent/tools/exa_search_tool.py +0 -0
  51. {langroid-0.59.10 → langroid-0.59.12}/langroid/agent/tools/file_tools.py +0 -0
  52. {langroid-0.59.10 → langroid-0.59.12}/langroid/agent/tools/google_search_tool.py +0 -0
  53. {langroid-0.59.10 → langroid-0.59.12}/langroid/agent/tools/mcp/__init__.py +0 -0
  54. {langroid-0.59.10 → langroid-0.59.12}/langroid/agent/tools/mcp/decorators.py +0 -0
  55. {langroid-0.59.10 → langroid-0.59.12}/langroid/agent/tools/mcp/fastmcp_client.py +0 -0
  56. {langroid-0.59.10 → langroid-0.59.12}/langroid/agent/tools/metaphor_search_tool.py +0 -0
  57. {langroid-0.59.10 → langroid-0.59.12}/langroid/agent/tools/orchestration.py +0 -0
  58. {langroid-0.59.10 → langroid-0.59.12}/langroid/agent/tools/recipient_tool.py +0 -0
  59. {langroid-0.59.10 → langroid-0.59.12}/langroid/agent/tools/retrieval_tool.py +0 -0
  60. {langroid-0.59.10 → langroid-0.59.12}/langroid/agent/tools/rewind_tool.py +0 -0
  61. {langroid-0.59.10 → langroid-0.59.12}/langroid/agent/tools/segment_extract_tool.py +0 -0
  62. {langroid-0.59.10 → langroid-0.59.12}/langroid/agent/tools/task_tool.py +0 -0
  63. {langroid-0.59.10 → langroid-0.59.12}/langroid/agent/tools/tavily_search_tool.py +0 -0
  64. {langroid-0.59.10 → langroid-0.59.12}/langroid/agent/xml_tool_message.py +0 -0
  65. {langroid-0.59.10 → langroid-0.59.12}/langroid/cachedb/__init__.py +0 -0
  66. {langroid-0.59.10 → langroid-0.59.12}/langroid/cachedb/base.py +0 -0
  67. {langroid-0.59.10 → langroid-0.59.12}/langroid/cachedb/redis_cachedb.py +0 -0
  68. {langroid-0.59.10 → langroid-0.59.12}/langroid/embedding_models/__init__.py +0 -0
  69. {langroid-0.59.10 → langroid-0.59.12}/langroid/embedding_models/base.py +0 -0
  70. {langroid-0.59.10 → langroid-0.59.12}/langroid/embedding_models/models.py +0 -0
  71. {langroid-0.59.10 → langroid-0.59.12}/langroid/embedding_models/protoc/__init__.py +0 -0
  72. {langroid-0.59.10 → langroid-0.59.12}/langroid/embedding_models/protoc/embeddings.proto +0 -0
  73. {langroid-0.59.10 → langroid-0.59.12}/langroid/embedding_models/protoc/embeddings_pb2.py +0 -0
  74. {langroid-0.59.10 → langroid-0.59.12}/langroid/embedding_models/protoc/embeddings_pb2.pyi +0 -0
  75. {langroid-0.59.10 → langroid-0.59.12}/langroid/embedding_models/protoc/embeddings_pb2_grpc.py +0 -0
  76. {langroid-0.59.10 → langroid-0.59.12}/langroid/embedding_models/remote_embeds.py +0 -0
  77. {langroid-0.59.10 → langroid-0.59.12}/langroid/exceptions.py +0 -0
  78. {langroid-0.59.10 → langroid-0.59.12}/langroid/language_models/__init__.py +0 -0
  79. {langroid-0.59.10 → langroid-0.59.12}/langroid/language_models/azure_openai.py +0 -0
  80. {langroid-0.59.10 → langroid-0.59.12}/langroid/language_models/base.py +0 -0
  81. {langroid-0.59.10 → langroid-0.59.12}/langroid/language_models/client_cache.py +0 -0
  82. {langroid-0.59.10 → langroid-0.59.12}/langroid/language_models/config.py +0 -0
  83. {langroid-0.59.10 → langroid-0.59.12}/langroid/language_models/mock_lm.py +0 -0
  84. {langroid-0.59.10 → langroid-0.59.12}/langroid/language_models/model_info.py +0 -0
  85. {langroid-0.59.10 → langroid-0.59.12}/langroid/language_models/openai_gpt.py +0 -0
  86. {langroid-0.59.10 → langroid-0.59.12}/langroid/language_models/prompt_formatter/__init__.py +0 -0
  87. {langroid-0.59.10 → langroid-0.59.12}/langroid/language_models/prompt_formatter/base.py +0 -0
  88. {langroid-0.59.10 → langroid-0.59.12}/langroid/language_models/prompt_formatter/hf_formatter.py +0 -0
  89. {langroid-0.59.10 → langroid-0.59.12}/langroid/language_models/prompt_formatter/llama2_formatter.py +0 -0
  90. {langroid-0.59.10 → langroid-0.59.12}/langroid/language_models/provider_params.py +0 -0
  91. {langroid-0.59.10 → langroid-0.59.12}/langroid/language_models/utils.py +0 -0
  92. {langroid-0.59.10 → langroid-0.59.12}/langroid/mcp/__init__.py +0 -0
  93. {langroid-0.59.10 → langroid-0.59.12}/langroid/mcp/server/__init__.py +0 -0
  94. {langroid-0.59.10 → langroid-0.59.12}/langroid/mytypes.py +0 -0
  95. {langroid-0.59.10 → langroid-0.59.12}/langroid/parsing/__init__.py +0 -0
  96. {langroid-0.59.10 → langroid-0.59.12}/langroid/parsing/agent_chats.py +0 -0
  97. {langroid-0.59.10 → langroid-0.59.12}/langroid/parsing/code_parser.py +0 -0
  98. {langroid-0.59.10 → langroid-0.59.12}/langroid/parsing/document_parser.py +0 -0
  99. {langroid-0.59.10 → langroid-0.59.12}/langroid/parsing/file_attachment.py +0 -0
  100. {langroid-0.59.10 → langroid-0.59.12}/langroid/parsing/md_parser.py +0 -0
  101. {langroid-0.59.10 → langroid-0.59.12}/langroid/parsing/para_sentence_split.py +0 -0
  102. {langroid-0.59.10 → langroid-0.59.12}/langroid/parsing/parser.py +0 -0
  103. {langroid-0.59.10 → langroid-0.59.12}/langroid/parsing/pdf_utils.py +0 -0
  104. {langroid-0.59.10 → langroid-0.59.12}/langroid/parsing/repo_loader.py +0 -0
  105. {langroid-0.59.10 → langroid-0.59.12}/langroid/parsing/routing.py +0 -0
  106. {langroid-0.59.10 → langroid-0.59.12}/langroid/parsing/search.py +0 -0
  107. {langroid-0.59.10 → langroid-0.59.12}/langroid/parsing/spider.py +0 -0
  108. {langroid-0.59.10 → langroid-0.59.12}/langroid/parsing/table_loader.py +0 -0
  109. {langroid-0.59.10 → langroid-0.59.12}/langroid/parsing/url_loader.py +0 -0
  110. {langroid-0.59.10 → langroid-0.59.12}/langroid/parsing/urls.py +0 -0
  111. {langroid-0.59.10 → langroid-0.59.12}/langroid/parsing/utils.py +0 -0
  112. {langroid-0.59.10 → langroid-0.59.12}/langroid/parsing/web_search.py +0 -0
  113. {langroid-0.59.10 → langroid-0.59.12}/langroid/prompts/__init__.py +0 -0
  114. {langroid-0.59.10 → langroid-0.59.12}/langroid/prompts/dialog.py +0 -0
  115. {langroid-0.59.10 → langroid-0.59.12}/langroid/prompts/prompts_config.py +0 -0
  116. {langroid-0.59.10 → langroid-0.59.12}/langroid/prompts/templates.py +0 -0
  117. {langroid-0.59.10 → langroid-0.59.12}/langroid/py.typed +0 -0
  118. {langroid-0.59.10 → langroid-0.59.12}/langroid/pydantic_v1/__init__.py +0 -0
  119. {langroid-0.59.10 → langroid-0.59.12}/langroid/pydantic_v1/main.py +0 -0
  120. {langroid-0.59.10 → langroid-0.59.12}/langroid/utils/__init__.py +0 -0
  121. {langroid-0.59.10 → langroid-0.59.12}/langroid/utils/algorithms/__init__.py +0 -0
  122. {langroid-0.59.10 → langroid-0.59.12}/langroid/utils/algorithms/graph.py +0 -0
  123. {langroid-0.59.10 → langroid-0.59.12}/langroid/utils/configuration.py +0 -0
  124. {langroid-0.59.10 → langroid-0.59.12}/langroid/utils/constants.py +0 -0
  125. {langroid-0.59.10 → langroid-0.59.12}/langroid/utils/git_utils.py +0 -0
  126. {langroid-0.59.10 → langroid-0.59.12}/langroid/utils/globals.py +0 -0
  127. {langroid-0.59.10 → langroid-0.59.12}/langroid/utils/html_logger.py +0 -0
  128. {langroid-0.59.10 → langroid-0.59.12}/langroid/utils/logging.py +0 -0
  129. {langroid-0.59.10 → langroid-0.59.12}/langroid/utils/object_registry.py +0 -0
  130. {langroid-0.59.10 → langroid-0.59.12}/langroid/utils/output/__init__.py +0 -0
  131. {langroid-0.59.10 → langroid-0.59.12}/langroid/utils/output/citations.py +0 -0
  132. {langroid-0.59.10 → langroid-0.59.12}/langroid/utils/output/printing.py +0 -0
  133. {langroid-0.59.10 → langroid-0.59.12}/langroid/utils/output/status.py +0 -0
  134. {langroid-0.59.10 → langroid-0.59.12}/langroid/utils/pandas_utils.py +0 -0
  135. {langroid-0.59.10 → langroid-0.59.12}/langroid/utils/pydantic_utils.py +0 -0
  136. {langroid-0.59.10 → langroid-0.59.12}/langroid/utils/system.py +0 -0
  137. {langroid-0.59.10 → langroid-0.59.12}/langroid/utils/types.py +0 -0
  138. {langroid-0.59.10 → langroid-0.59.12}/langroid/vector_store/__init__.py +0 -0
  139. {langroid-0.59.10 → langroid-0.59.12}/langroid/vector_store/base.py +0 -0
  140. {langroid-0.59.10 → langroid-0.59.12}/langroid/vector_store/chromadb.py +0 -0
  141. {langroid-0.59.10 → langroid-0.59.12}/langroid/vector_store/lancedb.py +0 -0
  142. {langroid-0.59.10 → langroid-0.59.12}/langroid/vector_store/meilisearch.py +0 -0
  143. {langroid-0.59.10 → langroid-0.59.12}/langroid/vector_store/pineconedb.py +0 -0
  144. {langroid-0.59.10 → langroid-0.59.12}/langroid/vector_store/postgres.py +0 -0
  145. {langroid-0.59.10 → langroid-0.59.12}/langroid/vector_store/qdrantdb.py +0 -0
  146. {langroid-0.59.10 → langroid-0.59.12}/langroid/vector_store/weaviatedb.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: langroid
3
- Version: 0.59.10
3
+ Version: 0.59.12
4
4
  Summary: Harness LLMs with Multi-Agent Programming
5
5
  Author-email: Prasad Chalasani <pchalasani@gmail.com>
6
6
  License: MIT
@@ -14,6 +14,7 @@ pip install "langroid[hf-embeddings]"
14
14
 
15
15
  """
16
16
 
17
+ import asyncio
17
18
  import importlib
18
19
  import logging
19
20
  from collections import OrderedDict
@@ -858,7 +859,9 @@ class DocChatAgent(ChatAgent):
858
859
  return self.summarize_docs()
859
860
  else:
860
861
  self.callbacks.show_start_response(entity="llm")
861
- response = self.answer_from_docs(query_str)
862
+ # Offload blocking retrieval/LLM work to default thread pool so
863
+ # asyncio batch runners can make progress concurrently.
864
+ response = await asyncio.to_thread(self.answer_from_docs, query_str)
862
865
  self._render_llm_response(response, citation_only=True)
863
866
  return ChatDocument(
864
867
  content=response.content,
@@ -135,21 +135,32 @@ def top_level_json_field(s: str, f: str) -> Any:
135
135
  Returns:
136
136
  str: The value of the field f in the top-level JSON object, if any.
137
137
  Otherwise, return an empty string.
138
- """
139
138
 
140
- jsons = extract_top_level_json(s)
141
- if len(jsons) == 0:
142
- return ""
143
- for j in jsons:
144
- json_data = json.loads(j)
145
- if isinstance(json_data, dict):
146
- if f in json_data:
147
- return json_data[f]
148
- elif isinstance(json_data, list):
149
- # Some responses wrap candidate JSON objects in a list; scan them.
150
- for item in json_data:
151
- if isinstance(item, dict) and f in item:
152
- return item[f]
139
+ Note:
140
+ This function is designed to never crash. If any exception occurs during
141
+ JSON parsing or field extraction, it gracefully returns an empty string.
142
+ """
143
+ try:
144
+ jsons = extract_top_level_json(s)
145
+ if len(jsons) == 0:
146
+ return ""
147
+ for j in jsons:
148
+ try:
149
+ json_data = json.loads(j)
150
+ if isinstance(json_data, dict):
151
+ if f in json_data:
152
+ return json_data[f]
153
+ elif isinstance(json_data, list):
154
+ # Some responses wrap candidate JSON objects in a list; scan them.
155
+ for item in json_data:
156
+ if isinstance(item, dict) and f in item:
157
+ return item[f]
158
+ except (json.JSONDecodeError, TypeError, KeyError):
159
+ # If this specific JSON fails to parse, continue to next candidate
160
+ continue
161
+ except Exception:
162
+ # Catch any unexpected errors to ensure we never crash
163
+ pass
153
164
 
154
165
  return ""
155
166
 
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "langroid"
3
- version = "0.59.10"
3
+ version = "0.59.12"
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