Skip to content
Open
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 3 additions & 1 deletion posthog/ai/prompts.py
Original file line number Diff line number Diff line change
Expand Up @@ -173,7 +173,9 @@ def __init__(
failures are reported to PostHog error tracking via capture_exception().
"""
self._default_cache_ttl_seconds = (
default_cache_ttl_seconds or DEFAULT_CACHE_TTL_SECONDS
default_cache_ttl_seconds
if default_cache_ttl_seconds is not None
else DEFAULT_CACHE_TTL_SECONDS
)
self._cache: Dict[PromptCacheKey, CachedPrompt] = {}
self._has_warned_deprecation = False
Expand Down
20 changes: 20 additions & 0 deletions posthog/test/ai/test_prompts.py
Original file line number Diff line number Diff line change
Expand Up @@ -512,6 +512,26 @@ def test_use_custom_default_cache_ttl_from_constructor(
prompts.get("test-prompt", with_metadata=False)
self.assertEqual(mock_get.call_count, 2)

@patch("posthog.ai.prompts._get_session")
@patch("posthog.ai.prompts.time.time")
def test_default_cache_ttl_seconds_zero_disables_caching(
self, mock_time, mock_get_session
):
"""A default TTL of 0 should disable caching, matching the per-call option."""
mock_get = mock_get_session.return_value.get
mock_get.return_value = MockResponse(json_data=self.mock_prompt_response)
mock_time.return_value = 1000.0

posthog = self.create_mock_posthog()
prompts = Prompts(posthog, default_cache_ttl_seconds=0)

prompts.get("test-prompt", with_metadata=False)
self.assertEqual(mock_get.call_count, 1)

# No time has passed, and a TTL of 0 still means every read refetches.
prompts.get("test-prompt", with_metadata=False)
self.assertEqual(mock_get.call_count, 2)

@patch("posthog.ai.prompts._get_session")
def test_url_encode_prompt_names_with_special_characters(self, mock_get_session):
"""Should URL-encode prompt names with special characters."""
Expand Down
Loading