# KV Cache SDK Examples These examples show how to use the Python SDK to store and retrieve KV cache tensors through the LMCache MP HTTP API. The SDK path is memory-first: applications can retrieve a tensor, pair it with new token metadata, and store it again without writing the tensor through a local storage format. Store will return False if LMCache already have the KV Cache with the same token sequence. ## End-to-end vLLM flow First, start up the vLLM and LMCache server by running commands listed in the first cell of `e2e_kv_edit.ipynb`. Then, starting from cell 2 of `e2e_kv_edit.ipynb`, it is doing below experiment flow: 1. Send a source prompt to vLLM so the normal connector stores KV in LMCache. 2. Retrieve the source KV cache into an in-memory tensor with `retrieve()`. 3. Build a target token-ID prompt: the same length as the source prompt and identical apart from a few different synthetic leading tokens. 4. Store the source KV under the target prefix with `store()`. 5. Send the target token IDs to vLLM so the target prefix hits the remapped KV. 6. Print retrieve counts, latencies, response previews, and whether the source and target outputs match. The target prompt starts with different token IDs, so it does not rely on a serving-engine local prefix match. Because the prompts are identical apart from those leading tokens, reusing the source KV reconstructs the same final context for the target request, which should produce the same deterministic output. The core SDK pattern used by the end-to-end example is: ```python import lmcache.sdk.kvcache as lmc_sdk ctx = lmc_sdk.connect( url="tcp://localhost:6555", # ZMQ message queue http_url="http://localhost:8080", # HTTP config / status model_name="...", ) kv = lmc_sdk.retrieve(ctx, tokens=source_tokens) if kv is not None: lmc_sdk.store(ctx, kv=kv, tokens=target_tokens) lmc_sdk.close(ctx) ``` ### Requirements - An LMCache MP server running with HTTP enabled. - A model already registered with that server. Check `/status` for the registered `model_name`, `chunk_size`, layer count, dtype, and hidden dim. - A homogeneous `KV_2LTD` layout. Use `--cache-salt` on all commands when storing and retrieving from a non-default namespace.