DEV Community 中文 关注 Spring AI 提示词缓存与聊天记忆:令牌流向——LLM 成本管控 2/4 本节重点讨论控制与 AI 模型输出、对话历史及重复静态内容相关的成本。输出和推理 token 的成本显著高于输入 token,部分模型的输出成本甚至高达输入的八倍。推理过程可能生成隐藏的“思考”token,同样会产生较高的输出费用。Spring AI 提供了诸如 maxTokens 等与提供商无关的长度限制,以及针对特定提供商的设置,以管理推理努力程度。对话历史涉及每次请求重新发送整个聊天日志,这会迅速推高输入 token 成本。存储并重新发送历史意味着即使是小型对话,随着时间的推移也可能导致大量的 token 使用。Spring AI 提供 MessageWindowChatMemory 来管理对话历史,其采用指定消息数量的滑动窗口机制。对于非常长的会话,VectorStoreChatMemoryAdvisor 提供了一种替代方案,它将历史存储在向量存储中,仅检索相关消息。重复的静态内容(如系统提示或工具定义)在未缓存的情况下,每次请求都会计费。提示缓存通过存储已处理的提示前缀以供重用,从而降低这些成本。Anthropic 和 AWS Bedrock 允许用户指定缓存策略,而 OpenAI 会对超过一定 token 数量的请求自动缓存提示,尽管现在缓存写入会产生费用。本地模型(如 Ollama)利用缓存来提升速度,通过保存 GPU 处理时间,但由于不存在按 token 计费的机制,因此无法通过此方式减少成本。对于这些模型,明确规划缓存策略并管理缓存键对于成本优化至关重要。 Spring AI Prompt Caching and Chat Memory: Where the Tokens Go — LLM Cost Control 2/4 dev.to DEV Community 中文 RSS thenote.app
maxTokens等与提供商无关的长度限制,以及针对特定提供商的设置,以管理推理努力程度。对话历史涉及每次请求重新发送整个聊天日志,这会迅速推高输入 token 成本。存储并重新发送历史意味着即使是小型对话,随着时间的推移也可能导致大量的 token 使用。Spring AI 提供MessageWindowChatMemory来管理对话历史,其采用指定消息数量的滑动窗口机制。对于非常长的会话,VectorStoreChatMemoryAdvisor提供了一种替代方案,它将历史存储在向量存储中,仅检索相关消息。重复的静态内容(如系统提示或工具定义)在未缓存的情况下,每次请求都会计费。提示缓存通过存储已处理的提示前缀以供重用,从而降低这些成本。Anthropic 和 AWS Bedrock 允许用户指定缓存策略,而 OpenAI 会对超过一定 token 数量的请求自动缓存提示,尽管现在缓存写入会产生费用。本地模型(如 Ollama)利用缓存来提升速度,通过保存 GPU 处理时间,但由于不存在按 token 计费的机制,因此无法通过此方式减少成本。对于这些模型,明确规划缓存策略并管理缓存键对于成本优化至关重要。