跳到主要内容

LLM 缓存

AutoGen 支持缓存 API 请求,以便在发出相同请求时能够重复使用。这在重复或继续实验以确保可重复性和节省成本时非常有用。

自版本 0.2.8 起,一个可配置的上下文管理器允许您轻松配置LLM缓存,可以使用 DiskCacheRedisCache 或 Cosmos DB Cache。在上下文管理器内的所有代理将使用相同的缓存。

from autogen import Cache

# Use Redis as cache
with Cache.redis(redis_url="redis://localhost:6379/0") as cache:
user.initiate_chat(assistant, message=coding_task, cache=cache)

# Use DiskCache as cache
with Cache.disk() as cache:
user.initiate_chat(assistant, message=coding_task, cache=cache)

# Use Azure Cosmos DB as cache
with Cache.cosmos_db(connection_string="your_connection_string", database_id="your_database_id", container_id="your_container_id") as cache:
user.initiate_chat(assistant, message=coding_task, cache=cache)

缓存也可以直接传递给模型客户端的创建调用。

client = OpenAIWrapper(...)
with Cache.disk() as cache:
client.create(..., cache=cache)

控制随机种子

你可以调整cache_seed参数以获得不同的LLM输出,同时仍然使用缓存。

# Setting the cache_seed to 1 will use a different cache from the default one
# and you will see different output.
with Cache.disk(cache_seed=1) as cache:
user.initiate_chat(assistant, message=coding_task, cache=cache)

缓存路径

默认情况下,DiskCache 使用 .cache 进行存储。要更改缓存目录,请设置 cache_path_root

with Cache.disk(cache_path_root="/tmp/autogen_cache") as cache:
user.initiate_chat(assistant, message=coding_task, cache=cache)

禁用缓存

为了向后兼容,DiskCache默认开启,并且cache_seed设置为41。要完全禁用缓存,可以在代理的llm_config中将cache_seed设置为None

assistant = AssistantAgent(
"coding_agent",
llm_config={
"cache_seed": None,
"config_list": OAI_CONFIG_LIST,
"max_tokens": 1024,
},
)

cache_seed 和 OpenAI的 seed 参数之间的区别

OpenAI v1.1 引入了一个新参数 seed。AutoGen 的 cache_seed 与 OpenAI 的 seed 的区别在于,AutoGen 使用显式请求缓存来确保对于相同的输入产生完全相同的输出,并且当缓存命中时,不会调用 OpenAI API。OpenAI 的 seed 是一种尽力而为的确定性采样,不保证确定性。当使用 OpenAI 的 seed 并且 cache_seed 设置为 None 时,即使对于相同的输入,也会调用 OpenAI API,并且不能保证获得完全相同的输出。

优云智算