langroid 0.10.0__tar.gz → 0.10.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 (140) hide show
  1. {langroid-0.10.0 → langroid-0.10.1}/PKG-INFO +4 -1
  2. {langroid-0.10.0 → langroid-0.10.1}/README.md +3 -0
  3. {langroid-0.10.0 → langroid-0.10.1}/langroid/agent/base.py +57 -44
  4. {langroid-0.10.0 → langroid-0.10.1}/langroid/agent/special/lance_rag/lance_rag_task.py +2 -0
  5. {langroid-0.10.0 → langroid-0.10.1}/langroid/agent/tool_message.py +11 -0
  6. {langroid-0.10.0 → langroid-0.10.1}/langroid/parsing/code_parser.py +2 -0
  7. {langroid-0.10.0 → langroid-0.10.1}/pyproject.toml +1 -1
  8. {langroid-0.10.0 → langroid-0.10.1}/LICENSE +0 -0
  9. {langroid-0.10.0 → langroid-0.10.1}/langroid/__init__.py +0 -0
  10. {langroid-0.10.0 → langroid-0.10.1}/langroid/agent/__init__.py +0 -0
  11. {langroid-0.10.0 → langroid-0.10.1}/langroid/agent/batch.py +0 -0
  12. {langroid-0.10.0 → langroid-0.10.1}/langroid/agent/callbacks/__init__.py +0 -0
  13. {langroid-0.10.0 → langroid-0.10.1}/langroid/agent/callbacks/chainlit.py +0 -0
  14. {langroid-0.10.0 → langroid-0.10.1}/langroid/agent/chat_agent.py +0 -0
  15. {langroid-0.10.0 → langroid-0.10.1}/langroid/agent/chat_document.py +0 -0
  16. {langroid-0.10.0 → langroid-0.10.1}/langroid/agent/helpers.py +0 -0
  17. {langroid-0.10.0 → langroid-0.10.1}/langroid/agent/junk +0 -0
  18. {langroid-0.10.0 → langroid-0.10.1}/langroid/agent/openai_assistant.py +0 -0
  19. {langroid-0.10.0 → langroid-0.10.1}/langroid/agent/special/__init__.py +0 -0
  20. {langroid-0.10.0 → langroid-0.10.1}/langroid/agent/special/doc_chat_agent.py +0 -0
  21. {langroid-0.10.0 → langroid-0.10.1}/langroid/agent/special/lance_doc_chat_agent.py +0 -0
  22. {langroid-0.10.0 → langroid-0.10.1}/langroid/agent/special/lance_rag/__init__.py +0 -0
  23. {langroid-0.10.0 → langroid-0.10.1}/langroid/agent/special/lance_rag/critic_agent.py +0 -0
  24. {langroid-0.10.0 → langroid-0.10.1}/langroid/agent/special/lance_rag/query_planner_agent.py +0 -0
  25. {langroid-0.10.0 → langroid-0.10.1}/langroid/agent/special/lance_tools.py +0 -0
  26. {langroid-0.10.0 → langroid-0.10.1}/langroid/agent/special/neo4j/__init__.py +0 -0
  27. {langroid-0.10.0 → langroid-0.10.1}/langroid/agent/special/neo4j/csv_kg_chat.py +0 -0
  28. {langroid-0.10.0 → langroid-0.10.1}/langroid/agent/special/neo4j/neo4j_chat_agent.py +0 -0
  29. {langroid-0.10.0 → langroid-0.10.1}/langroid/agent/special/neo4j/utils/__init__.py +0 -0
  30. {langroid-0.10.0 → langroid-0.10.1}/langroid/agent/special/neo4j/utils/system_message.py +0 -0
  31. {langroid-0.10.0 → langroid-0.10.1}/langroid/agent/special/relevance_extractor_agent.py +0 -0
  32. {langroid-0.10.0 → langroid-0.10.1}/langroid/agent/special/retriever_agent.py +0 -0
  33. {langroid-0.10.0 → langroid-0.10.1}/langroid/agent/special/sql/__init__.py +0 -0
  34. {langroid-0.10.0 → langroid-0.10.1}/langroid/agent/special/sql/sql_chat_agent.py +0 -0
  35. {langroid-0.10.0 → langroid-0.10.1}/langroid/agent/special/sql/utils/__init__.py +0 -0
  36. {langroid-0.10.0 → langroid-0.10.1}/langroid/agent/special/sql/utils/description_extractors.py +0 -0
  37. {langroid-0.10.0 → langroid-0.10.1}/langroid/agent/special/sql/utils/populate_metadata.py +0 -0
  38. {langroid-0.10.0 → langroid-0.10.1}/langroid/agent/special/sql/utils/system_message.py +0 -0
  39. {langroid-0.10.0 → langroid-0.10.1}/langroid/agent/special/sql/utils/tools.py +0 -0
  40. {langroid-0.10.0 → langroid-0.10.1}/langroid/agent/special/table_chat_agent.py +0 -0
  41. {langroid-0.10.0 → langroid-0.10.1}/langroid/agent/structured_message.py +0 -0
  42. {langroid-0.10.0 → langroid-0.10.1}/langroid/agent/task.py +0 -0
  43. {langroid-0.10.0 → langroid-0.10.1}/langroid/agent/tools/__init__.py +0 -0
  44. {langroid-0.10.0 → langroid-0.10.1}/langroid/agent/tools/duckduckgo_search_tool.py +0 -0
  45. {langroid-0.10.0 → langroid-0.10.1}/langroid/agent/tools/extract_tool.py +0 -0
  46. {langroid-0.10.0 → langroid-0.10.1}/langroid/agent/tools/generator_tool.py +0 -0
  47. {langroid-0.10.0 → langroid-0.10.1}/langroid/agent/tools/google_search_tool.py +0 -0
  48. {langroid-0.10.0 → langroid-0.10.1}/langroid/agent/tools/metaphor_search_tool.py +0 -0
  49. {langroid-0.10.0 → langroid-0.10.1}/langroid/agent/tools/note_tool.py +0 -0
  50. {langroid-0.10.0 → langroid-0.10.1}/langroid/agent/tools/orchestration.py +0 -0
  51. {langroid-0.10.0 → langroid-0.10.1}/langroid/agent/tools/recipient_tool.py +0 -0
  52. {langroid-0.10.0 → langroid-0.10.1}/langroid/agent/tools/retrieval_tool.py +0 -0
  53. {langroid-0.10.0 → langroid-0.10.1}/langroid/agent/tools/rewind_tool.py +0 -0
  54. {langroid-0.10.0 → langroid-0.10.1}/langroid/agent/tools/run_python_code.py +0 -0
  55. {langroid-0.10.0 → langroid-0.10.1}/langroid/agent/tools/segment_extract_tool.py +0 -0
  56. {langroid-0.10.0 → langroid-0.10.1}/langroid/agent/typed_task.py +0 -0
  57. {langroid-0.10.0 → langroid-0.10.1}/langroid/agent_config.py +0 -0
  58. {langroid-0.10.0 → langroid-0.10.1}/langroid/cachedb/__init__.py +0 -0
  59. {langroid-0.10.0 → langroid-0.10.1}/langroid/cachedb/base.py +0 -0
  60. {langroid-0.10.0 → langroid-0.10.1}/langroid/cachedb/momento_cachedb.py +0 -0
  61. {langroid-0.10.0 → langroid-0.10.1}/langroid/cachedb/redis_cachedb.py +0 -0
  62. {langroid-0.10.0 → langroid-0.10.1}/langroid/embedding_models/__init__.py +0 -0
  63. {langroid-0.10.0 → langroid-0.10.1}/langroid/embedding_models/base.py +0 -0
  64. {langroid-0.10.0 → langroid-0.10.1}/langroid/embedding_models/clustering.py +0 -0
  65. {langroid-0.10.0 → langroid-0.10.1}/langroid/embedding_models/models.py +0 -0
  66. {langroid-0.10.0 → langroid-0.10.1}/langroid/embedding_models/protoc/__init__.py +0 -0
  67. {langroid-0.10.0 → langroid-0.10.1}/langroid/embedding_models/protoc/embeddings.proto +0 -0
  68. {langroid-0.10.0 → langroid-0.10.1}/langroid/embedding_models/protoc/embeddings_pb2.py +0 -0
  69. {langroid-0.10.0 → langroid-0.10.1}/langroid/embedding_models/protoc/embeddings_pb2.pyi +0 -0
  70. {langroid-0.10.0 → langroid-0.10.1}/langroid/embedding_models/protoc/embeddings_pb2_grpc.py +0 -0
  71. {langroid-0.10.0 → langroid-0.10.1}/langroid/embedding_models/remote_embeds.py +0 -0
  72. {langroid-0.10.0 → langroid-0.10.1}/langroid/exceptions.py +0 -0
  73. {langroid-0.10.0 → langroid-0.10.1}/langroid/language_models/.chainlit/config.toml +0 -0
  74. {langroid-0.10.0 → langroid-0.10.1}/langroid/language_models/.chainlit/translations/en-US.json +0 -0
  75. {langroid-0.10.0 → langroid-0.10.1}/langroid/language_models/__init__.py +0 -0
  76. {langroid-0.10.0 → langroid-0.10.1}/langroid/language_models/azure_openai.py +0 -0
  77. {langroid-0.10.0 → langroid-0.10.1}/langroid/language_models/base.py +0 -0
  78. {langroid-0.10.0 → langroid-0.10.1}/langroid/language_models/config.py +0 -0
  79. {langroid-0.10.0 → langroid-0.10.1}/langroid/language_models/mock_lm.py +0 -0
  80. {langroid-0.10.0 → langroid-0.10.1}/langroid/language_models/openai_gpt.py +0 -0
  81. {langroid-0.10.0 → langroid-0.10.1}/langroid/language_models/prompt_formatter/__init__.py +0 -0
  82. {langroid-0.10.0 → langroid-0.10.1}/langroid/language_models/prompt_formatter/base.py +0 -0
  83. {langroid-0.10.0 → langroid-0.10.1}/langroid/language_models/prompt_formatter/hf_formatter.py +0 -0
  84. {langroid-0.10.0 → langroid-0.10.1}/langroid/language_models/prompt_formatter/llama2_formatter.py +0 -0
  85. {langroid-0.10.0 → langroid-0.10.1}/langroid/language_models/utils.py +0 -0
  86. {langroid-0.10.0 → langroid-0.10.1}/langroid/mytypes.py +0 -0
  87. {langroid-0.10.0 → langroid-0.10.1}/langroid/parsing/__init__.py +0 -0
  88. {langroid-0.10.0 → langroid-0.10.1}/langroid/parsing/agent_chats.py +0 -0
  89. {langroid-0.10.0 → langroid-0.10.1}/langroid/parsing/code-parsing.md +0 -0
  90. {langroid-0.10.0 → langroid-0.10.1}/langroid/parsing/config.py +0 -0
  91. {langroid-0.10.0 → langroid-0.10.1}/langroid/parsing/document_parser.py +0 -0
  92. {langroid-0.10.0 → langroid-0.10.1}/langroid/parsing/image_text.py +0 -0
  93. {langroid-0.10.0 → langroid-0.10.1}/langroid/parsing/para_sentence_split.py +0 -0
  94. {langroid-0.10.0 → langroid-0.10.1}/langroid/parsing/parse_json.py +0 -0
  95. {langroid-0.10.0 → langroid-0.10.1}/langroid/parsing/parser.py +0 -0
  96. {langroid-0.10.0 → langroid-0.10.1}/langroid/parsing/repo_loader.py +0 -0
  97. {langroid-0.10.0 → langroid-0.10.1}/langroid/parsing/routing.py +0 -0
  98. {langroid-0.10.0 → langroid-0.10.1}/langroid/parsing/search.py +0 -0
  99. {langroid-0.10.0 → langroid-0.10.1}/langroid/parsing/spider.py +0 -0
  100. {langroid-0.10.0 → langroid-0.10.1}/langroid/parsing/table_loader.py +0 -0
  101. {langroid-0.10.0 → langroid-0.10.1}/langroid/parsing/url_loader.py +0 -0
  102. {langroid-0.10.0 → langroid-0.10.1}/langroid/parsing/url_loader_cookies.py +0 -0
  103. {langroid-0.10.0 → langroid-0.10.1}/langroid/parsing/urls.py +0 -0
  104. {langroid-0.10.0 → langroid-0.10.1}/langroid/parsing/utils.py +0 -0
  105. {langroid-0.10.0 → langroid-0.10.1}/langroid/parsing/web_search.py +0 -0
  106. {langroid-0.10.0 → langroid-0.10.1}/langroid/prompts/__init__.py +0 -0
  107. {langroid-0.10.0 → langroid-0.10.1}/langroid/prompts/chat-gpt4-system-prompt.md +0 -0
  108. {langroid-0.10.0 → langroid-0.10.1}/langroid/prompts/dialog.py +0 -0
  109. {langroid-0.10.0 → langroid-0.10.1}/langroid/prompts/prompts_config.py +0 -0
  110. {langroid-0.10.0 → langroid-0.10.1}/langroid/prompts/templates.py +0 -0
  111. {langroid-0.10.0 → langroid-0.10.1}/langroid/pydantic_v1/__init__.py +0 -0
  112. {langroid-0.10.0 → langroid-0.10.1}/langroid/pydantic_v1/main.py +0 -0
  113. {langroid-0.10.0 → langroid-0.10.1}/langroid/utils/__init__.py +0 -0
  114. {langroid-0.10.0 → langroid-0.10.1}/langroid/utils/algorithms/__init__.py +0 -0
  115. {langroid-0.10.0 → langroid-0.10.1}/langroid/utils/algorithms/graph.py +0 -0
  116. {langroid-0.10.0 → langroid-0.10.1}/langroid/utils/configuration.py +0 -0
  117. {langroid-0.10.0 → langroid-0.10.1}/langroid/utils/constants.py +0 -0
  118. {langroid-0.10.0 → langroid-0.10.1}/langroid/utils/docker.py +0 -0
  119. {langroid-0.10.0 → langroid-0.10.1}/langroid/utils/globals.py +0 -0
  120. {langroid-0.10.0 → langroid-0.10.1}/langroid/utils/llms/__init__.py +0 -0
  121. {langroid-0.10.0 → langroid-0.10.1}/langroid/utils/llms/strings.py +0 -0
  122. {langroid-0.10.0 → langroid-0.10.1}/langroid/utils/logging.py +0 -0
  123. {langroid-0.10.0 → langroid-0.10.1}/langroid/utils/object_registry.py +0 -0
  124. {langroid-0.10.0 → langroid-0.10.1}/langroid/utils/output/__init__.py +0 -0
  125. {langroid-0.10.0 → langroid-0.10.1}/langroid/utils/output/citations.py +0 -0
  126. {langroid-0.10.0 → langroid-0.10.1}/langroid/utils/output/printing.py +0 -0
  127. {langroid-0.10.0 → langroid-0.10.1}/langroid/utils/output/status.py +0 -0
  128. {langroid-0.10.0 → langroid-0.10.1}/langroid/utils/pandas_utils.py +0 -0
  129. {langroid-0.10.0 → langroid-0.10.1}/langroid/utils/pydantic_utils.py +0 -0
  130. {langroid-0.10.0 → langroid-0.10.1}/langroid/utils/system.py +0 -0
  131. {langroid-0.10.0 → langroid-0.10.1}/langroid/utils/web/__init__.py +0 -0
  132. {langroid-0.10.0 → langroid-0.10.1}/langroid/utils/web/login.py +0 -0
  133. {langroid-0.10.0 → langroid-0.10.1}/langroid/vector_store/__init__.py +0 -0
  134. {langroid-0.10.0 → langroid-0.10.1}/langroid/vector_store/base.py +0 -0
  135. {langroid-0.10.0 → langroid-0.10.1}/langroid/vector_store/chromadb.py +0 -0
  136. {langroid-0.10.0 → langroid-0.10.1}/langroid/vector_store/lancedb.py +0 -0
  137. {langroid-0.10.0 → langroid-0.10.1}/langroid/vector_store/meilisearch.py +0 -0
  138. {langroid-0.10.0 → langroid-0.10.1}/langroid/vector_store/momento.py +0 -0
  139. {langroid-0.10.0 → langroid-0.10.1}/langroid/vector_store/qdrant_cloud.py +0 -0
  140. {langroid-0.10.0 → langroid-0.10.1}/langroid/vector_store/qdrantdb.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: langroid
3
- Version: 0.10.0
3
+ Version: 0.10.1
4
4
  Summary: Harness LLMs with Multi-Agent Programming
5
5
  License: MIT
6
6
  Author: Prasad Chalasani
@@ -162,6 +162,9 @@ into simplifying the developer experience; it does not use `Langchain`.
162
162
  :fire: See this [Intro to Langroid](https://lancedb.substack.com/p/langoid-multi-agent-programming-framework)
163
163
  blog post from the LanceDB team
164
164
 
165
+ :fire: Just published in ML for Healthcare (2024): a Langroid-based Multi-Agent RAG system for
166
+ pharmacovigilance, see [blog post](https://langroid.github.io/langroid/blog/2024/08/12/malade-multi-agent-architecture-for-pharmacovigilance/)
167
+
165
168
 
166
169
  We welcome contributions -- See the [contributions](./CONTRIBUTING.md) document
167
170
  for ideas on what to contribute.
@@ -55,6 +55,9 @@ into simplifying the developer experience; it does not use `Langchain`.
55
55
  :fire: See this [Intro to Langroid](https://lancedb.substack.com/p/langoid-multi-agent-programming-framework)
56
56
  blog post from the LanceDB team
57
57
 
58
+ :fire: Just published in ML for Healthcare (2024): a Langroid-based Multi-Agent RAG system for
59
+ pharmacovigilance, see [blog post](https://langroid.github.io/langroid/blog/2024/08/12/malade-multi-agent-architecture-for-pharmacovigilance/)
60
+
58
61
 
59
62
  We welcome contributions -- See the [contributions](./CONTRIBUTING.md) document
60
63
  for ideas on what to contribute.
@@ -1069,9 +1069,12 @@ class Agent(ABC):
1069
1069
  return None
1070
1070
  if len(tools) == 0:
1071
1071
  fallback_result = self.handle_message_fallback(msg)
1072
- if fallback_result is not None and isinstance(fallback_result, ToolMessage):
1073
- return self.create_agent_response(tool_messages=[fallback_result])
1074
- return fallback_result
1072
+ if fallback_result is None:
1073
+ return None
1074
+ return self._process_handle_message_result(
1075
+ fallback_result,
1076
+ chat_doc=msg if isinstance(msg, ChatDocument) else None,
1077
+ )
1075
1078
  has_ids = all([t.id != "" for t in tools])
1076
1079
  chat_doc = msg if isinstance(msg, ChatDocument) else None
1077
1080
 
@@ -1162,9 +1165,7 @@ class Agent(ABC):
1162
1165
  final = "\n\n".join(str_results)
1163
1166
  return final
1164
1167
 
1165
- def handle_message_fallback(
1166
- self, msg: str | ChatDocument
1167
- ) -> str | ChatDocument | None:
1168
+ def handle_message_fallback(self, msg: str | ChatDocument) -> Any:
1168
1169
  """
1169
1170
  Fallback method for the "no-tools" scenario.
1170
1171
  This method can be overridden by subclasses, e.g.,
@@ -1174,8 +1175,7 @@ class Agent(ABC):
1174
1175
  Args:
1175
1176
  msg (str | ChatDocument): The input msg to handle
1176
1177
  Returns:
1177
- str: The result of the handler method in string form so it can
1178
- be handled by LLM
1178
+ Any: The result of the handler method
1179
1179
  """
1180
1180
  return None
1181
1181
 
@@ -1261,6 +1261,52 @@ class Agent(ABC):
1261
1261
  raise ve
1262
1262
  return message
1263
1263
 
1264
+ def _process_handle_message_result(
1265
+ self,
1266
+ msg: Any,
1267
+ orig_tool_name: str | None = None,
1268
+ chat_doc: Optional[ChatDocument] = None,
1269
+ ) -> None | str | ChatDocument:
1270
+ """
1271
+ Process result of agent_response or tool handler, or handle_message_fallback.
1272
+ """
1273
+ if isinstance(msg, ToolMessage):
1274
+ # result is a ToolMessage, so...
1275
+ result_tool_name = msg.default_value("request")
1276
+ if result_tool_name in self.llm_tools_handled and (
1277
+ orig_tool_name is None or orig_tool_name != result_tool_name
1278
+ ):
1279
+ # TODO: do we need to remove the tool message from the chat_doc?
1280
+ # if (chat_doc is not None and
1281
+ # msg in chat_doc.tool_messages):
1282
+ # chat_doc.tool_messages.remove(msg)
1283
+ # if we can handle it, do so
1284
+ result = self.handle_tool_message(msg, chat_doc=chat_doc)
1285
+ else:
1286
+ # else wrap it in an agent response and return it so
1287
+ # orchestrator can find a respondent
1288
+ result = self.create_agent_response(tool_messages=[msg])
1289
+ elif isinstance(msg, (ChatDocument, str)):
1290
+ result = msg
1291
+ elif isinstance(msg, BaseModel):
1292
+ result = msg.json()
1293
+ else:
1294
+ # last resort: use json.dumps() or str() to make it a str
1295
+ try:
1296
+ result = json.dumps(msg)
1297
+ except Exception:
1298
+ try:
1299
+ result = str(msg)
1300
+ except Exception as e:
1301
+ logger.error(
1302
+ f"""
1303
+ Error converting msg handler result to str: {e}",
1304
+ """,
1305
+ exc_info=True,
1306
+ )
1307
+ result = None
1308
+ return result
1309
+
1264
1310
  def handle_tool_message(
1265
1311
  self,
1266
1312
  tool: ToolMessage,
@@ -1290,42 +1336,9 @@ class Agent(ABC):
1290
1336
  maybe_result = handler_method(tool, chat_doc=chat_doc)
1291
1337
  else:
1292
1338
  maybe_result = handler_method(tool)
1293
- if isinstance(maybe_result, ToolMessage):
1294
- # result is a ToolMessage, so...
1295
- result_tool_name = maybe_result.default_value("request")
1296
- if (
1297
- result_tool_name in self.llm_tools_handled
1298
- and tool_name != result_tool_name
1299
- ):
1300
- # TODO: do we need to remove the tool message from the chat_doc?
1301
- # if (chat_doc is not None and
1302
- # maybe_result in chat_doc.tool_messages):
1303
- # chat_doc.tool_messages.remove(maybe_result)
1304
- # if we can handle it, do so
1305
- result = self.handle_tool_message(maybe_result, chat_doc=chat_doc)
1306
- else:
1307
- # else wrap it in an agent response and return it so
1308
- # orchestrator can find a respondent
1309
- result = self.create_agent_response(tool_messages=[maybe_result])
1310
- elif isinstance(maybe_result, (ChatDocument, str)):
1311
- result = maybe_result
1312
- elif isinstance(maybe_result, BaseModel):
1313
- result = maybe_result.json()
1314
- else:
1315
- # last resort: use json.dumps() or str() to make it a str
1316
- try:
1317
- result = json.dumps(maybe_result)
1318
- except Exception:
1319
- try:
1320
- result = str(maybe_result)
1321
- except Exception as e:
1322
- logger.error(
1323
- f"""
1324
- Error converting result of {tool_name} to str: {e}",
1325
- """,
1326
- exc_info=True,
1327
- )
1328
- result = None
1339
+ result = self._process_handle_message_result(
1340
+ maybe_result, tool_name, chat_doc
1341
+ )
1329
1342
  except Exception as e:
1330
1343
  # raise the error here since we are sure it's
1331
1344
  # not a pydantic validation error,
@@ -51,11 +51,13 @@ class LanceRAGTaskCreator:
51
51
  critic_name=critic_name,
52
52
  doc_agent_name=doc_agent_name,
53
53
  doc_schema=agent._get_clean_vecdb_schema(),
54
+ llm=agent.config.llm,
54
55
  )
55
56
  query_plan_agent_config.set_system_message()
56
57
 
57
58
  critic_config = QueryPlanCriticConfig(
58
59
  doc_schema=agent._get_clean_vecdb_schema(),
60
+ llm=agent.config.llm,
59
61
  )
60
62
  critic_config.set_system_message()
61
63
 
@@ -296,6 +296,17 @@ class FinalResultTool(ToolMessage):
296
296
 
297
297
  request: str = ""
298
298
  purpose: str = "Ignored; Wrapper for a structured message"
299
+ id: str = "" # placeholder for OpenAI-API tool_call_id
300
+
301
+ _handle_only: bool = False # only allow handling, but not use (LLM-generation)?
299
302
 
300
303
  class Config:
301
304
  extra = Extra.allow
305
+ # only HANDLING allowed, NOT "use" (i.e LLM generation)
306
+ handle_only: bool = False
307
+ arbitrary_types_allowed = False
308
+ validate_all = True
309
+ validate_assignment = True
310
+ # do not include these fields in the generated schema
311
+ # since we don't require the LLM to specify them
312
+ schema_extra = {"exclude": {"purpose", "id"}}
@@ -115,5 +115,7 @@ class CodeParser:
115
115
  for d in docs
116
116
  if d.metadata.language in self.config.extensions # type: ignore
117
117
  ]
118
+ if len(chunked_docs) == 0:
119
+ return []
118
120
  # collapse the list of lists into a single list
119
121
  return reduce(lambda x, y: x + y, chunked_docs)
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "langroid"
3
- version = "0.10.0"
3
+ version = "0.10.1"
4
4
  description = "Harness LLMs with Multi-Agent Programming"
5
5
  authors = ["Prasad Chalasani <pchalasani@gmail.com>"]
6
6
  readme = "README.md"
File without changes
File without changes
File without changes