正在学习
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 作为持续循环的一部分来使用:
- 意图阶段:用自然语言明确你想要实现的目标(一个新功能、错误修复或架构变更)。
- 推理阶段:Claude 概述其计划或方法,让你在生成代码之前审阅其推理过程。
- 执行阶段:Claude 生成完整的、经过验证的代码,并带有内联注释。
- 验证阶段:你在本地测试或运行代码,将错误或测试结果反馈给 Claude 以进行优化。
- 反思阶段:Claude 总结所发生的更改及其原因,创建可供未来参考的知识产物。
这个循环镜像了人类结对编程的过程:计划、编写、测试和迭代学习。一旦实现自动化或持续重复,它就形成了一个 Claude 循环——一个由反馈驱动的开发系统,能够减少摩擦并加快交付。
一个良好的工作流还能区分临时提示(用于探索性任务)和持久系统提示(用于定义 Claude 在特定项目中的长期行为)。将二者分开可以防止上下文漂移,并确保无论会话持续多久,Claude 的行为都是可预测的。
动手示例:持续的 Claude 工作流
让我们构建一个轻量级的、由 Claude 辅助的循环,用于开发和优化一个简单的 Flask API。该循环将自动化规划、生成、测试和总结的流程。
claude_workflow.py
练习题
一个高效的 Claude 驱动工作流的主要目标是什么?
工作流编排的哪个阶段涉及 Claude 在代码生成之前概述其计划或方法?
以下哪些是使用 Claude 时工作流编排的阶段?(选择所有适用的)
Claude 循环是一次性过程,不涉及迭代。
__________阶段涉及 Claude 总结发生了什么变化以及为什么变化,创建一个知识工件以供未来参考。
解释在 Claude 驱动的工作流程中区分临时和持久系统提示的目的。
以下哪项最能描述提示大小对 token 使用量的影响?
要求简洁总结而非深入分析可以减少输出标记数。
使用诸如"限制在 150 字以内"这样的约束有助于控制 __________ 令牌使用。
如何在管理 token 使用时平衡清晰、简洁和精确?请举例说明。
以下哪些是管理 token 使用量的优化策略?(选择所有适用的)
工作流编排的哪个阶段涉及在本地测试或运行代码,并将错误或测试结果反馈给 Claude 以进行优化?
意图阶段是工作流编排的第一阶段,涉及用自然语言阐明你想要实现的目标。
__________ 阶段涉及 Claude 生成完整的、经过验证的代码,并带有内联注释。
解释 Claude 循环如何在开发工作流中加速交付。
在由 Claude 驱动的工作流程中优化 token 使用时,以下哪种策略在减少输出 token 的同时保持有用的见解最为有效?
以下哪些是高效的 Claude 驱动工作流的关键要素?(选择所有适用的)
在由 Claude 驱动的工作流中,反思阶段主要侧重于 Claude 总结发生了什么变化以及为何变化,从而创建一个知识工件以供将来参考。
为了防止在 Claude 驱动的工作流程中出现上下文漂移,重要的是要区分 ___ 和持久性系统提示。
解释在由 Claude 驱动的工作流中,意图阶段是如何提升开发过程整体生产力的。
登录后解锁笔记、知识点解析、AI 问答
立即登录