graphiti/graphiti_core
alan blount e16740be9d
feat(gemini): embedding batch size & lite default (#680)
* feat(gemini): embedding batch size & lite default

The new `gemini-embedding-001` model only allows one embedding input per batch
(instance), but has other impressive statistics:
https://cloud.google.com/vertex-ai/generative-ai/docs/model-reference/text-embeddings-api

The -DEFAULT_SMALL_MODEL must not have the 'models/' prefix.

* Refactor: Improve Gemini Client Error Handling and Reliability

This commit introduces several improvements to the Gemini client to enhance its robustness and reliability.

- Implemented more specific error handling for various Gemini API responses, including rate limits and safety blocks.
- Added a JSON salvaging mechanism to gracefully handle incomplete or malformed JSON responses from the API.
- Introduced detailed logging for failed LLM generations to simplify debugging and troubleshooting.
- Refined the Gemini embedder to better handle empty or invalid embedding responses.
- Updated and corrected tests to align with the improved error handling and reliability features.

* fix: cleanup in _log_failed_generation()

* fix: cleanup in _log_failed_generation()

* Fix ruff B904 error in gemini_client.py

* fix(gemini): correct retry logic and enhance error logging

Updated the retry mechanism in the GeminiClient to ensure it retries the maximum number of times specified. Improved error logging to provide clearer insights when all retries are exhausted, including detailed information about the last error encountered.

* fix(gemini): enhance error handling for safety blocks and update tests

Refined error handling in the GeminiClient to improve detection of safety block conditions. Updated test cases to reflect changes in exception messages and ensure proper retry logic is enforced. Enhanced mock responses in tests to better simulate real-world scenarios, including handling of invalid JSON responses.

* revert default gemini to text-embedding-001

---------

Co-authored-by: Daniel Chalef <131175+danielchalef@users.noreply.github.com>
2025-07-13 10:20:22 -07:00
..
cross_encoder Bulk ingestion (#698) 2025-07-10 12:14:49 -04:00
driver [REFACTOR][FIX] Move away from DEFAULT_DATABASE environment variable in favour of driver-config support (dc) (#699) 2025-07-10 17:25:39 -04:00
embedder feat(gemini): embedding batch size & lite default (#680) 2025-07-13 10:20:22 -07:00
llm_client feat(gemini): embedding batch size & lite default (#680) 2025-07-13 10:20:22 -07:00
models Node name bug fix (#622) 2025-06-24 17:13:27 -04:00
prompts Bulk ingestion (#698) 2025-07-10 12:14:49 -04:00
search update search filters (#706) 2025-07-11 10:53:15 -04:00
telemetry feat: add telemetry with PostHog and update Docker configurations (#633) 2025-06-27 12:23:30 -07:00
utils [REFACTOR][FIX] Move away from DEFAULT_DATABASE environment variable in favour of driver-config support (dc) (#699) 2025-07-10 17:25:39 -04:00
__init__.py chore: Fix packaging (#38) 2024-08-25 10:07:50 -07:00
edges.py [REFACTOR][FIX] Move away from DEFAULT_DATABASE environment variable in favour of driver-config support (dc) (#699) 2025-07-10 17:25:39 -04:00
errors.py Add group ID validation and error handling (#618) 2025-06-24 09:33:54 -07:00
graph_queries.py update driver (#583) 2025-06-13 14:12:09 -04:00
graphiti.py [REFACTOR][FIX] Move away from DEFAULT_DATABASE environment variable in favour of driver-config support (dc) (#699) 2025-07-10 17:25:39 -04:00
graphiti_types.py Add support for falkordb (#575) 2025-06-13 12:06:57 -04:00
helpers.py [REFACTOR][FIX] Move away from DEFAULT_DATABASE environment variable in favour of driver-config support (dc) (#699) 2025-07-10 17:25:39 -04:00
nodes.py [REFACTOR][FIX] Move away from DEFAULT_DATABASE environment variable in favour of driver-config support (dc) (#699) 2025-07-10 17:25:39 -04:00
py.typed Add py.typed file (#105) 2024-09-11 08:44:06 -04:00