正在学习
动手示例:令牌估算比较
# 模拟的 Claude API 调用(模拟)
def call_claude(prompt: str) -> str:
"""模拟 Claude API 调用并带有模拟延迟。"""
print("正在调用 Claude API...")
time.sleep(1.5) # 模拟延迟
return f"已为以下内容生成代码:{prompt[:30]}..."
缓存存储
CACHE_FILE = "claude_cache.json"
def load_cache():
try:
with open(CACHE_FILE, "r") as f:
return json.load(f)
except FileNotFoundError:
return {}
def save_cache(cache):
with open(CACHE_FILE, "w") as f:
json.dump(cache, f, indent=4)
def get_cached_response(prompt: str):
"""如果存在缓存结果则返回;否则查询 Claude 并存储。"""
cache = load_cache()
prompt_hash = hashlib.sha256(prompt.encode()).hexdigest()
if prompt_hash in cache:
print("缓存命中 — 返回存储的响应。")
return cache[prompt_hash]
print("缓存未命中 — 正在查询 Claude。")
response = call_claude(prompt)
cache[prompt_hash] = response
save_cache(cache)
return response
练习题
call_claude 函数中 time.sleep(1.5) 这一行的作用是什么?
A. 模拟网络延迟
B. 生成随机响应
C. 对提示字符串进行哈希
D. 加载缓存文件
代码中 CACHE_FILE 的值是什么?
A. cache.json
B. claude_cache.json
C. data.json
D. temp_cache.json
以下关于 load_cache 函数的说法哪些是正确的?
A. 它尝试打开并读取缓存文件
B. 如果文件不存在,它返回一个空字典
C. 它将缓存保存到磁盘
D. 它使用 try-except 块来处理 FileNotFoundError
save_cache 函数将缓存字典以 JSON 格式写入磁盘,并使用缩进以提高可读性。
get_cached_response 函数使用 ___ 为每个提示生成唯一键。
解释当使用一个从未使用过的提示调用 get_cached_response 时会发生什么。
当使用提示词 'Generate a Python function' 调用 call_claude 函数时,它返回什么?(假设这是第一次调用)
A. Generated code for: Generate a Python function...
B. Generated code for: Generate a Python func...
C. 一个空字符串
D. 提示词的哈希值
缓存系统对同一提示的多次调用会返回不同的响应。
理解缓存系统如何降低 API 成本涉及哪些知识点?
A. 模拟带有人工延迟的 Claude API 调用
B. 缓存文件定义
C. 获取缓存响应函数
D. 用于成本控制的令牌(Token)估算
你会如何修改缓存系统以实现最大缓存大小限制?
在实现 get_cached_response 函数时,以下哪项最能描述缓存与令牌成本优化之间的关系?
A. 缓存通过存储冗余数据来增加令牌成本
B. 缓存通过重用先前的响应来降低令牌成本
C. 缓存对令牌成本没有影响
D. 缓存仅影响输入令牌成本,不影响输出
call_claude 函数中的 time.sleep(1.5) 通过增加处理的 token 数量直接影响 token 成本。
为了在使用 Claude 的 API 时降低成本,你应该___之前的响应,而不是对相同的提示进行新的 API 调用。
登录后解锁笔记、知识点解析、AI 问答
立即登录