正在学习

6.4 成本与令牌使用管理

需求:pip install anthropic

用法:

export ANTHROPIC_API_KEY="your_api_key_here"

python token_tracker.py

import os

from anthropic import Anthropic

client = Anthropic(api_key=os.getenv("ANTHROPIC_API_KEY"))

def send_prompt(prompt_text: str, model="claude-3-5-sonnet-20240620"):

    """向 Claude 发送提示并打印 token 使用统计信息。"""

    message = client.messages.create(

        model=model,

        max_tokens=300,

        messages=[{"role": "user", "content": prompt_text}]

    )

    usage = message.usage # 包含输入/输出 token 数据

    print("Claude 的回复:\n")

    print(message.content[0].text)

    print("\nToken 使用摘要:")

    print(f" 输入 token 数:{usage.input_tokens}")

    print(f" 输出 token 数:{usage.output_tokens}")

    print(f" 总 token 数:{usage.input_tokens + usage.output_tokens}")

if __name__ == "__main__":

    prompt = "用简短的例子解释 Python 中同步和异步编程的区别。"

    send_prompt(prompt)

说明:本脚本不仅打印 Claude 的回复,还报告输入、输出和总共使用了多少 token。你可以通过发送不同的提示进行实验,观察提示大小和详尽程度的变化如何影响成本。

例如:

  • 添加详细的说明或长代码片段会大幅增加输入 token 数。
  • 请求"简洁总结"而非"深入分析"可将输出 token 数减少近一半。

实际优化示例

下面是一个简单的演示,展示如何通过限制 Claude 的输出来有效控制 token 使用:

prompt_long = (

    "详细解释异步编程,并提供多个例子,"

    "与多线程和多进程进行比较。"

)

prompt_short = (

    "用 100 字总结异步编程与线程的区别。"

)

for prompt in [prompt_long, prompt_short]:

    print("\n提示长度:", len(prompt.split()), "个词")

    send_prompt(prompt)

你会观察到,更短、更聚焦的提示能减少 token 数量和成本,同时仍能提供有用的见解。这印证了在使用 AI 模型时,清晰胜过冗长。

澄清表格

方面 定义 / 示例 对 Token 使用的影响 优化策略
提示大小 输入文本长度 直接增加输入 token 数 保持上下文最小化;复用总结
回复长度 Claude 生成的输出 影响输出 token 和成本 使用"限制在 150 字以内"等约束
模型类型 例如 Haiku vs. Sonnet vs. Opus 决定 token 成本乘数 根据任务复杂度匹配合适的模型
对话深度 单次会话中的轮次 累积历史 token 截断或总结对话记忆
冗余上下文 重复的说明或未更改的代码 浪费输入 token 将参考代码片段存储在外部
系统提示 持续的行为配置 较小但累积的开销 保持系统说明简洁

管理 token 使用是一项平衡清晰、简洁和精确的技能。通过监控提示消耗的 token 数量、选择合适的模型以及设置明确的输出限制,你可以完全掌控性能和成本。高效的开发者将 token 视为计算周期——每个 token 都应有其用途。

在下一节中,我们将探讨缓存与复用策略,你将学习如何存储 Claude 的中间回复,并在跨会话中智能地复用它们,从而在保持上下文连续性的同时节省时间和预算。

6.5 构建高效的 Claude 驱动工作流

高效的 Claude 驱动工作流旨在设计你、你的工具以及 Claude Code 推理能力之间的高效节奏。目标不仅仅是将 Claude 用于临时性的代码生成,而是将其作为开发循环中的结构化组成部分——从头脑风暴、搭建代码脚手架,到调试、重构和测试。当开发者系统化地使用 Claude 时,它会成为团队的智能延伸,而非偶尔使用的助手。本节将教你如何构建这样的系统:一个可重复、低摩擦的流程,能够提升创造力、确保准确性,并在各个项目中保持稳定的势头。

概念开发

使用 Claude Code 提高生产力的秘诀在于工作流编排——结构化你的交互,使每次交流都具备上下文、目标和连续性。你不是孤立地进行提示,而是将 Claude 作为持续循环的一部分来使用:

  1. 意图阶段:用自然语言明确你想要实现的目标(一个新功能、错误修复或架构变更)。
  2. 推理阶段:Claude 概述其计划或方法,让你在生成代码之前审阅其推理过程。
  3. 执行阶段:Claude 生成完整的、经过验证的代码,并带有内联注释。
  4. 验证阶段:你在本地测试或运行代码,将错误或测试结果反馈给 Claude 以进行优化。
  5. 反思阶段:Claude 总结所发生的更改及其原因,创建可供未来参考的知识产物。

这个循环镜像了人类结对编程的过程:计划、编写、测试和迭代学习。一旦实现自动化或持续重复,它就形成了一个 Claude 循环——一个由反馈驱动的开发系统,能够减少摩擦并加快交付。

一个良好的工作流还能区分临时提示(用于探索性任务)和持久系统提示(用于定义 Claude 在特定项目中的长期行为)。将二者分开可以防止上下文漂移,并确保无论会话持续多久,Claude 的行为都是可预测的。

动手示例:持续的 Claude 工作流

让我们构建一个轻量级的、由 Claude 辅助的循环,用于开发和优化一个简单的 Flask API。该循环将自动化规划、生成、测试和总结的流程。

claude_workflow.py

练习题

一个高效的 Claude 驱动工作流的主要目标是什么?

A. 仅将 Claude 用于临时性的代码生成
B. 将 Claude 集成为开发循环中一个结构化的组成部分
C. 尽量减少与 Claude 的交互
D. 用 Claude 取代人类开发者

工作流编排的哪个阶段涉及 Claude 在代码生成之前概述其计划或方法?

A. 意图阶段
B. 推理阶段
C. 执行阶段
D. 验证阶段

以下哪些是使用 Claude 时工作流编排的阶段?(选择所有适用的)

A. 意图阶段
B. 推理阶段
C. 执行阶段
D. 验证阶段
E. 反思阶段

Claude 循环是一次性过程,不涉及迭代。

__________阶段涉及 Claude 总结发生了什么变化以及为什么变化,创建一个知识工件以供未来参考。

解释在 Claude 驱动的工作流程中区分临时和持久系统提示的目的。

以下哪项最能描述提示大小对 token 使用量的影响?

A. 它对 token 使用量没有影响
B. 它直接增加输入 token 数量
C. 它减少输出 token 数量
D. 它只影响模型类型

要求简洁总结而非深入分析可以减少输出标记数。

使用诸如"限制在 150 字以内"这样的约束有助于控制 __________ 令牌使用。

如何在管理 token 使用时平衡清晰、简洁和精确?请举例说明。

以下哪些是管理 token 使用量的优化策略?(选择所有适用的)

A. 保持上下文最小化;重用摘要
B. 使用约束,例如"限制在 150 字以内"
C. 使模型能力与任务复杂度相匹配
D. 截断或总结对话记忆
E. 在外部存储参考片段

工作流编排的哪个阶段涉及在本地测试或运行代码,并将错误或测试结果反馈给 Claude 以进行优化?

A. 意图阶段
B. 推理阶段
C. 执行阶段
D. 验证阶段

意图阶段是工作流编排的第一阶段,涉及用自然语言阐明你想要实现的目标。

__________ 阶段涉及 Claude 生成完整的、经过验证的代码,并带有内联注释。

解释 Claude 循环如何在开发工作流中加速交付。

在由 Claude 驱动的工作流程中优化 token 使用时,以下哪种策略在减少输出 token 的同时保持有用的见解最为有效?

A. 将模型类型升级到 Opus 以获得更详细的回答
B. 使用系统提示来定义 Claude 的长期行为
C. 要求提供简洁的总结而非深入的分析
D. 将 API 密钥存储在源代码中以便更轻松地访问

以下哪些是高效的 Claude 驱动工作流的关键要素?(选择所有适用的)

A. 仅将 Claude 用于临时代码生成
B. 通过上下文、目的和连续性来构建交互
C. 区分临时性和持久性的系统提示
D. 忽视速率限制以最大化生产力
E. 将 Claude 集成为一致开发周期的一部分

在由 Claude 驱动的工作流中,反思阶段主要侧重于 Claude 总结发生了什么变化以及为何变化,从而创建一个知识工件以供将来参考。

为了防止在 Claude 驱动的工作流程中出现上下文漂移,重要的是要区分 ___ 和持久性系统提示。

解释在由 Claude 驱动的工作流中,意图阶段是如何提升开发过程整体生产力的。

登录后解锁笔记、知识点解析、AI 问答

立即登录