langroid 0.22.3__py3-none-any.whl → 0.22.5__py3-none-any.whl
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.
- langroid/agent/base.py +7 -4
- langroid/agent/special/sql/sql_chat_agent.py +62 -68
- langroid/agent/task.py +5 -0
- langroid/agent/tools/retrieval_tool.py +4 -1
- langroid/parsing/utils.py +4 -1
- langroid/utils/configuration.py +0 -2
- {langroid-0.22.3.dist-info → langroid-0.22.5.dist-info}/METADATA +2 -2
- {langroid-0.22.3.dist-info → langroid-0.22.5.dist-info}/RECORD +11 -11
- pyproject.toml +2 -2
- {langroid-0.22.3.dist-info → langroid-0.22.5.dist-info}/LICENSE +0 -0
- {langroid-0.22.3.dist-info → langroid-0.22.5.dist-info}/WHEEL +0 -0
langroid/agent/base.py
CHANGED
@@ -142,7 +142,7 @@ class Agent(ABC):
|
|
142
142
|
self.llm_tools_handled: Set[str] = set()
|
143
143
|
self.llm_tools_usable: Set[str] = set()
|
144
144
|
self.llm_tools_known: Set[str] = set() # all known tools, handled/used or not
|
145
|
-
self.interactive: bool
|
145
|
+
self.interactive: bool = True # may be modified by Task wrapper
|
146
146
|
self.token_stats_str = ""
|
147
147
|
self.default_human_response: Optional[str] = None
|
148
148
|
self._indent = ""
|
@@ -645,10 +645,11 @@ class Agent(ABC):
|
|
645
645
|
need_human_response = (
|
646
646
|
isinstance(msg, ChatDocument) and msg.metadata.recipient == Entity.USER
|
647
647
|
)
|
648
|
+
default_user_msg = (
|
649
|
+
(self.default_human_response or "null") if need_human_response else ""
|
650
|
+
)
|
648
651
|
|
649
|
-
|
650
|
-
|
651
|
-
if not interactive and not need_human_response:
|
652
|
+
if not self.interactive and not need_human_response:
|
652
653
|
return None
|
653
654
|
elif self.default_human_response is not None:
|
654
655
|
user_msg = self.default_human_response
|
@@ -669,6 +670,8 @@ class Agent(ABC):
|
|
669
670
|
tool_ids = []
|
670
671
|
if msg is not None and isinstance(msg, ChatDocument):
|
671
672
|
tool_ids = msg.metadata.tool_ids
|
673
|
+
|
674
|
+
user_msg = user_msg.strip() or default_user_msg.strip()
|
672
675
|
# only return non-None result if user_msg not empty
|
673
676
|
if not user_msg:
|
674
677
|
return None
|
@@ -10,11 +10,10 @@ Functionality includes:
|
|
10
10
|
import logging
|
11
11
|
from typing import Any, Dict, List, Optional, Sequence, Union
|
12
12
|
|
13
|
-
from rich import print
|
14
13
|
from rich.console import Console
|
15
14
|
|
16
15
|
from langroid.exceptions import LangroidImportError
|
17
|
-
from langroid.utils.constants import
|
16
|
+
from langroid.utils.constants import SEND_TO
|
18
17
|
|
19
18
|
try:
|
20
19
|
from sqlalchemy import MetaData, Row, create_engine, inspect, text
|
@@ -25,7 +24,7 @@ except ImportError as e:
|
|
25
24
|
raise LangroidImportError(extra="sql", error=str(e))
|
26
25
|
|
27
26
|
from langroid.agent.chat_agent import ChatAgent, ChatAgentConfig
|
28
|
-
from langroid.agent.chat_document import
|
27
|
+
from langroid.agent.chat_document import ChatDocument
|
29
28
|
from langroid.agent.special.sql.utils.description_extractors import (
|
30
29
|
extract_schema_descriptions,
|
31
30
|
)
|
@@ -43,15 +42,15 @@ from langroid.agent.special.sql.utils.tools import (
|
|
43
42
|
GetTableSchemaTool,
|
44
43
|
RunQueryTool,
|
45
44
|
)
|
46
|
-
from langroid.
|
45
|
+
from langroid.agent.tools.orchestration import DoneTool, ForwardTool
|
47
46
|
from langroid.vector_store.base import VectorStoreConfig
|
48
47
|
|
49
48
|
logger = logging.getLogger(__name__)
|
50
49
|
|
51
50
|
console = Console()
|
52
51
|
|
53
|
-
DEFAULT_SQL_CHAT_SYSTEM_MESSAGE =
|
54
|
-
{
|
52
|
+
DEFAULT_SQL_CHAT_SYSTEM_MESSAGE = """
|
53
|
+
{mode}
|
55
54
|
|
56
55
|
You do not need to attempt answering a question with just one query.
|
57
56
|
You could make a sequence of SQL queries to help you write the final query.
|
@@ -65,19 +64,24 @@ are "Male" and "Female".
|
|
65
64
|
|
66
65
|
Start by asking what I would like to know about the data.
|
67
66
|
|
68
|
-
When you have FINISHED the given query or database update task,
|
69
|
-
say {DONE} and show your answer.
|
70
|
-
|
71
67
|
"""
|
72
68
|
|
73
|
-
ADDRESSING_INSTRUCTION =
|
69
|
+
ADDRESSING_INSTRUCTION = """
|
74
70
|
IMPORTANT - Whenever you are NOT writing a SQL query, make sure you address the user
|
75
|
-
using {
|
71
|
+
using {prefix}User. You MUST use the EXACT syntax {prefix} !!!
|
76
72
|
|
77
73
|
In other words, you ALWAYS write EITHER:
|
78
74
|
- a SQL query using the `run_query` tool,
|
79
|
-
- OR address the user using {
|
80
|
-
|
75
|
+
- OR address the user using {prefix}User
|
76
|
+
"""
|
77
|
+
|
78
|
+
DONE_INSTRUCTION = f"""
|
79
|
+
When you are SURE you have the CORRECT answer to a user's query or request,
|
80
|
+
use the `{DoneTool.name()}` with `content` set to the answer or result.
|
81
|
+
If you DO NOT think you have the answer to the user's query or request,
|
82
|
+
you SHOULD NOT use the `{DoneTool.name()}` tool.
|
83
|
+
Instead, you must CONTINUE to improve your queries (tools) to get the correct answer,
|
84
|
+
and finally use the `{DoneTool.name()}` tool to send the correct answer to the user.
|
81
85
|
"""
|
82
86
|
|
83
87
|
|
@@ -96,7 +100,10 @@ class SQLChatAgentConfig(ChatAgentConfig):
|
|
96
100
|
context_descriptions: Dict[str, Dict[str, Union[str, Dict[str, str]]]] = {}
|
97
101
|
use_schema_tools: bool = False
|
98
102
|
multi_schema: bool = False
|
99
|
-
|
103
|
+
# whether the agent is used in a continuous chat with user,
|
104
|
+
# as opposed to returning a result from the task.run()
|
105
|
+
chat_mode: bool = False
|
106
|
+
addressing_prefix: str = ""
|
100
107
|
|
101
108
|
"""
|
102
109
|
Optional, but strongly recommended, context descriptions for tables, columns,
|
@@ -225,14 +232,21 @@ class SQLChatAgent(ChatAgent):
|
|
225
232
|
"""Initialize message tools used for chatting."""
|
226
233
|
message = self._format_message()
|
227
234
|
self.config.system_message = self.config.system_message.format(mode=message)
|
228
|
-
|
235
|
+
|
236
|
+
if self.config.chat_mode:
|
237
|
+
self.config.addressing_prefix = self.config.addressing_prefix or SEND_TO
|
229
238
|
self.config.system_message += ADDRESSING_INSTRUCTION.format(
|
230
239
|
prefix=self.config.addressing_prefix
|
231
240
|
)
|
241
|
+
else:
|
242
|
+
self.config.system_message += DONE_INSTRUCTION
|
243
|
+
|
232
244
|
super().__init__(self.config)
|
233
|
-
self.enable_message(RunQueryTool)
|
245
|
+
self.enable_message([RunQueryTool, ForwardTool])
|
234
246
|
if self.config.use_schema_tools:
|
235
247
|
self._enable_schema_tools()
|
248
|
+
if not self.config.chat_mode:
|
249
|
+
self.enable_message(DoneTool)
|
236
250
|
|
237
251
|
def _format_message(self) -> str:
|
238
252
|
if self.engine is None:
|
@@ -270,7 +284,7 @@ class SQLChatAgent(ChatAgent):
|
|
270
284
|
|
271
285
|
def handle_message_fallback(
|
272
286
|
self, msg: str | ChatDocument
|
273
|
-
) -> str |
|
287
|
+
) -> str | ForwardTool | None:
|
274
288
|
"""
|
275
289
|
Handle the scenario where current msg is not a tool.
|
276
290
|
Special handling is only needed if the message was from the LLM
|
@@ -278,60 +292,40 @@ class SQLChatAgent(ChatAgent):
|
|
278
292
|
"""
|
279
293
|
if not self.llm_responded:
|
280
294
|
return None
|
281
|
-
if self.
|
282
|
-
|
283
|
-
self.config.addressing_prefix + "User"
|
284
|
-
if self.config.addressing_prefix
|
285
|
-
else ""
|
286
|
-
)
|
287
|
-
return (
|
288
|
-
DONE + prefix + (msg.content if isinstance(msg, ChatDocument) else msg)
|
289
|
-
)
|
295
|
+
if self.interactive:
|
296
|
+
return ForwardTool(agent="User")
|
290
297
|
|
291
|
-
|
292
|
-
|
293
|
-
|
294
|
-
|
298
|
+
tools_instruction = f"""
|
299
|
+
For example you may want to use the TOOL
|
300
|
+
`{RunQueryTool.name()}` to further explore the database contents
|
301
|
+
"""
|
302
|
+
if self.config.use_schema_tools:
|
303
|
+
tools_instruction += """
|
304
|
+
OR you may want to use one of the schema tools to
|
305
|
+
explore the database schema
|
306
|
+
"""
|
307
|
+
if self.config.chat_mode:
|
308
|
+
return f"""
|
309
|
+
Since you did not explicitly address the User, it is not clear
|
310
|
+
whether:
|
311
|
+
- you intend this to be the final response to the
|
312
|
+
user's query/request, in which case you must use the
|
313
|
+
`{ForwardTool.name()}` to indicate this.
|
314
|
+
- OR, you FORGOT to use an Appropriate TOOL,
|
315
|
+
in which case you should use the available tools to
|
316
|
+
make progress on the user's query/request.
|
317
|
+
{tools_instruction}
|
295
318
|
"""
|
296
|
-
if self.config.addressing_prefix != "":
|
297
|
-
reminder += f"""
|
298
|
-
OR you may have forgotten to address the user using the prefix
|
299
|
-
{self.config.addressing_prefix}
|
300
|
-
"""
|
301
|
-
return reminder
|
302
|
-
|
303
|
-
def _agent_response(
|
304
|
-
self,
|
305
|
-
msg: Optional[str | ChatDocument] = None,
|
306
|
-
) -> Optional[ChatDocument]:
|
307
|
-
# Your override code here
|
308
|
-
if msg is None:
|
309
|
-
return None
|
310
|
-
|
311
|
-
results = self.handle_message(msg)
|
312
|
-
if results is None:
|
313
|
-
return None
|
314
319
|
|
315
|
-
|
316
|
-
|
317
|
-
|
318
|
-
|
319
|
-
|
320
|
-
|
321
|
-
|
322
|
-
|
323
|
-
|
324
|
-
|
325
|
-
content = results.content if isinstance(results, ChatDocument) else results
|
326
|
-
|
327
|
-
return ChatDocument(
|
328
|
-
content=content,
|
329
|
-
metadata=ChatDocMetaData(
|
330
|
-
source=Entity.AGENT,
|
331
|
-
sender=Entity.AGENT,
|
332
|
-
sender_name=sender_name,
|
333
|
-
),
|
334
|
-
)
|
320
|
+
return f"""
|
321
|
+
The intent of your response is not clear:
|
322
|
+
- if you intended this to be the FINAL answer to the user's query,
|
323
|
+
then use the `{DoneTool.name()}` to indicate so,
|
324
|
+
with the `content` set to the answer or result.
|
325
|
+
- otherwise, use one of the available tools to make progress
|
326
|
+
to arrive at the final answer.
|
327
|
+
{tools_instruction}
|
328
|
+
"""
|
335
329
|
|
336
330
|
def retry_query(self, e: Exception, query: str) -> str:
|
337
331
|
"""
|
langroid/agent/task.py
CHANGED
@@ -1023,9 +1023,11 @@ class Task:
|
|
1023
1023
|
found_response = False
|
1024
1024
|
# (responder, result) from a responder who explicitly said NO_ANSWER
|
1025
1025
|
no_answer_response: None | Tuple[Responder, ChatDocument] = None
|
1026
|
+
n_non_responders = 0
|
1026
1027
|
for r in responders:
|
1027
1028
|
self.is_pass_thru = False
|
1028
1029
|
if not self._can_respond(r):
|
1030
|
+
n_non_responders += 1
|
1029
1031
|
# create dummy msg for logging
|
1030
1032
|
log_doc = ChatDocument(
|
1031
1033
|
content="[CANNOT RESPOND]",
|
@@ -1038,6 +1040,9 @@ class Task:
|
|
1038
1040
|
# no need to register this dummy msg in ObjectRegistry
|
1039
1041
|
ChatDocument.delete_id(log_doc.id())
|
1040
1042
|
self.log_message(r, log_doc)
|
1043
|
+
if n_non_responders == len(responders):
|
1044
|
+
# don't stay in this "non-response" loop forever
|
1045
|
+
break
|
1041
1046
|
continue
|
1042
1047
|
self.human_tried = r == Entity.USER
|
1043
1048
|
result = self.response(r, turns)
|
@@ -4,7 +4,10 @@ from langroid.agent.tool_message import ToolMessage
|
|
4
4
|
|
5
5
|
|
6
6
|
class RetrievalTool(ToolMessage):
|
7
|
-
"""
|
7
|
+
"""
|
8
|
+
Retrieval tool, only to be used by a DocChatAgent.
|
9
|
+
The handler method is defined in DocChatAgent.retrieval_tool
|
10
|
+
"""
|
8
11
|
|
9
12
|
request: str = "retrieval_tool"
|
10
13
|
purpose: str = """
|
langroid/parsing/utils.py
CHANGED
@@ -31,6 +31,10 @@ def download_nltk_resource(resource: str) -> None:
|
|
31
31
|
nltk.download(resource, quiet=True)
|
32
32
|
|
33
33
|
|
34
|
+
# Download punkt_tab resource at module import
|
35
|
+
download_nltk_resource("punkt_tab")
|
36
|
+
download_nltk_resource("gutenberg")
|
37
|
+
|
34
38
|
T = TypeVar("T")
|
35
39
|
|
36
40
|
|
@@ -46,7 +50,6 @@ def batched(iterable: Iterable[T], n: int) -> Iterable[Sequence[T]]:
|
|
46
50
|
|
47
51
|
def generate_random_sentences(k: int) -> str:
|
48
52
|
# Load the sample text
|
49
|
-
download_nltk_resource("gutenberg")
|
50
53
|
|
51
54
|
from nltk.corpus import gutenberg
|
52
55
|
|
langroid/utils/configuration.py
CHANGED
@@ -17,8 +17,6 @@ class Settings(BaseSettings):
|
|
17
17
|
stream: bool = True # stream output?
|
18
18
|
cache: bool = True # use cache?
|
19
19
|
cache_type: Literal["redis", "fakeredis", "momento", "none"] = "redis" # cache type
|
20
|
-
interactive: bool = True # interactive mode?
|
21
|
-
gpt3_5: bool = True # use GPT-3.5?
|
22
20
|
chat_model: str = "" # language model name, e.g. litellm/ollama/llama2
|
23
21
|
quiet: bool = False # quiet mode (i.e. suppress all output)?
|
24
22
|
notebook: bool = False # running in a notebook?
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: langroid
|
3
|
-
Version: 0.22.
|
3
|
+
Version: 0.22.5
|
4
4
|
Summary: Harness LLMs with Multi-Agent Programming
|
5
5
|
License: MIT
|
6
6
|
Author: Prasad Chalasani
|
@@ -68,7 +68,7 @@ Requires-Dist: metaphor-python (>=0.1.23,<0.2.0) ; extra == "all" or extra == "m
|
|
68
68
|
Requires-Dist: momento (>=1.10.2,<1.21) ; extra == "momento"
|
69
69
|
Requires-Dist: neo4j (>=5.14.1,<6.0.0) ; extra == "all" or extra == "neo4j"
|
70
70
|
Requires-Dist: nest-asyncio (>=1.6.0,<2.0.0)
|
71
|
-
Requires-Dist: nltk (>=3.8.
|
71
|
+
Requires-Dist: nltk (>=3.8.2,<4.0.0)
|
72
72
|
Requires-Dist: onnxruntime (>=1.16.1,<2.0.0)
|
73
73
|
Requires-Dist: openai (>=1.45.0,<2.0.0)
|
74
74
|
Requires-Dist: pandas (>=2.0.3,<3.0.0)
|
@@ -1,6 +1,6 @@
|
|
1
1
|
langroid/__init__.py,sha256=z_fCOLQJPOw3LLRPBlFB5-2HyCjpPgQa4m4iY5Fvb8Y,1800
|
2
2
|
langroid/agent/__init__.py,sha256=ll0Cubd2DZ-fsCMl7e10hf9ZjFGKzphfBco396IKITY,786
|
3
|
-
langroid/agent/base.py,sha256
|
3
|
+
langroid/agent/base.py,sha256=-lMv0XHO7ya1P6IW_xb439Mx8WhFEPgt1AmcMe200ds,67268
|
4
4
|
langroid/agent/batch.py,sha256=QZdlt1563hx4l3AXrCaGovE-PNG93M3DsvQAbDzdiS8,13705
|
5
5
|
langroid/agent/callbacks/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
6
6
|
langroid/agent/callbacks/chainlit.py,sha256=JJXI3UGTyTDg2FFath4rqY1GyUo_0pbVBt8CZpvdtn4,23289
|
@@ -30,7 +30,7 @@ langroid/agent/special/neo4j/tools.py,sha256=Vw3HvtDfG2c4_bUHgt4_ZbJq48lpIQstbjj
|
|
30
30
|
langroid/agent/special/relevance_extractor_agent.py,sha256=zIx8GUdVo1aGW6ASla0NPQjYYIpmriK_TYMijqAx3F8,4796
|
31
31
|
langroid/agent/special/retriever_agent.py,sha256=lvMvf-u9rSosg4YASuFdUbGLgkzLPknXAbJZfZ1LZCc,1868
|
32
32
|
langroid/agent/special/sql/__init__.py,sha256=mWfmm1QpXCezpFOS2eI57M0L_Ok3q5_ukG8tXBnBrEA,319
|
33
|
-
langroid/agent/special/sql/sql_chat_agent.py,sha256=
|
33
|
+
langroid/agent/special/sql/sql_chat_agent.py,sha256=j8m1Lm8j_w3m3gzPjuC2vea_t_bfhNewCfDnPDzrc38,17191
|
34
34
|
langroid/agent/special/sql/utils/__init__.py,sha256=JFif6CRTrN-bc91uuAI4K9fe2ndIWSNMVxJ0WA68--M,446
|
35
35
|
langroid/agent/special/sql/utils/description_extractors.py,sha256=cX8TIpmTPXZXQTMpIi3OUFwFsPywxFFdurpx717Kq0I,6529
|
36
36
|
langroid/agent/special/sql/utils/populate_metadata.py,sha256=1J22UsyEPKzwK0XlJZtYn9r6kYc0FXIr8-lZrndYlhc,3131
|
@@ -38,7 +38,7 @@ langroid/agent/special/sql/utils/system_message.py,sha256=qKLHkvQWRQodTtPLPxr1GS
|
|
38
38
|
langroid/agent/special/sql/utils/tools.py,sha256=vFYysk6Vi7HJjII8B4RitA3pt_z3gkSglDNdhNVMiFc,1332
|
39
39
|
langroid/agent/special/table_chat_agent.py,sha256=d9v2wsblaRx7oMnKhLV7uO_ujvk9gh59pSGvBXyeyNc,9659
|
40
40
|
langroid/agent/structured_message.py,sha256=y7pud1EgRNeTFZlJmBkLmwME3yQJ_IYik-Xds9kdZbY,282
|
41
|
-
langroid/agent/task.py,sha256=
|
41
|
+
langroid/agent/task.py,sha256=BdLNWFQqA9X-9ZtUIC2NwmRrPAX7GB0mAC0aXDzK0Uk,86877
|
42
42
|
langroid/agent/tool_message.py,sha256=bjBSk1N1IgqqYGmOy6O97zPFMSaUdEK7r8ZjOaJwoeE,11335
|
43
43
|
langroid/agent/tools/__init__.py,sha256=IMgCte-_ZIvCkozGQmvMqxIw7_nKLKzD78ccJL1bnQU,804
|
44
44
|
langroid/agent/tools/duckduckgo_search_tool.py,sha256=NhsCaGZkdv28nja7yveAhSK_w6l_Ftym8agbrdzqgfo,1935
|
@@ -47,7 +47,7 @@ langroid/agent/tools/google_search_tool.py,sha256=y7b-3FtgXf0lfF4AYxrZ3K5pH2dhid
|
|
47
47
|
langroid/agent/tools/metaphor_search_tool.py,sha256=qj4gt453cLEX3EGW7nVzVu6X7LCdrwjSlcNY0qJW104,2489
|
48
48
|
langroid/agent/tools/orchestration.py,sha256=EDv1EMVGYqX82x3bCRbTn9gFNs66oosiUM8WTSZkUJg,10909
|
49
49
|
langroid/agent/tools/recipient_tool.py,sha256=dr0yTxgNEIoxUYxH6TtaExC4G_8WdJ0xGohIa4dFLhY,9808
|
50
|
-
langroid/agent/tools/retrieval_tool.py,sha256=
|
50
|
+
langroid/agent/tools/retrieval_tool.py,sha256=zcAV20PP_6VzSd-UE-IJcabaBseFL_QNz59Bnig8-lE,946
|
51
51
|
langroid/agent/tools/rewind_tool.py,sha256=XAXL3BpNhCmBGYq_qi_sZfHJuIw7NY2jp4wnojJ7WRs,5606
|
52
52
|
langroid/agent/tools/segment_extract_tool.py,sha256=__srZ_VGYLVOdPrITUM8S0HpmX4q7r5FHWMDdHdEv8w,1440
|
53
53
|
langroid/agent/typed_task.py,sha256=oxja0Z3uLTv0BcR1xIMqDpo85MIGOruz4XsZ4ghjsW4,689
|
@@ -100,7 +100,7 @@ langroid/parsing/table_loader.py,sha256=qNM4obT_0Y4tjrxNBCNUYjKQ9oETCZ7FbolKBTcz
|
|
100
100
|
langroid/parsing/url_loader.py,sha256=Na2TBlKuQkloZzkE2d7xl6mh9olS3CbpgCsJbJ-xhIA,4472
|
101
101
|
langroid/parsing/url_loader_cookies.py,sha256=Lg4sNpRz9MByWq2mde6T0hKv68VZSV3mtMjNEHuFeSU,2327
|
102
102
|
langroid/parsing/urls.py,sha256=XjpaV5onG7gKQ5iQeFTzHSw5P08Aqw0g-rMUu61lR6s,7988
|
103
|
-
langroid/parsing/utils.py,sha256=
|
103
|
+
langroid/parsing/utils.py,sha256=kb9DlHaG1iQB-6JagH1C26SdCNNf8U-2XaXia4_dWCw,12726
|
104
104
|
langroid/parsing/web_search.py,sha256=wGycU86N3nsZ78E9iS-BIm5NWueDgoknojABE0_1LRA,4886
|
105
105
|
langroid/prompts/__init__.py,sha256=RW11vK6jiLPuaUh4GpeFvstti73gkm8_rDMtrbo2YsU,142
|
106
106
|
langroid/prompts/chat-gpt4-system-prompt.md,sha256=Q3uLCJTPQvmUkZN2XDnkBC7M2K3X0F3C3GIQBaFvYvw,5329
|
@@ -115,7 +115,7 @@ langroid/utils/.chainlit/translations/en-US.json,sha256=DAFz2HjOFFfboCStrUfKFg2B
|
|
115
115
|
langroid/utils/__init__.py,sha256=Sruos2tB4G7Tn0vlblvYlX9PEGR0plI2uE0PJ4d_EC4,353
|
116
116
|
langroid/utils/algorithms/__init__.py,sha256=WylYoZymA0fnzpB4vrsH_0n7WsoLhmuZq8qxsOCjUpM,41
|
117
117
|
langroid/utils/algorithms/graph.py,sha256=JbdpPnUOhw4-D6O7ou101JLA3xPCD0Lr3qaPoFCaRfo,2866
|
118
|
-
langroid/utils/configuration.py,sha256=
|
118
|
+
langroid/utils/configuration.py,sha256=V3RS8OP7AC0_bDKczxfortD0F5H3cnsZL0ulKBxuoHU,3213
|
119
119
|
langroid/utils/constants.py,sha256=vKIdkAJwyPT-bRA5MDPiOl7-EppBRmewRBIOcdXi4I4,959
|
120
120
|
langroid/utils/docker.py,sha256=kJQOLTgM0x9j9pgIIqp0dZNZCTvoUDhp6i8tYBq1Jr0,1105
|
121
121
|
langroid/utils/git_utils.py,sha256=WnflJ3R3owhlD0LNdSJakcKhExcEehE1UW5jYVQl8JY,7955
|
@@ -142,8 +142,8 @@ langroid/vector_store/meilisearch.py,sha256=6frB7GFWeWmeKzRfLZIvzRjllniZ1cYj3Hmh
|
|
142
142
|
langroid/vector_store/momento.py,sha256=qR-zBF1RKVHQZPZQYW_7g-XpTwr46p8HJuYPCkfJbM4,10534
|
143
143
|
langroid/vector_store/qdrant_cloud.py,sha256=3im4Mip0QXLkR6wiqVsjV1QvhSElfxdFSuDKddBDQ-4,188
|
144
144
|
langroid/vector_store/qdrantdb.py,sha256=v88lqFkepADvlN6lByUj9I4NEKa9X9lWH16uTPPbYrE,17457
|
145
|
-
pyproject.toml,sha256=
|
146
|
-
langroid-0.22.
|
147
|
-
langroid-0.22.
|
148
|
-
langroid-0.22.
|
149
|
-
langroid-0.22.
|
145
|
+
pyproject.toml,sha256=m9VWz7kgw5OWUlJj_B-LP9ov67jCSioaLfCLTVdi-jg,7488
|
146
|
+
langroid-0.22.5.dist-info/LICENSE,sha256=EgVbvA6VSYgUlvC3RvPKehSg7MFaxWDsFuzLOsPPfJg,1065
|
147
|
+
langroid-0.22.5.dist-info/METADATA,sha256=B7F4ITogUktXDfPGpjQB1RDNe2TV1se5JF321Jc2tNY,57107
|
148
|
+
langroid-0.22.5.dist-info/WHEEL,sha256=Nq82e9rUAnEjt98J6MlVmMCZb-t9cYE2Ir1kpBmnWfs,88
|
149
|
+
langroid-0.22.5.dist-info/RECORD,,
|
pyproject.toml
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
[tool.poetry]
|
2
2
|
name = "langroid"
|
3
|
-
version = "0.22.
|
3
|
+
version = "0.22.5"
|
4
4
|
description = "Harness LLMs with Multi-Agent Programming"
|
5
5
|
authors = ["Prasad Chalasani <pchalasani@gmail.com>"]
|
6
6
|
readme = "README.md"
|
@@ -62,7 +62,7 @@ fakeredis = "^2.12.1"
|
|
62
62
|
faker = "^18.9.0"
|
63
63
|
requests = "^2.31.0"
|
64
64
|
pyparsing = "^3.0.9"
|
65
|
-
nltk = "^3.8.
|
65
|
+
nltk = "^3.8.2"
|
66
66
|
qdrant-client = "^1.8.0"
|
67
67
|
pydantic = ">=1,<3"
|
68
68
|
pandas = "^2.0.3"
|
File without changes
|
File without changes
|