langroid 0.6.3__py3-none-any.whl → 0.6.4__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/special/neo4j/neo4j_chat_agent.py +15 -0
- langroid/agent/special/neo4j/utils/system_message.py +16 -9
- {langroid-0.6.3.dist-info → langroid-0.6.4.dist-info}/METADATA +1 -1
- {langroid-0.6.3.dist-info → langroid-0.6.4.dist-info}/RECORD +7 -7
- pyproject.toml +1 -1
- {langroid-0.6.3.dist-info → langroid-0.6.4.dist-info}/LICENSE +0 -0
- {langroid-0.6.3.dist-info → langroid-0.6.4.dist-info}/WHEEL +0 -0
@@ -265,10 +265,23 @@ class Neo4jChatAgent(ChatAgent):
|
|
265
265
|
Returns:
|
266
266
|
str: The result of executing the cypher_query.
|
267
267
|
"""
|
268
|
+
if not self.tried_schema:
|
269
|
+
return """
|
270
|
+
You did not yet use the `get_schema` tool to get the schema
|
271
|
+
of the neo4j knowledge-graph db. Use that tool first before using
|
272
|
+
the `retrieval_query` tool, to ensure you know all the correct
|
273
|
+
node labels, relationship types, and property keys available in
|
274
|
+
the database.
|
275
|
+
"""
|
268
276
|
query = msg.cypher_query
|
269
277
|
|
270
278
|
logger.info(f"Executing Cypher query: {query}")
|
271
279
|
response = self.read_query(query)
|
280
|
+
if isinstance(response.data, list) and len(response.data) == 0:
|
281
|
+
return """
|
282
|
+
No results found; perhaps try an approximate or case-insensitive match,
|
283
|
+
or the other RETRY-SUGGESTIONS in your instructions.
|
284
|
+
"""
|
272
285
|
if response.success:
|
273
286
|
return json.dumps(response.data)
|
274
287
|
else:
|
@@ -316,6 +329,7 @@ class Neo4jChatAgent(ChatAgent):
|
|
316
329
|
behavior of 'self.read_query' method, which might raise exceptions related
|
317
330
|
to database connectivity or query execution.
|
318
331
|
"""
|
332
|
+
self.tried_schema = True
|
319
333
|
schema_result = self.read_query("CALL db.schema.visualization()")
|
320
334
|
if schema_result.success:
|
321
335
|
# ther is a possibility that the schema is empty, which is a valid response
|
@@ -326,6 +340,7 @@ class Neo4jChatAgent(ChatAgent):
|
|
326
340
|
|
327
341
|
def _init_tool_messages(self) -> None:
|
328
342
|
"""Initialize message tools used for chatting."""
|
343
|
+
self.tried_schema = False
|
329
344
|
message = self._format_message()
|
330
345
|
self.config.system_message = self.config.system_message.format(mode=message)
|
331
346
|
if self.config.addressing_prefix != "":
|
@@ -1,24 +1,29 @@
|
|
1
1
|
DEFAULT_SYS_MSG = """You are a data scientist and expert in Knowledge Graphs,
|
2
2
|
with expertise in answering questions by interacting with a Neo4j graph database.
|
3
3
|
|
4
|
-
The schema
|
5
|
-
and property keys available in your Neo4j database.
|
4
|
+
The schema below describes the Neo4j database structure, node labels,
|
5
|
+
relationship types, and property keys available in your Neo4j database.
|
6
6
|
{schema}
|
7
7
|
Do not make assumptions about the database schema before using the tools.
|
8
|
-
Use the
|
8
|
+
Use the tools/functions to learn more about the database schema."""
|
9
9
|
|
10
10
|
SCHEMA_TOOLS_SYS_MSG = """You are a data scientist and expert in Knowledge Graphs,
|
11
11
|
with expertise in answering questions by querying Neo4j database.
|
12
|
-
You have access to the following tools:
|
13
|
-
|
12
|
+
You have access to the following tools:
|
13
|
+
|
14
|
+
- `get_schema` tool/function-call to get all the node labels, relationship
|
15
|
+
types, and property keys available in your Neo4j database. You MUST use
|
16
|
+
this tool BEFORE attempting to use the `retrieval_query` tool/function-call,
|
17
|
+
to ensure that you are using the correct node labels, relationship types, and
|
18
|
+
property keys in your `retrieval_query` tool/function-call.
|
19
|
+
|
20
|
+
- `retrieval_query` tool/function-call to retrieve infomration from the graph database
|
14
21
|
to answer questions.
|
15
22
|
|
16
23
|
- `create_query` tool/function-call to execute cypher query that creates
|
17
24
|
entities/relationships in the graph database.
|
18
25
|
|
19
|
-
|
20
|
-
types, and property keys available in your Neo4j database.
|
21
|
-
|
26
|
+
|
22
27
|
You must be smart about using the right node labels, relationship types, and property
|
23
28
|
keys based on the english description. If you are thinking of using a node label,
|
24
29
|
relationship type, or property key that does not exist, you are probably on the wrong
|
@@ -30,7 +35,9 @@ DEFAULT_NEO4J_CHAT_SYSTEM_MESSAGE = """
|
|
30
35
|
|
31
36
|
You do not need to attempt answering a question with just one query.
|
32
37
|
You could make a sequence of Neo4j queries to help you write the final query.
|
33
|
-
|
38
|
+
|
39
|
+
RETRY-SUGGESTIONS:
|
40
|
+
If you receive a null or other unexpected result,
|
34
41
|
(a) make sure you use the available TOOLs correctly,
|
35
42
|
(b) USE `get_schema` tool/function-call to get all the node labels, relationship
|
36
43
|
types, and property keys available in your Neo4j database.
|
@@ -23,9 +23,9 @@ langroid/agent/special/lance_rag_new/query_planner_agent.py,sha256=JqO_5fKW8HPn-
|
|
23
23
|
langroid/agent/special/lance_tools.py,sha256=BznV_r3LAFyybvBRa9KQ0oU7mPM3uQVfri7PFp7M_qc,1894
|
24
24
|
langroid/agent/special/neo4j/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
25
25
|
langroid/agent/special/neo4j/csv_kg_chat.py,sha256=dRsAgMBa1H_EMI2YYgJR2Xyv1D7e4o3G9M64mTewq_c,6409
|
26
|
-
langroid/agent/special/neo4j/neo4j_chat_agent.py,sha256=
|
26
|
+
langroid/agent/special/neo4j/neo4j_chat_agent.py,sha256=ic09EvAxSWo6q-h-HpPKwFMzaeuD8iGbbJYDvHnRonA,13301
|
27
27
|
langroid/agent/special/neo4j/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
28
|
-
langroid/agent/special/neo4j/utils/system_message.py,sha256=
|
28
|
+
langroid/agent/special/neo4j/utils/system_message.py,sha256=XNEP1jWQNYqjxMAVJpBkpfHHK0x537rj882sgV111vE,2887
|
29
29
|
langroid/agent/special/relevance_extractor_agent.py,sha256=zIx8GUdVo1aGW6ASla0NPQjYYIpmriK_TYMijqAx3F8,4796
|
30
30
|
langroid/agent/special/retriever_agent.py,sha256=lvMvf-u9rSosg4YASuFdUbGLgkzLPknXAbJZfZ1LZCc,1868
|
31
31
|
langroid/agent/special/sql/__init__.py,sha256=mWfmm1QpXCezpFOS2eI57M0L_Ok3q5_ukG8tXBnBrEA,319
|
@@ -134,8 +134,8 @@ langroid/vector_store/meilisearch.py,sha256=6frB7GFWeWmeKzRfLZIvzRjllniZ1cYj3Hmh
|
|
134
134
|
langroid/vector_store/momento.py,sha256=qR-zBF1RKVHQZPZQYW_7g-XpTwr46p8HJuYPCkfJbM4,10534
|
135
135
|
langroid/vector_store/qdrant_cloud.py,sha256=3im4Mip0QXLkR6wiqVsjV1QvhSElfxdFSuDKddBDQ-4,188
|
136
136
|
langroid/vector_store/qdrantdb.py,sha256=v88lqFkepADvlN6lByUj9I4NEKa9X9lWH16uTPPbYrE,17457
|
137
|
-
pyproject.toml,sha256=
|
138
|
-
langroid-0.6.
|
139
|
-
langroid-0.6.
|
140
|
-
langroid-0.6.
|
141
|
-
langroid-0.6.
|
137
|
+
pyproject.toml,sha256=MUbx-I1YZJEr0r177JeAZTH0YRO_TyN5UQIDWsiNCeI,7063
|
138
|
+
langroid-0.6.4.dist-info/LICENSE,sha256=EgVbvA6VSYgUlvC3RvPKehSg7MFaxWDsFuzLOsPPfJg,1065
|
139
|
+
langroid-0.6.4.dist-info/METADATA,sha256=h2pVxowaNGKIl57xLgzNdahRrcNly8W2koXNk1Mg2pM,54402
|
140
|
+
langroid-0.6.4.dist-info/WHEEL,sha256=FMvqSimYX_P7y0a7UY-_Mc83r5zkBZsCYPm7Lr0Bsq4,88
|
141
|
+
langroid-0.6.4.dist-info/RECORD,,
|
pyproject.toml
CHANGED
File without changes
|
File without changes
|