Coverage for projects/04-llm-adapter-shadow/src/llm_adapter/utils.py: 90%

10 statements  

« prev     ^ index     » next       coverage.py v7.10.7, created at 2025-09-24 01:32 +0000

1"""Utility helpers for hashing request payloads.""" 

2 

3import hashlib 

4from typing import Any 

5 

6 

7def content_hash( 

8 provider: str, 

9 prompt: str, 

10 options: dict[str, Any] | None = None, 

11 max_tokens: int | None = None, 

12) -> str: 

13 h = hashlib.sha256() 

14 h.update(provider.encode()) 

15 h.update(prompt.encode()) 

16 h.update(repr(max_tokens).encode()) 

17 if options: 

18 h.update(repr(sorted(options.items())).encode()) 

19 return h.hexdigest()[:16]