如果 Bedrock 的输出被截断或在句子中途被切断,最常见的原因是超过了模型响应长度的最大限制。Bedrock 模型有一个可配置的参数(通常称为 max_tokens
或 response_length
),用于控制模型生成的文本量。如果此值设置得太低,则一旦达到限制,响应将突然结束。例如,如果您的模型配置为生成 300 个 token,但响应需要 500 个 token 才能完成,则最后 200 个 token 将丢失。要解决此问题,请增加 API 请求或配置设置中的 max_tokens
值。但是,请注意,每个模型都有一个上限 token 限制(例如,某些模型为 4,000 个 token),因此您不能超过该限制。请始终查看您的模型文档以获取详细信息。
另一种方法是管理输入长度。模型对输入和输出的总 token 数都有一个限制。如果您的输入提示非常长,则留给响应的 token 会更少。例如,如果总 token 限制为 4,096,而您的输入使用 3,500 个 token,则响应只能为 596 个 token 长。为了避免截断,请删除不必要的上下文或将任务分成多个步骤来缩短输入。例如,不要要求模型在一个请求中总结一份 10 页的文档,而是将其分成几个部分并分别处理每个部分。此外,使用 API 的 token 计数工具(如 Bedrock 的内置实用程序或 tiktoken
等 OpenAI 模型的库)来估计发出请求之前的 token 使用量。
如果截断仍然存在,请实施编程检查以查找不完整的响应。例如,检测响应是否在句子中途结束或缺少标点符号,并自动重试请求并使用更高的 max_tokens
值。您还可以使用流式传输来逐步接收输出,并在模型发出完成信号时停止(例如,通过文本结束 token)。例如,启用流式传输后,您可以捕获生成时的响应,并通过动态调整参数来处理提前终止。最后,构建您的提示以鼓励简洁的答案。明确要求模型“将响应保持在 X 个 token 以下”或“将长答案分成多个部分”。例如,像“用 500 个或更少的 token 解释量子计算”这样的提示会设定明确的期望并降低截断的风险。