正在学习

动手示例:令牌估算比较

# 模拟的 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 问答

立即登录