langroid 0.56.1__tar.gz → 0.56.3__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 (144) hide show
  1. {langroid-0.56.1 → langroid-0.56.3}/PKG-INFO +5 -1
  2. {langroid-0.56.1 → langroid-0.56.3}/README.md +4 -0
  3. {langroid-0.56.1 → langroid-0.56.3}/langroid/agent/special/table_chat_agent.py +7 -0
  4. {langroid-0.56.1 → langroid-0.56.3}/langroid/agent/tools/task_tool.py +18 -5
  5. {langroid-0.56.1 → langroid-0.56.3}/langroid/utils/pandas_utils.py +1 -0
  6. {langroid-0.56.1 → langroid-0.56.3}/pyproject.toml +1 -1
  7. {langroid-0.56.1 → langroid-0.56.3}/.gitignore +0 -0
  8. {langroid-0.56.1 → langroid-0.56.3}/LICENSE +0 -0
  9. {langroid-0.56.1 → langroid-0.56.3}/langroid/__init__.py +0 -0
  10. {langroid-0.56.1 → langroid-0.56.3}/langroid/agent/__init__.py +0 -0
  11. {langroid-0.56.1 → langroid-0.56.3}/langroid/agent/base.py +0 -0
  12. {langroid-0.56.1 → langroid-0.56.3}/langroid/agent/batch.py +0 -0
  13. {langroid-0.56.1 → langroid-0.56.3}/langroid/agent/callbacks/__init__.py +0 -0
  14. {langroid-0.56.1 → langroid-0.56.3}/langroid/agent/callbacks/chainlit.py +0 -0
  15. {langroid-0.56.1 → langroid-0.56.3}/langroid/agent/chat_agent.py +0 -0
  16. {langroid-0.56.1 → langroid-0.56.3}/langroid/agent/chat_document.py +0 -0
  17. {langroid-0.56.1 → langroid-0.56.3}/langroid/agent/done_sequence_parser.py +0 -0
  18. {langroid-0.56.1 → langroid-0.56.3}/langroid/agent/openai_assistant.py +0 -0
  19. {langroid-0.56.1 → langroid-0.56.3}/langroid/agent/special/__init__.py +0 -0
  20. {langroid-0.56.1 → langroid-0.56.3}/langroid/agent/special/arangodb/__init__.py +0 -0
  21. {langroid-0.56.1 → langroid-0.56.3}/langroid/agent/special/arangodb/arangodb_agent.py +0 -0
  22. {langroid-0.56.1 → langroid-0.56.3}/langroid/agent/special/arangodb/system_messages.py +0 -0
  23. {langroid-0.56.1 → langroid-0.56.3}/langroid/agent/special/arangodb/tools.py +0 -0
  24. {langroid-0.56.1 → langroid-0.56.3}/langroid/agent/special/arangodb/utils.py +0 -0
  25. {langroid-0.56.1 → langroid-0.56.3}/langroid/agent/special/doc_chat_agent.py +0 -0
  26. {langroid-0.56.1 → langroid-0.56.3}/langroid/agent/special/doc_chat_task.py +0 -0
  27. {langroid-0.56.1 → langroid-0.56.3}/langroid/agent/special/lance_doc_chat_agent.py +0 -0
  28. {langroid-0.56.1 → langroid-0.56.3}/langroid/agent/special/lance_rag/__init__.py +0 -0
  29. {langroid-0.56.1 → langroid-0.56.3}/langroid/agent/special/lance_rag/critic_agent.py +0 -0
  30. {langroid-0.56.1 → langroid-0.56.3}/langroid/agent/special/lance_rag/lance_rag_task.py +0 -0
  31. {langroid-0.56.1 → langroid-0.56.3}/langroid/agent/special/lance_rag/query_planner_agent.py +0 -0
  32. {langroid-0.56.1 → langroid-0.56.3}/langroid/agent/special/lance_tools.py +0 -0
  33. {langroid-0.56.1 → langroid-0.56.3}/langroid/agent/special/neo4j/__init__.py +0 -0
  34. {langroid-0.56.1 → langroid-0.56.3}/langroid/agent/special/neo4j/csv_kg_chat.py +0 -0
  35. {langroid-0.56.1 → langroid-0.56.3}/langroid/agent/special/neo4j/neo4j_chat_agent.py +0 -0
  36. {langroid-0.56.1 → langroid-0.56.3}/langroid/agent/special/neo4j/system_messages.py +0 -0
  37. {langroid-0.56.1 → langroid-0.56.3}/langroid/agent/special/neo4j/tools.py +0 -0
  38. {langroid-0.56.1 → langroid-0.56.3}/langroid/agent/special/relevance_extractor_agent.py +0 -0
  39. {langroid-0.56.1 → langroid-0.56.3}/langroid/agent/special/retriever_agent.py +0 -0
  40. {langroid-0.56.1 → langroid-0.56.3}/langroid/agent/special/sql/__init__.py +0 -0
  41. {langroid-0.56.1 → langroid-0.56.3}/langroid/agent/special/sql/sql_chat_agent.py +0 -0
  42. {langroid-0.56.1 → langroid-0.56.3}/langroid/agent/special/sql/utils/__init__.py +0 -0
  43. {langroid-0.56.1 → langroid-0.56.3}/langroid/agent/special/sql/utils/description_extractors.py +0 -0
  44. {langroid-0.56.1 → langroid-0.56.3}/langroid/agent/special/sql/utils/populate_metadata.py +0 -0
  45. {langroid-0.56.1 → langroid-0.56.3}/langroid/agent/special/sql/utils/system_message.py +0 -0
  46. {langroid-0.56.1 → langroid-0.56.3}/langroid/agent/special/sql/utils/tools.py +0 -0
  47. {langroid-0.56.1 → langroid-0.56.3}/langroid/agent/task.py +0 -0
  48. {langroid-0.56.1 → langroid-0.56.3}/langroid/agent/tool_message.py +0 -0
  49. {langroid-0.56.1 → langroid-0.56.3}/langroid/agent/tools/__init__.py +0 -0
  50. {langroid-0.56.1 → langroid-0.56.3}/langroid/agent/tools/duckduckgo_search_tool.py +0 -0
  51. {langroid-0.56.1 → langroid-0.56.3}/langroid/agent/tools/exa_search_tool.py +0 -0
  52. {langroid-0.56.1 → langroid-0.56.3}/langroid/agent/tools/file_tools.py +0 -0
  53. {langroid-0.56.1 → langroid-0.56.3}/langroid/agent/tools/google_search_tool.py +0 -0
  54. {langroid-0.56.1 → langroid-0.56.3}/langroid/agent/tools/mcp/__init__.py +0 -0
  55. {langroid-0.56.1 → langroid-0.56.3}/langroid/agent/tools/mcp/decorators.py +0 -0
  56. {langroid-0.56.1 → langroid-0.56.3}/langroid/agent/tools/mcp/fastmcp_client.py +0 -0
  57. {langroid-0.56.1 → langroid-0.56.3}/langroid/agent/tools/metaphor_search_tool.py +0 -0
  58. {langroid-0.56.1 → langroid-0.56.3}/langroid/agent/tools/orchestration.py +0 -0
  59. {langroid-0.56.1 → langroid-0.56.3}/langroid/agent/tools/recipient_tool.py +0 -0
  60. {langroid-0.56.1 → langroid-0.56.3}/langroid/agent/tools/retrieval_tool.py +0 -0
  61. {langroid-0.56.1 → langroid-0.56.3}/langroid/agent/tools/rewind_tool.py +0 -0
  62. {langroid-0.56.1 → langroid-0.56.3}/langroid/agent/tools/segment_extract_tool.py +0 -0
  63. {langroid-0.56.1 → langroid-0.56.3}/langroid/agent/tools/tavily_search_tool.py +0 -0
  64. {langroid-0.56.1 → langroid-0.56.3}/langroid/agent/xml_tool_message.py +0 -0
  65. {langroid-0.56.1 → langroid-0.56.3}/langroid/cachedb/__init__.py +0 -0
  66. {langroid-0.56.1 → langroid-0.56.3}/langroid/cachedb/base.py +0 -0
  67. {langroid-0.56.1 → langroid-0.56.3}/langroid/cachedb/redis_cachedb.py +0 -0
  68. {langroid-0.56.1 → langroid-0.56.3}/langroid/embedding_models/__init__.py +0 -0
  69. {langroid-0.56.1 → langroid-0.56.3}/langroid/embedding_models/base.py +0 -0
  70. {langroid-0.56.1 → langroid-0.56.3}/langroid/embedding_models/models.py +0 -0
  71. {langroid-0.56.1 → langroid-0.56.3}/langroid/embedding_models/protoc/__init__.py +0 -0
  72. {langroid-0.56.1 → langroid-0.56.3}/langroid/embedding_models/protoc/embeddings.proto +0 -0
  73. {langroid-0.56.1 → langroid-0.56.3}/langroid/embedding_models/protoc/embeddings_pb2.py +0 -0
  74. {langroid-0.56.1 → langroid-0.56.3}/langroid/embedding_models/protoc/embeddings_pb2.pyi +0 -0
  75. {langroid-0.56.1 → langroid-0.56.3}/langroid/embedding_models/protoc/embeddings_pb2_grpc.py +0 -0
  76. {langroid-0.56.1 → langroid-0.56.3}/langroid/embedding_models/remote_embeds.py +0 -0
  77. {langroid-0.56.1 → langroid-0.56.3}/langroid/exceptions.py +0 -0
  78. {langroid-0.56.1 → langroid-0.56.3}/langroid/language_models/__init__.py +0 -0
  79. {langroid-0.56.1 → langroid-0.56.3}/langroid/language_models/azure_openai.py +0 -0
  80. {langroid-0.56.1 → langroid-0.56.3}/langroid/language_models/base.py +0 -0
  81. {langroid-0.56.1 → langroid-0.56.3}/langroid/language_models/config.py +0 -0
  82. {langroid-0.56.1 → langroid-0.56.3}/langroid/language_models/mock_lm.py +0 -0
  83. {langroid-0.56.1 → langroid-0.56.3}/langroid/language_models/model_info.py +0 -0
  84. {langroid-0.56.1 → langroid-0.56.3}/langroid/language_models/openai_gpt.py +0 -0
  85. {langroid-0.56.1 → langroid-0.56.3}/langroid/language_models/prompt_formatter/__init__.py +0 -0
  86. {langroid-0.56.1 → langroid-0.56.3}/langroid/language_models/prompt_formatter/base.py +0 -0
  87. {langroid-0.56.1 → langroid-0.56.3}/langroid/language_models/prompt_formatter/hf_formatter.py +0 -0
  88. {langroid-0.56.1 → langroid-0.56.3}/langroid/language_models/prompt_formatter/llama2_formatter.py +0 -0
  89. {langroid-0.56.1 → langroid-0.56.3}/langroid/language_models/provider_params.py +0 -0
  90. {langroid-0.56.1 → langroid-0.56.3}/langroid/language_models/utils.py +0 -0
  91. {langroid-0.56.1 → langroid-0.56.3}/langroid/mcp/__init__.py +0 -0
  92. {langroid-0.56.1 → langroid-0.56.3}/langroid/mcp/server/__init__.py +0 -0
  93. {langroid-0.56.1 → langroid-0.56.3}/langroid/mytypes.py +0 -0
  94. {langroid-0.56.1 → langroid-0.56.3}/langroid/parsing/__init__.py +0 -0
  95. {langroid-0.56.1 → langroid-0.56.3}/langroid/parsing/agent_chats.py +0 -0
  96. {langroid-0.56.1 → langroid-0.56.3}/langroid/parsing/code_parser.py +0 -0
  97. {langroid-0.56.1 → langroid-0.56.3}/langroid/parsing/document_parser.py +0 -0
  98. {langroid-0.56.1 → langroid-0.56.3}/langroid/parsing/file_attachment.py +0 -0
  99. {langroid-0.56.1 → langroid-0.56.3}/langroid/parsing/md_parser.py +0 -0
  100. {langroid-0.56.1 → langroid-0.56.3}/langroid/parsing/para_sentence_split.py +0 -0
  101. {langroid-0.56.1 → langroid-0.56.3}/langroid/parsing/parse_json.py +0 -0
  102. {langroid-0.56.1 → langroid-0.56.3}/langroid/parsing/parser.py +0 -0
  103. {langroid-0.56.1 → langroid-0.56.3}/langroid/parsing/pdf_utils.py +0 -0
  104. {langroid-0.56.1 → langroid-0.56.3}/langroid/parsing/repo_loader.py +0 -0
  105. {langroid-0.56.1 → langroid-0.56.3}/langroid/parsing/routing.py +0 -0
  106. {langroid-0.56.1 → langroid-0.56.3}/langroid/parsing/search.py +0 -0
  107. {langroid-0.56.1 → langroid-0.56.3}/langroid/parsing/spider.py +0 -0
  108. {langroid-0.56.1 → langroid-0.56.3}/langroid/parsing/table_loader.py +0 -0
  109. {langroid-0.56.1 → langroid-0.56.3}/langroid/parsing/url_loader.py +0 -0
  110. {langroid-0.56.1 → langroid-0.56.3}/langroid/parsing/urls.py +0 -0
  111. {langroid-0.56.1 → langroid-0.56.3}/langroid/parsing/utils.py +0 -0
  112. {langroid-0.56.1 → langroid-0.56.3}/langroid/parsing/web_search.py +0 -0
  113. {langroid-0.56.1 → langroid-0.56.3}/langroid/prompts/__init__.py +0 -0
  114. {langroid-0.56.1 → langroid-0.56.3}/langroid/prompts/dialog.py +0 -0
  115. {langroid-0.56.1 → langroid-0.56.3}/langroid/prompts/prompts_config.py +0 -0
  116. {langroid-0.56.1 → langroid-0.56.3}/langroid/prompts/templates.py +0 -0
  117. {langroid-0.56.1 → langroid-0.56.3}/langroid/py.typed +0 -0
  118. {langroid-0.56.1 → langroid-0.56.3}/langroid/pydantic_v1/__init__.py +0 -0
  119. {langroid-0.56.1 → langroid-0.56.3}/langroid/pydantic_v1/main.py +0 -0
  120. {langroid-0.56.1 → langroid-0.56.3}/langroid/utils/__init__.py +0 -0
  121. {langroid-0.56.1 → langroid-0.56.3}/langroid/utils/algorithms/__init__.py +0 -0
  122. {langroid-0.56.1 → langroid-0.56.3}/langroid/utils/algorithms/graph.py +0 -0
  123. {langroid-0.56.1 → langroid-0.56.3}/langroid/utils/configuration.py +0 -0
  124. {langroid-0.56.1 → langroid-0.56.3}/langroid/utils/constants.py +0 -0
  125. {langroid-0.56.1 → langroid-0.56.3}/langroid/utils/git_utils.py +0 -0
  126. {langroid-0.56.1 → langroid-0.56.3}/langroid/utils/globals.py +0 -0
  127. {langroid-0.56.1 → langroid-0.56.3}/langroid/utils/logging.py +0 -0
  128. {langroid-0.56.1 → langroid-0.56.3}/langroid/utils/object_registry.py +0 -0
  129. {langroid-0.56.1 → langroid-0.56.3}/langroid/utils/output/__init__.py +0 -0
  130. {langroid-0.56.1 → langroid-0.56.3}/langroid/utils/output/citations.py +0 -0
  131. {langroid-0.56.1 → langroid-0.56.3}/langroid/utils/output/printing.py +0 -0
  132. {langroid-0.56.1 → langroid-0.56.3}/langroid/utils/output/status.py +0 -0
  133. {langroid-0.56.1 → langroid-0.56.3}/langroid/utils/pydantic_utils.py +0 -0
  134. {langroid-0.56.1 → langroid-0.56.3}/langroid/utils/system.py +0 -0
  135. {langroid-0.56.1 → langroid-0.56.3}/langroid/utils/types.py +0 -0
  136. {langroid-0.56.1 → langroid-0.56.3}/langroid/vector_store/__init__.py +0 -0
  137. {langroid-0.56.1 → langroid-0.56.3}/langroid/vector_store/base.py +0 -0
  138. {langroid-0.56.1 → langroid-0.56.3}/langroid/vector_store/chromadb.py +0 -0
  139. {langroid-0.56.1 → langroid-0.56.3}/langroid/vector_store/lancedb.py +0 -0
  140. {langroid-0.56.1 → langroid-0.56.3}/langroid/vector_store/meilisearch.py +0 -0
  141. {langroid-0.56.1 → langroid-0.56.3}/langroid/vector_store/pineconedb.py +0 -0
  142. {langroid-0.56.1 → langroid-0.56.3}/langroid/vector_store/postgres.py +0 -0
  143. {langroid-0.56.1 → langroid-0.56.3}/langroid/vector_store/qdrantdb.py +0 -0
  144. {langroid-0.56.1 → langroid-0.56.3}/langroid/vector_store/weaviatedb.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: langroid
3
- Version: 0.56.1
3
+ Version: 0.56.3
4
4
  Summary: Harness LLMs with Multi-Agent Programming
5
5
  Author-email: Prasad Chalasani <pchalasani@gmail.com>
6
6
  License: MIT
@@ -345,6 +345,10 @@ teacher_task.run()
345
345
  <summary> <b>Click to expand</b></summary>
346
346
 
347
347
  - **Jun 2025:**
348
+ - [0.56.0](https://github.com/langroid/langroid/releases/tag/0.56.0) `TaskTool` for delegating tasks to sub-agents -
349
+ enables agents to spawn sub-agents with specific tools and configurations.
350
+ - [0.55.0](https://github.com/langroid/langroid/releases/tag/0.55.0) Event-based task termination with `done_sequences` -
351
+ declarative task completion using event patterns.
348
352
  - [0.54.0](https://github.com/langroid/langroid/releases/tag/0.54.0) Portkey AI Gateway support - access 200+ models
349
353
  across providers through unified API with caching, retries, observability.
350
354
  - **Mar-Apr 2025:**
@@ -144,6 +144,10 @@ teacher_task.run()
144
144
  <summary> <b>Click to expand</b></summary>
145
145
 
146
146
  - **Jun 2025:**
147
+ - [0.56.0](https://github.com/langroid/langroid/releases/tag/0.56.0) `TaskTool` for delegating tasks to sub-agents -
148
+ enables agents to spawn sub-agents with specific tools and configurations.
149
+ - [0.55.0](https://github.com/langroid/langroid/releases/tag/0.55.0) Event-based task termination with `done_sequences` -
150
+ declarative task completion using event patterns.
147
151
  - [0.54.0](https://github.com/langroid/langroid/releases/tag/0.54.0) Portkey AI Gateway support - access 200+ models
148
152
  across providers through unified API with caching, retries, observability.
149
153
  - **Mar-Apr 2025:**
@@ -50,6 +50,9 @@ Here is a summary of the dataframe:
50
50
  Do not assume any columns other than those shown.
51
51
  In the expression you submit to the `pandas_eval` tool/function,
52
52
  you are allowed to use the variable 'df' to refer to the dataframe.
53
+ IMPORTANT: You can only use expressions that return a value - assignment statements
54
+ (like df['col'] = value or temp = df['col']) are NOT allowed for security reasons.
55
+ To modify data, use methods like df.assign() that return a new dataframe.
53
56
 
54
57
  Sometimes you may not be able to answer the question in a single call to `pandas_eval`,
55
58
  so you can use a series of calls to `pandas_eval` to build up the answer.
@@ -63,6 +66,10 @@ Once you have the answer to the question, possibly after a few steps,
63
66
  say {DONE} and PRESENT THE ANSWER TO ME; do not just say {DONE}.
64
67
  If you receive an error message,
65
68
  try using the `pandas_eval` tool/function again with the corrected code.
69
+ If the error is due to an assignment statement (e.g., df['col'] = ...),
70
+ use df.assign(col=...) instead, which returns a new dataframe with the modified column.
71
+ For example: instead of df['airline'] = df['airline'].str.replace('*', ''),
72
+ use df.assign(airline=df['airline'].str.replace('*', '')).
66
73
 
67
74
  VERY IMPORTANT: When using the `pandas_eval` tool/function, DO NOT EXPLAIN ANYTHING,
68
75
  SIMPLY USE THE TOOL, with the CODE.
@@ -3,6 +3,7 @@ TaskTool: A tool that allows agents to delegate a task to a sub-agent with
3
3
  specific tools enabled.
4
4
  """
5
5
 
6
+ import uuid
6
7
  from typing import List, Optional
7
8
 
8
9
  import langroid.language_models as lm
@@ -17,6 +18,10 @@ from langroid.pydantic_v1 import Field
17
18
  class TaskTool(ToolMessage):
18
19
  """
19
20
  Tool that spawns a sub-agent with specified tools to handle a task.
21
+
22
+ The sub-agent can be given a custom name for identification in logs.
23
+ If no name is provided, a random unique name starting with 'agent'
24
+ will be generated.
20
25
  """
21
26
 
22
27
  request: str = "task_tool"
@@ -24,11 +29,7 @@ class TaskTool(ToolMessage):
24
29
  <HowToUse>
25
30
  Use this tool to delegate a task to a sub-agent with specific tools enabled.
26
31
  The sub-agent will be created with the specified tools and will run the task
27
- non-interactively. Here is how to set the fields:
28
-
29
- - `system_message`:
30
-
31
-
32
+ non-interactively.
32
33
  """
33
34
 
34
35
  # Parameters for the agent tool
@@ -87,6 +88,14 @@ class TaskTool(ToolMessage):
87
88
  default=None,
88
89
  description="Optional max iterations for the sub-agent to run the task",
89
90
  )
91
+ agent_name: Optional[str] = Field(
92
+ default=None,
93
+ description="""
94
+ Optional name for the sub-agent. This will be used as the agent's name
95
+ in logs and for identification purposes. If not provided, a random unique
96
+ name starting with 'agent' will be generated.
97
+ """,
98
+ )
90
99
 
91
100
  def _set_up_task(self, agent: ChatAgent) -> Task:
92
101
  """
@@ -95,6 +104,9 @@ class TaskTool(ToolMessage):
95
104
  Args:
96
105
  agent: The parent ChatAgent that is handling this tool
97
106
  """
107
+ # Generate a random name if not provided
108
+ agent_name = self.agent_name or f"agent-{str(uuid.uuid4())[:8]}"
109
+
98
110
  # Create chat agent config with system message if provided
99
111
  # TODO: Maybe we just copy the parent agent's config and override chat_model?
100
112
  # -- but what if parent agent has a MockLMConfig?
@@ -102,6 +114,7 @@ class TaskTool(ToolMessage):
102
114
  chat_model=self.model or "gpt-4.1-mini", # Default model if not specified
103
115
  )
104
116
  config = ChatAgentConfig(
117
+ name=agent_name,
105
118
  llm=llm_config,
106
119
  system_message=f"""
107
120
  {self.system_message}
@@ -16,6 +16,7 @@ COMMON_USE_DF_METHODS = {
16
16
  "any",
17
17
  "apply",
18
18
  "applymap",
19
+ "assign",
19
20
  "at",
20
21
  "at_time",
21
22
  "between_time",
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "langroid"
3
- version = "0.56.1"
3
+ version = "0.56.3"
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