text: The first time, it is not yet in cache, so it should take longerllm("Tell me a joke")    CPU times: user 6.88 ms, sys: 8.75 ms, total: 15.6 ms    Wall time: 1.04 s    '\n\nWhy did the chicken cross the road?\n\nTo get to the other side!'# The second time it is, so it goes fasterllm("Tell me a joke")    CPU times: user 1.59 ms, sys: 610 Âµs, total: 2.2 ms    Wall time: 5.58 ms    '\n\nWhy did the chicken cross the road?\n\nTo get to the other side!'Semantic Cacheâ€‹Use Redis to cache prompts and responses and evaluate hits based on semantic similarity.from langchain.embeddings import OpenAIEmbeddingsfrom langchain.cache import RedisSemanticCachelangchain.llm_cache = RedisSemanticCache(    redis_url="redis://localhost:6379", embedding=OpenAIEmbeddings())# The first time, it is not yet in cache, so it should take longerllm("Tell me a joke")    CPU times: user 351 ms, sys: 156 ms, total: 507 ms    Wall time: 3.37 s    "\n\nWhy don't scientists trust atoms?\nBecause they make up everything."# The second time, while not a direct hit, the question is semantically similar to the original question,# so it uses the cached result!llm("Tell me one joke")    CPU times: user 6.25 ms, sys: 2.72 ms, total: 8.97 ms    Wall time: 262 ms    "\n\nWhy don't scientists trust