Amazon Bedrock 通过允许开发者将对话历史记录集成到发送到其基础模型的每个 API 请求中,从而支持多轮对话应用。 当用户与聊天机器人交互时,应用程序可以将完整的对话历史记录(用户输入和先前的模型响应)作为提示的一部分传递。 该模型处理此上下文以生成相关的、连贯的回复,这些回复考虑了先前的交互。 例如,如果用户问“西雅图的天气怎么样?”,然后问“明天会下雨吗?”,模型会使用存储的上下文来推断“明天”指的是西雅图。 Bedrock 的模型旨在处理此类顺序依赖关系,从而使开发者能够构建模仿自然、感知上下文的对话的应用程序。
为了实现这一点,开发者需要构建代码以维护和更新对话状态。 例如,聊天应用程序可以将每次交换存储为消息对象列表(例如,[{role: "user", content: "..."}, {role: "assistant", content: "..."}]
)。 对于每个新的用户输入,应用程序将消息附加到列表,并通过 API 将整个历史记录发送到 Bedrock。 然后,该模型基于累积的上下文生成响应。 但是,由于模型有令牌限制(例如,Claude 的 10 万个令牌上下文窗口),开发者可能需要截断旧消息或总结过去的交互,以保持在范围内。 例如,在 10 次交换之后,应用程序可以删除最早的消息,或者使用单独的提示将对话历史记录浓缩为更短的摘要,然后再将其反馈到模型中。
Bedrock 的灵活性允许开发者将其与 AWS 服务结合使用,以实现端到端解决方案。 例如,应用程序可以使用 Amazon DynamoDB 存储与用户会话绑定的对话历史记录,从而确保上下文在多次交互中持续存在。 AWS Lambda 函数可以处理检索历史记录、调用 Bedrock 的 API 和更新数据库的逻辑。 此外,Bedrock 对多个模型(例如,Anthropic Claude、Amazon Titan)的支持使开发者可以选择最适合特定任务的模型。 例如,客户支持机器人可以使用 Claude 进行复杂的推理,而使用 Titan 进行简洁的回答,并根据用户的需求在对话中切换模型。 这种状态管理、可伸缩性和模型选择的结合简化了构建能够维护连贯、长期上下文的聊天机器人的过程。