graphiti-core 0.12.0rc2__tar.gz → 0.12.0rc4__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.
Potentially problematic release.
This version of graphiti-core might be problematic. Click here for more details.
- {graphiti_core-0.12.0rc2 → graphiti_core-0.12.0rc4}/PKG-INFO +11 -3
- {graphiti_core-0.12.0rc2 → graphiti_core-0.12.0rc4}/README.md +9 -1
- {graphiti_core-0.12.0rc2 → graphiti_core-0.12.0rc4}/graphiti_core/search/search_filters.py +10 -12
- {graphiti_core-0.12.0rc2 → graphiti_core-0.12.0rc4}/pyproject.toml +2 -2
- {graphiti_core-0.12.0rc2 → graphiti_core-0.12.0rc4}/LICENSE +0 -0
- {graphiti_core-0.12.0rc2 → graphiti_core-0.12.0rc4}/graphiti_core/__init__.py +0 -0
- {graphiti_core-0.12.0rc2 → graphiti_core-0.12.0rc4}/graphiti_core/cross_encoder/__init__.py +0 -0
- {graphiti_core-0.12.0rc2 → graphiti_core-0.12.0rc4}/graphiti_core/cross_encoder/bge_reranker_client.py +0 -0
- {graphiti_core-0.12.0rc2 → graphiti_core-0.12.0rc4}/graphiti_core/cross_encoder/client.py +0 -0
- {graphiti_core-0.12.0rc2 → graphiti_core-0.12.0rc4}/graphiti_core/cross_encoder/openai_reranker_client.py +0 -0
- {graphiti_core-0.12.0rc2 → graphiti_core-0.12.0rc4}/graphiti_core/edges.py +0 -0
- {graphiti_core-0.12.0rc2 → graphiti_core-0.12.0rc4}/graphiti_core/embedder/__init__.py +0 -0
- {graphiti_core-0.12.0rc2 → graphiti_core-0.12.0rc4}/graphiti_core/embedder/client.py +0 -0
- {graphiti_core-0.12.0rc2 → graphiti_core-0.12.0rc4}/graphiti_core/embedder/gemini.py +0 -0
- {graphiti_core-0.12.0rc2 → graphiti_core-0.12.0rc4}/graphiti_core/embedder/openai.py +0 -0
- {graphiti_core-0.12.0rc2 → graphiti_core-0.12.0rc4}/graphiti_core/embedder/voyage.py +0 -0
- {graphiti_core-0.12.0rc2 → graphiti_core-0.12.0rc4}/graphiti_core/errors.py +0 -0
- {graphiti_core-0.12.0rc2 → graphiti_core-0.12.0rc4}/graphiti_core/graphiti.py +0 -0
- {graphiti_core-0.12.0rc2 → graphiti_core-0.12.0rc4}/graphiti_core/graphiti_types.py +0 -0
- {graphiti_core-0.12.0rc2 → graphiti_core-0.12.0rc4}/graphiti_core/helpers.py +0 -0
- {graphiti_core-0.12.0rc2 → graphiti_core-0.12.0rc4}/graphiti_core/llm_client/__init__.py +0 -0
- {graphiti_core-0.12.0rc2 → graphiti_core-0.12.0rc4}/graphiti_core/llm_client/anthropic_client.py +0 -0
- {graphiti_core-0.12.0rc2 → graphiti_core-0.12.0rc4}/graphiti_core/llm_client/client.py +0 -0
- {graphiti_core-0.12.0rc2 → graphiti_core-0.12.0rc4}/graphiti_core/llm_client/config.py +0 -0
- {graphiti_core-0.12.0rc2 → graphiti_core-0.12.0rc4}/graphiti_core/llm_client/errors.py +0 -0
- {graphiti_core-0.12.0rc2 → graphiti_core-0.12.0rc4}/graphiti_core/llm_client/gemini_client.py +0 -0
- {graphiti_core-0.12.0rc2 → graphiti_core-0.12.0rc4}/graphiti_core/llm_client/groq_client.py +0 -0
- {graphiti_core-0.12.0rc2 → graphiti_core-0.12.0rc4}/graphiti_core/llm_client/openai_client.py +0 -0
- {graphiti_core-0.12.0rc2 → graphiti_core-0.12.0rc4}/graphiti_core/llm_client/openai_generic_client.py +0 -0
- {graphiti_core-0.12.0rc2 → graphiti_core-0.12.0rc4}/graphiti_core/llm_client/utils.py +0 -0
- {graphiti_core-0.12.0rc2 → graphiti_core-0.12.0rc4}/graphiti_core/models/__init__.py +0 -0
- {graphiti_core-0.12.0rc2 → graphiti_core-0.12.0rc4}/graphiti_core/models/edges/__init__.py +0 -0
- {graphiti_core-0.12.0rc2 → graphiti_core-0.12.0rc4}/graphiti_core/models/edges/edge_db_queries.py +0 -0
- {graphiti_core-0.12.0rc2 → graphiti_core-0.12.0rc4}/graphiti_core/models/nodes/__init__.py +0 -0
- {graphiti_core-0.12.0rc2 → graphiti_core-0.12.0rc4}/graphiti_core/models/nodes/node_db_queries.py +0 -0
- {graphiti_core-0.12.0rc2 → graphiti_core-0.12.0rc4}/graphiti_core/nodes.py +0 -0
- {graphiti_core-0.12.0rc2 → graphiti_core-0.12.0rc4}/graphiti_core/prompts/__init__.py +0 -0
- {graphiti_core-0.12.0rc2 → graphiti_core-0.12.0rc4}/graphiti_core/prompts/dedupe_edges.py +0 -0
- {graphiti_core-0.12.0rc2 → graphiti_core-0.12.0rc4}/graphiti_core/prompts/dedupe_nodes.py +0 -0
- {graphiti_core-0.12.0rc2 → graphiti_core-0.12.0rc4}/graphiti_core/prompts/eval.py +0 -0
- {graphiti_core-0.12.0rc2 → graphiti_core-0.12.0rc4}/graphiti_core/prompts/extract_edge_dates.py +0 -0
- {graphiti_core-0.12.0rc2 → graphiti_core-0.12.0rc4}/graphiti_core/prompts/extract_edges.py +0 -0
- {graphiti_core-0.12.0rc2 → graphiti_core-0.12.0rc4}/graphiti_core/prompts/extract_nodes.py +0 -0
- {graphiti_core-0.12.0rc2 → graphiti_core-0.12.0rc4}/graphiti_core/prompts/invalidate_edges.py +0 -0
- {graphiti_core-0.12.0rc2 → graphiti_core-0.12.0rc4}/graphiti_core/prompts/lib.py +0 -0
- {graphiti_core-0.12.0rc2 → graphiti_core-0.12.0rc4}/graphiti_core/prompts/models.py +0 -0
- {graphiti_core-0.12.0rc2 → graphiti_core-0.12.0rc4}/graphiti_core/prompts/prompt_helpers.py +0 -0
- {graphiti_core-0.12.0rc2 → graphiti_core-0.12.0rc4}/graphiti_core/prompts/summarize_nodes.py +0 -0
- {graphiti_core-0.12.0rc2 → graphiti_core-0.12.0rc4}/graphiti_core/py.typed +0 -0
- {graphiti_core-0.12.0rc2 → graphiti_core-0.12.0rc4}/graphiti_core/search/__init__.py +0 -0
- {graphiti_core-0.12.0rc2 → graphiti_core-0.12.0rc4}/graphiti_core/search/search.py +0 -0
- {graphiti_core-0.12.0rc2 → graphiti_core-0.12.0rc4}/graphiti_core/search/search_config.py +0 -0
- {graphiti_core-0.12.0rc2 → graphiti_core-0.12.0rc4}/graphiti_core/search/search_config_recipes.py +0 -0
- {graphiti_core-0.12.0rc2 → graphiti_core-0.12.0rc4}/graphiti_core/search/search_helpers.py +0 -0
- {graphiti_core-0.12.0rc2 → graphiti_core-0.12.0rc4}/graphiti_core/search/search_utils.py +0 -0
- {graphiti_core-0.12.0rc2 → graphiti_core-0.12.0rc4}/graphiti_core/utils/__init__.py +0 -0
- {graphiti_core-0.12.0rc2 → graphiti_core-0.12.0rc4}/graphiti_core/utils/bulk_utils.py +0 -0
- {graphiti_core-0.12.0rc2 → graphiti_core-0.12.0rc4}/graphiti_core/utils/datetime_utils.py +0 -0
- {graphiti_core-0.12.0rc2 → graphiti_core-0.12.0rc4}/graphiti_core/utils/maintenance/__init__.py +0 -0
- {graphiti_core-0.12.0rc2 → graphiti_core-0.12.0rc4}/graphiti_core/utils/maintenance/community_operations.py +0 -0
- {graphiti_core-0.12.0rc2 → graphiti_core-0.12.0rc4}/graphiti_core/utils/maintenance/edge_operations.py +0 -0
- {graphiti_core-0.12.0rc2 → graphiti_core-0.12.0rc4}/graphiti_core/utils/maintenance/graph_data_operations.py +0 -0
- {graphiti_core-0.12.0rc2 → graphiti_core-0.12.0rc4}/graphiti_core/utils/maintenance/node_operations.py +0 -0
- {graphiti_core-0.12.0rc2 → graphiti_core-0.12.0rc4}/graphiti_core/utils/maintenance/temporal_operations.py +0 -0
- {graphiti_core-0.12.0rc2 → graphiti_core-0.12.0rc4}/graphiti_core/utils/maintenance/utils.py +0 -0
- {graphiti_core-0.12.0rc2 → graphiti_core-0.12.0rc4}/graphiti_core/utils/ontology_utils/entity_types_utils.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.3
|
|
2
2
|
Name: graphiti-core
|
|
3
|
-
Version: 0.12.
|
|
3
|
+
Version: 0.12.0rc4
|
|
4
4
|
Summary: A temporal graph building library
|
|
5
5
|
License: Apache-2.0
|
|
6
6
|
Author: Paul Paliychuk
|
|
@@ -22,7 +22,7 @@ Requires-Dist: groq (>=0.2.0) ; extra == "groq"
|
|
|
22
22
|
Requires-Dist: neo4j (>=5.23.0)
|
|
23
23
|
Requires-Dist: numpy (>=1.0.0)
|
|
24
24
|
Requires-Dist: openai (>=1.53.0)
|
|
25
|
-
Requires-Dist: pydantic (>=2.
|
|
25
|
+
Requires-Dist: pydantic (>=2.11.5)
|
|
26
26
|
Requires-Dist: python-dotenv (>=1.0.1)
|
|
27
27
|
Requires-Dist: tenacity (>=9.0.0)
|
|
28
28
|
Project-URL: Homepage, https://help.getzep.com/graphiti/graphiti/overview
|
|
@@ -236,7 +236,7 @@ Graphiti supports Azure OpenAI for both LLM inference and embeddings. To use Azu
|
|
|
236
236
|
```python
|
|
237
237
|
from openai import AsyncAzureOpenAI
|
|
238
238
|
from graphiti_core import Graphiti
|
|
239
|
-
from graphiti_core.llm_client import OpenAIClient
|
|
239
|
+
from graphiti_core.llm_client import LLMConfig, OpenAIClient
|
|
240
240
|
from graphiti_core.embedder.openai import OpenAIEmbedder, OpenAIEmbedderConfig
|
|
241
241
|
from graphiti_core.cross_encoder.openai_reranker_client import OpenAIRerankerClient
|
|
242
242
|
|
|
@@ -252,12 +252,19 @@ azure_openai_client = AsyncAzureOpenAI(
|
|
|
252
252
|
azure_endpoint=azure_endpoint
|
|
253
253
|
)
|
|
254
254
|
|
|
255
|
+
# Create LLM Config with your Azure deployed model names
|
|
256
|
+
azure_llm_config = LLMConfig(
|
|
257
|
+
small_model="gpt-4.1-nano",
|
|
258
|
+
model="gpt-4.1-mini",
|
|
259
|
+
)
|
|
260
|
+
|
|
255
261
|
# Initialize Graphiti with Azure OpenAI clients
|
|
256
262
|
graphiti = Graphiti(
|
|
257
263
|
"bolt://localhost:7687",
|
|
258
264
|
"neo4j",
|
|
259
265
|
"password",
|
|
260
266
|
llm_client=OpenAIClient(
|
|
267
|
+
llm_config=azure_llm_config,
|
|
261
268
|
client=azure_openai_client
|
|
262
269
|
),
|
|
263
270
|
embedder=OpenAIEmbedder(
|
|
@@ -268,6 +275,7 @@ graphiti = Graphiti(
|
|
|
268
275
|
),
|
|
269
276
|
# Optional: Configure the OpenAI cross encoder with Azure OpenAI
|
|
270
277
|
cross_encoder=OpenAIRerankerClient(
|
|
278
|
+
llm_config=azure_llm_config,
|
|
271
279
|
client=azure_openai_client
|
|
272
280
|
)
|
|
273
281
|
)
|
|
@@ -205,7 +205,7 @@ Graphiti supports Azure OpenAI for both LLM inference and embeddings. To use Azu
|
|
|
205
205
|
```python
|
|
206
206
|
from openai import AsyncAzureOpenAI
|
|
207
207
|
from graphiti_core import Graphiti
|
|
208
|
-
from graphiti_core.llm_client import OpenAIClient
|
|
208
|
+
from graphiti_core.llm_client import LLMConfig, OpenAIClient
|
|
209
209
|
from graphiti_core.embedder.openai import OpenAIEmbedder, OpenAIEmbedderConfig
|
|
210
210
|
from graphiti_core.cross_encoder.openai_reranker_client import OpenAIRerankerClient
|
|
211
211
|
|
|
@@ -221,12 +221,19 @@ azure_openai_client = AsyncAzureOpenAI(
|
|
|
221
221
|
azure_endpoint=azure_endpoint
|
|
222
222
|
)
|
|
223
223
|
|
|
224
|
+
# Create LLM Config with your Azure deployed model names
|
|
225
|
+
azure_llm_config = LLMConfig(
|
|
226
|
+
small_model="gpt-4.1-nano",
|
|
227
|
+
model="gpt-4.1-mini",
|
|
228
|
+
)
|
|
229
|
+
|
|
224
230
|
# Initialize Graphiti with Azure OpenAI clients
|
|
225
231
|
graphiti = Graphiti(
|
|
226
232
|
"bolt://localhost:7687",
|
|
227
233
|
"neo4j",
|
|
228
234
|
"password",
|
|
229
235
|
llm_client=OpenAIClient(
|
|
236
|
+
llm_config=azure_llm_config,
|
|
230
237
|
client=azure_openai_client
|
|
231
238
|
),
|
|
232
239
|
embedder=OpenAIEmbedder(
|
|
@@ -237,6 +244,7 @@ graphiti = Graphiti(
|
|
|
237
244
|
),
|
|
238
245
|
# Optional: Configure the OpenAI cross encoder with Azure OpenAI
|
|
239
246
|
cross_encoder=OpenAIRerankerClient(
|
|
247
|
+
llm_config=azure_llm_config,
|
|
240
248
|
client=azure_openai_client
|
|
241
249
|
)
|
|
242
250
|
)
|
|
@@ -21,8 +21,6 @@ from typing import Any
|
|
|
21
21
|
from pydantic import BaseModel, Field
|
|
22
22
|
from typing_extensions import LiteralString
|
|
23
23
|
|
|
24
|
-
from graphiti_core.helpers import lucene_sanitize
|
|
25
|
-
|
|
26
24
|
|
|
27
25
|
class ComparisonOperator(Enum):
|
|
28
26
|
equals = '='
|
|
@@ -60,7 +58,7 @@ def node_search_filter_query_constructor(
|
|
|
60
58
|
filter_params: dict[str, Any] = {}
|
|
61
59
|
|
|
62
60
|
if filters.node_labels is not None:
|
|
63
|
-
node_labels = '|'.join(
|
|
61
|
+
node_labels = '|'.join(filters.node_labels)
|
|
64
62
|
node_label_filter = ' AND n:' + node_labels
|
|
65
63
|
filter_query += node_label_filter
|
|
66
64
|
|
|
@@ -80,7 +78,7 @@ def edge_search_filter_query_constructor(
|
|
|
80
78
|
filter_params['edge_types'] = edge_types
|
|
81
79
|
|
|
82
80
|
if filters.node_labels is not None:
|
|
83
|
-
node_labels = '|'.join(
|
|
81
|
+
node_labels = '|'.join(filters.node_labels)
|
|
84
82
|
node_label_filter = '\nAND n:' + node_labels + ' AND m:' + node_labels
|
|
85
83
|
filter_query += node_label_filter
|
|
86
84
|
|
|
@@ -97,12 +95,12 @@ def edge_search_filter_query_constructor(
|
|
|
97
95
|
and_filter_query = ''
|
|
98
96
|
for j, and_filter in enumerate(and_filters):
|
|
99
97
|
and_filter_query += and_filter
|
|
100
|
-
if j != len(
|
|
98
|
+
if j != len(and_filters) - 1:
|
|
101
99
|
and_filter_query += ' AND '
|
|
102
100
|
|
|
103
101
|
valid_at_filter += and_filter_query
|
|
104
102
|
|
|
105
|
-
if i == len(
|
|
103
|
+
if i == len(filters.valid_at) - 1:
|
|
106
104
|
valid_at_filter += ')'
|
|
107
105
|
else:
|
|
108
106
|
valid_at_filter += ' OR '
|
|
@@ -122,12 +120,12 @@ def edge_search_filter_query_constructor(
|
|
|
122
120
|
and_filter_query = ''
|
|
123
121
|
for j, and_filter in enumerate(and_filters):
|
|
124
122
|
and_filter_query += and_filter
|
|
125
|
-
if j != len(
|
|
123
|
+
if j != len(and_filters) - 1:
|
|
126
124
|
and_filter_query += ' AND '
|
|
127
125
|
|
|
128
126
|
invalid_at_filter += and_filter_query
|
|
129
127
|
|
|
130
|
-
if i == len(
|
|
128
|
+
if i == len(filters.invalid_at) - 1:
|
|
131
129
|
invalid_at_filter += ')'
|
|
132
130
|
else:
|
|
133
131
|
invalid_at_filter += ' OR '
|
|
@@ -147,12 +145,12 @@ def edge_search_filter_query_constructor(
|
|
|
147
145
|
and_filter_query = ''
|
|
148
146
|
for j, and_filter in enumerate(and_filters):
|
|
149
147
|
and_filter_query += and_filter
|
|
150
|
-
if j != len(
|
|
148
|
+
if j != len(and_filters) - 1:
|
|
151
149
|
and_filter_query += ' AND '
|
|
152
150
|
|
|
153
151
|
created_at_filter += and_filter_query
|
|
154
152
|
|
|
155
|
-
if i == len(
|
|
153
|
+
if i == len(filters.created_at) - 1:
|
|
156
154
|
created_at_filter += ')'
|
|
157
155
|
else:
|
|
158
156
|
created_at_filter += ' OR '
|
|
@@ -172,12 +170,12 @@ def edge_search_filter_query_constructor(
|
|
|
172
170
|
and_filter_query = ''
|
|
173
171
|
for j, and_filter in enumerate(and_filters):
|
|
174
172
|
and_filter_query += and_filter
|
|
175
|
-
if j != len(
|
|
173
|
+
if j != len(and_filters) - 1:
|
|
176
174
|
and_filter_query += ' AND '
|
|
177
175
|
|
|
178
176
|
expired_at_filter += and_filter_query
|
|
179
177
|
|
|
180
|
-
if i == len(
|
|
178
|
+
if i == len(filters.expired_at) - 1:
|
|
181
179
|
expired_at_filter += ')'
|
|
182
180
|
else:
|
|
183
181
|
expired_at_filter += ' OR '
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "graphiti-core"
|
|
3
3
|
description = "A temporal graph building library"
|
|
4
|
-
version = "0.12.
|
|
4
|
+
version = "0.12.0pre4"
|
|
5
5
|
authors = [
|
|
6
6
|
{ "name" = "Paul Paliychuk", "email" = "paul@getzep.com" },
|
|
7
7
|
{ "name" = "Preston Rasmussen", "email" = "preston@getzep.com" },
|
|
@@ -12,7 +12,7 @@ license = "Apache-2.0"
|
|
|
12
12
|
requires-python = ">=3.10,<4"
|
|
13
13
|
packages = [{ include = "graphiti_core", from = "." }]
|
|
14
14
|
dependencies = [
|
|
15
|
-
"pydantic>=2.
|
|
15
|
+
"pydantic>=2.11.5",
|
|
16
16
|
"neo4j>=5.23.0",
|
|
17
17
|
"diskcache>=5.6.3",
|
|
18
18
|
"openai>=1.53.0",
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{graphiti_core-0.12.0rc2 → graphiti_core-0.12.0rc4}/graphiti_core/llm_client/anthropic_client.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{graphiti_core-0.12.0rc2 → graphiti_core-0.12.0rc4}/graphiti_core/llm_client/gemini_client.py
RENAMED
|
File without changes
|
|
File without changes
|
{graphiti_core-0.12.0rc2 → graphiti_core-0.12.0rc4}/graphiti_core/llm_client/openai_client.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{graphiti_core-0.12.0rc2 → graphiti_core-0.12.0rc4}/graphiti_core/models/edges/edge_db_queries.py
RENAMED
|
File without changes
|
|
File without changes
|
{graphiti_core-0.12.0rc2 → graphiti_core-0.12.0rc4}/graphiti_core/models/nodes/node_db_queries.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{graphiti_core-0.12.0rc2 → graphiti_core-0.12.0rc4}/graphiti_core/prompts/extract_edge_dates.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{graphiti_core-0.12.0rc2 → graphiti_core-0.12.0rc4}/graphiti_core/prompts/invalidate_edges.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{graphiti_core-0.12.0rc2 → graphiti_core-0.12.0rc4}/graphiti_core/prompts/summarize_nodes.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{graphiti_core-0.12.0rc2 → graphiti_core-0.12.0rc4}/graphiti_core/search/search_config_recipes.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{graphiti_core-0.12.0rc2 → graphiti_core-0.12.0rc4}/graphiti_core/utils/maintenance/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{graphiti_core-0.12.0rc2 → graphiti_core-0.12.0rc4}/graphiti_core/utils/maintenance/utils.py
RENAMED
|
File without changes
|
|
File without changes
|