mirror of
https://github.com/langchain-ai/langgraph.git
synced 2026-08-24 00:22:25 +02:00
63 lines
1.7 KiB
Python
63 lines
1.7 KiB
Python
"""Key/value cache for use inside LangGraph deployments.
|
|
|
|
Thin wrapper around ``langgraph_api.cache``.
|
|
Values must be JSON-serializable (dicts, lists, strings, numbers, booleans,
|
|
``None``).
|
|
"""
|
|
|
|
from __future__ import annotations
|
|
|
|
from datetime import timedelta
|
|
from typing import Any
|
|
|
|
try:
|
|
from langgraph_api.cache import ( # type: ignore[unresolved-import]
|
|
cache_get as _cache_get,
|
|
)
|
|
from langgraph_api.cache import ( # type: ignore[unresolved-import]
|
|
cache_set as _cache_set,
|
|
)
|
|
except ImportError:
|
|
_cache_get = None
|
|
_cache_set = None
|
|
|
|
|
|
__all__ = [
|
|
"cache_get",
|
|
"cache_set",
|
|
]
|
|
|
|
|
|
async def cache_get(key: str) -> Any | None:
|
|
"""Get a value from the cache.
|
|
|
|
Returns the deserialized value, or ``None`` if the key is missing or expired.
|
|
|
|
Requires Agent Server runtime version 0.7.29 or later.
|
|
"""
|
|
if _cache_get is None:
|
|
raise RuntimeError(
|
|
"Cache is only available server-side within the LangGraph Agent Server "
|
|
"(https://docs.langchain.com/langsmith/deployments)."
|
|
)
|
|
return await _cache_get(key)
|
|
|
|
|
|
async def cache_set(key: str, value: Any, *, ttl: timedelta | None = None) -> None:
|
|
"""Set a value in the cache.
|
|
|
|
Args:
|
|
key: The cache key.
|
|
value: The value to cache (must be JSON-serializable).
|
|
ttl: Optional time-to-live. Capped at 1 day; ``None`` or zero
|
|
defaults to 1 day.
|
|
|
|
Requires Agent Server runtime version 0.7.29 or later.
|
|
"""
|
|
if _cache_set is None:
|
|
raise RuntimeError(
|
|
"Cache is only available server-side within the LangGraph Agent Server "
|
|
"(https://docs.langchain.com/langsmith/deployments)."
|
|
)
|
|
await _cache_set(key, value, ttl)
|