graphiti-core 0.5.0rc4__tar.gz → 0.5.0rc5__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.

Files changed (59) hide show
  1. {graphiti_core-0.5.0rc4 → graphiti_core-0.5.0rc5}/PKG-INFO +1 -1
  2. {graphiti_core-0.5.0rc4 → graphiti_core-0.5.0rc5}/graphiti_core/llm_client/client.py +26 -0
  3. {graphiti_core-0.5.0rc4 → graphiti_core-0.5.0rc5}/graphiti_core/llm_client/openai_client.py +1 -0
  4. {graphiti_core-0.5.0rc4 → graphiti_core-0.5.0rc5}/pyproject.toml +1 -1
  5. {graphiti_core-0.5.0rc4 → graphiti_core-0.5.0rc5}/LICENSE +0 -0
  6. {graphiti_core-0.5.0rc4 → graphiti_core-0.5.0rc5}/README.md +0 -0
  7. {graphiti_core-0.5.0rc4 → graphiti_core-0.5.0rc5}/graphiti_core/__init__.py +0 -0
  8. {graphiti_core-0.5.0rc4 → graphiti_core-0.5.0rc5}/graphiti_core/cross_encoder/__init__.py +0 -0
  9. {graphiti_core-0.5.0rc4 → graphiti_core-0.5.0rc5}/graphiti_core/cross_encoder/bge_reranker_client.py +0 -0
  10. {graphiti_core-0.5.0rc4 → graphiti_core-0.5.0rc5}/graphiti_core/cross_encoder/client.py +0 -0
  11. {graphiti_core-0.5.0rc4 → graphiti_core-0.5.0rc5}/graphiti_core/cross_encoder/openai_reranker_client.py +0 -0
  12. {graphiti_core-0.5.0rc4 → graphiti_core-0.5.0rc5}/graphiti_core/edges.py +0 -0
  13. {graphiti_core-0.5.0rc4 → graphiti_core-0.5.0rc5}/graphiti_core/embedder/__init__.py +0 -0
  14. {graphiti_core-0.5.0rc4 → graphiti_core-0.5.0rc5}/graphiti_core/embedder/client.py +0 -0
  15. {graphiti_core-0.5.0rc4 → graphiti_core-0.5.0rc5}/graphiti_core/embedder/openai.py +0 -0
  16. {graphiti_core-0.5.0rc4 → graphiti_core-0.5.0rc5}/graphiti_core/embedder/voyage.py +0 -0
  17. {graphiti_core-0.5.0rc4 → graphiti_core-0.5.0rc5}/graphiti_core/errors.py +0 -0
  18. {graphiti_core-0.5.0rc4 → graphiti_core-0.5.0rc5}/graphiti_core/graphiti.py +0 -0
  19. {graphiti_core-0.5.0rc4 → graphiti_core-0.5.0rc5}/graphiti_core/helpers.py +0 -0
  20. {graphiti_core-0.5.0rc4 → graphiti_core-0.5.0rc5}/graphiti_core/llm_client/__init__.py +0 -0
  21. {graphiti_core-0.5.0rc4 → graphiti_core-0.5.0rc5}/graphiti_core/llm_client/anthropic_client.py +0 -0
  22. {graphiti_core-0.5.0rc4 → graphiti_core-0.5.0rc5}/graphiti_core/llm_client/config.py +0 -0
  23. {graphiti_core-0.5.0rc4 → graphiti_core-0.5.0rc5}/graphiti_core/llm_client/errors.py +0 -0
  24. {graphiti_core-0.5.0rc4 → graphiti_core-0.5.0rc5}/graphiti_core/llm_client/groq_client.py +0 -0
  25. {graphiti_core-0.5.0rc4 → graphiti_core-0.5.0rc5}/graphiti_core/llm_client/utils.py +0 -0
  26. {graphiti_core-0.5.0rc4 → graphiti_core-0.5.0rc5}/graphiti_core/models/__init__.py +0 -0
  27. {graphiti_core-0.5.0rc4 → graphiti_core-0.5.0rc5}/graphiti_core/models/edges/__init__.py +0 -0
  28. {graphiti_core-0.5.0rc4 → graphiti_core-0.5.0rc5}/graphiti_core/models/edges/edge_db_queries.py +0 -0
  29. {graphiti_core-0.5.0rc4 → graphiti_core-0.5.0rc5}/graphiti_core/models/nodes/__init__.py +0 -0
  30. {graphiti_core-0.5.0rc4 → graphiti_core-0.5.0rc5}/graphiti_core/models/nodes/node_db_queries.py +0 -0
  31. {graphiti_core-0.5.0rc4 → graphiti_core-0.5.0rc5}/graphiti_core/nodes.py +0 -0
  32. {graphiti_core-0.5.0rc4 → graphiti_core-0.5.0rc5}/graphiti_core/prompts/__init__.py +0 -0
  33. {graphiti_core-0.5.0rc4 → graphiti_core-0.5.0rc5}/graphiti_core/prompts/dedupe_edges.py +0 -0
  34. {graphiti_core-0.5.0rc4 → graphiti_core-0.5.0rc5}/graphiti_core/prompts/dedupe_nodes.py +0 -0
  35. {graphiti_core-0.5.0rc4 → graphiti_core-0.5.0rc5}/graphiti_core/prompts/eval.py +0 -0
  36. {graphiti_core-0.5.0rc4 → graphiti_core-0.5.0rc5}/graphiti_core/prompts/extract_edge_dates.py +0 -0
  37. {graphiti_core-0.5.0rc4 → graphiti_core-0.5.0rc5}/graphiti_core/prompts/extract_edges.py +0 -0
  38. {graphiti_core-0.5.0rc4 → graphiti_core-0.5.0rc5}/graphiti_core/prompts/extract_nodes.py +0 -0
  39. {graphiti_core-0.5.0rc4 → graphiti_core-0.5.0rc5}/graphiti_core/prompts/invalidate_edges.py +0 -0
  40. {graphiti_core-0.5.0rc4 → graphiti_core-0.5.0rc5}/graphiti_core/prompts/lib.py +0 -0
  41. {graphiti_core-0.5.0rc4 → graphiti_core-0.5.0rc5}/graphiti_core/prompts/models.py +0 -0
  42. {graphiti_core-0.5.0rc4 → graphiti_core-0.5.0rc5}/graphiti_core/prompts/prompt_helpers.py +0 -0
  43. {graphiti_core-0.5.0rc4 → graphiti_core-0.5.0rc5}/graphiti_core/prompts/summarize_nodes.py +0 -0
  44. {graphiti_core-0.5.0rc4 → graphiti_core-0.5.0rc5}/graphiti_core/py.typed +0 -0
  45. {graphiti_core-0.5.0rc4 → graphiti_core-0.5.0rc5}/graphiti_core/search/__init__.py +0 -0
  46. {graphiti_core-0.5.0rc4 → graphiti_core-0.5.0rc5}/graphiti_core/search/search.py +0 -0
  47. {graphiti_core-0.5.0rc4 → graphiti_core-0.5.0rc5}/graphiti_core/search/search_config.py +0 -0
  48. {graphiti_core-0.5.0rc4 → graphiti_core-0.5.0rc5}/graphiti_core/search/search_config_recipes.py +0 -0
  49. {graphiti_core-0.5.0rc4 → graphiti_core-0.5.0rc5}/graphiti_core/search/search_utils.py +0 -0
  50. {graphiti_core-0.5.0rc4 → graphiti_core-0.5.0rc5}/graphiti_core/utils/__init__.py +0 -0
  51. {graphiti_core-0.5.0rc4 → graphiti_core-0.5.0rc5}/graphiti_core/utils/bulk_utils.py +0 -0
  52. {graphiti_core-0.5.0rc4 → graphiti_core-0.5.0rc5}/graphiti_core/utils/datetime_utils.py +0 -0
  53. {graphiti_core-0.5.0rc4 → graphiti_core-0.5.0rc5}/graphiti_core/utils/maintenance/__init__.py +0 -0
  54. {graphiti_core-0.5.0rc4 → graphiti_core-0.5.0rc5}/graphiti_core/utils/maintenance/community_operations.py +0 -0
  55. {graphiti_core-0.5.0rc4 → graphiti_core-0.5.0rc5}/graphiti_core/utils/maintenance/edge_operations.py +0 -0
  56. {graphiti_core-0.5.0rc4 → graphiti_core-0.5.0rc5}/graphiti_core/utils/maintenance/graph_data_operations.py +0 -0
  57. {graphiti_core-0.5.0rc4 → graphiti_core-0.5.0rc5}/graphiti_core/utils/maintenance/node_operations.py +0 -0
  58. {graphiti_core-0.5.0rc4 → graphiti_core-0.5.0rc5}/graphiti_core/utils/maintenance/temporal_operations.py +0 -0
  59. {graphiti_core-0.5.0rc4 → graphiti_core-0.5.0rc5}/graphiti_core/utils/maintenance/utils.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: graphiti-core
3
- Version: 0.5.0rc4
3
+ Version: 0.5.0rc5
4
4
  Summary: A temporal graph building library
5
5
  License: Apache-2.0
6
6
  Author: Paul Paliychuk
@@ -56,6 +56,29 @@ class LLMClient(ABC):
56
56
  self.cache_enabled = cache
57
57
  self.cache_dir = Cache(DEFAULT_CACHE_DIR) # Create a cache directory
58
58
 
59
+
60
+ def _clean_input(self, input: str) -> str:
61
+ """Clean input string of invalid unicode and control characters.
62
+
63
+ Args:
64
+ input: Raw input string to be cleaned
65
+
66
+ Returns:
67
+ Cleaned string safe for LLM processing
68
+ """
69
+ # Clean any invalid Unicode
70
+ cleaned = input.encode('utf-8', errors='ignore').decode('utf-8')
71
+
72
+ # Remove zero-width characters and other invisible unicode
73
+ zero_width = '\u200b\u200c\u200d\ufeff\u2060'
74
+ for char in zero_width:
75
+ cleaned = cleaned.replace(char, '')
76
+
77
+ # Remove control characters except newlines, returns, and tabs
78
+ cleaned = ''.join(char for char in cleaned if ord(char) >= 32 or char in '\n\r\t')
79
+
80
+ return cleaned
81
+
59
82
  @retry(
60
83
  stop=stop_after_attempt(4),
61
84
  wait=wait_random_exponential(multiplier=10, min=5, max=120),
@@ -106,6 +129,9 @@ class LLMClient(ABC):
106
129
  logger.debug(f'Cache hit for {cache_key}')
107
130
  return cached_response
108
131
 
132
+ for message in messages:
133
+ message.content = self._clean_input(message.content)
134
+
109
135
  response = await self._generate_response_with_retry(messages, response_model)
110
136
 
111
137
  if self.cache_enabled:
@@ -88,6 +88,7 @@ class OpenAIClient(LLMClient):
88
88
  ) -> dict[str, typing.Any]:
89
89
  openai_messages: list[ChatCompletionMessageParam] = []
90
90
  for m in messages:
91
+ m.content = self._clean_input(m.content)
91
92
  if m.role == 'user':
92
93
  openai_messages.append({'role': 'user', 'content': m.content})
93
94
  elif m.role == 'system':
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "graphiti-core"
3
- version = "0.5.0pre4"
3
+ version = "0.5.0pre5"
4
4
  description = "A temporal graph building library"
5
5
  authors = [
6
6
  "Paul Paliychuk <paul@getzep.com>",