借助 Looker 的 ConversationalAnalytics API 端点,您可以在嵌入式应用中构建自定义对话式分析体验。这些 API 镜像了为 Looker 的对话式分析功能提供支持的端点,并在 Looker API 中提供相同的功能。它们包括针对代理、对话和消息的创建、更新、读取和删除 (CRUD) 操作,以及用于与对话式代理互动的聊天 API。为确保开发流程顺畅并实现最佳性能,请务必了解使用这些 API 时的一些限制,并遵循推荐的最佳实践。
典型的工作流
多轮对话的典型工作流涉及同时使用代理、对话、消息和聊天 API。
- 创建代理:如果您没有代理,请使用
POST /agents创建一个代理。代理已配置为使用特定的 Looker 模型和探索。 - 创建对话:使用
POST /conversations开始与代理关联的新对话。此方法将返回对话 ID。 - 发送消息:在对话的每个回合中,使用
conversation_id和用户的消息调用POST /conversational_analytics/chat。此端点会返回来自代理的一条或多条系统消息。 - 持久保留消息:
/conversational_analytics/chat端点不会持久保留用户消息或返回的系统消息。如需在后续轮次中保留对话历史记录,您必须在调用聊天 API 后调用POST /conversations/:conversation_id/messages,以持久保留用户消息和系统消息。
建议
遵循以下建议可获得最佳效果:
- 持久保留所有消息:每次调用
/conversational_analytics/chat后,请务必调用POST /conversations/:conversation_id/messages来保存该轮对话中用户的消息以及聊天 API 返回的所有系统消息。这对于多轮对话至关重要。 - 处理流式传输:尽可能使用聊天 API 的流式传输功能,以便在代理处理时向用户提供反馈。在流式传输期间收到的消息可用于指示代理正在“思考”。
限制和注意事项
使用 ConversationalAnalytics API 端点时,请考虑以下限制:
- 消息持久性:您有责任使用
POST /conversations/:conversation_id/messages端点来持久保存消息。如果每次调用/conversational_analytics/chat后都未能持久保留消息,则无法维护对话记录,并且代理在多轮对话中无法获得后续问题的上下文。 - 流式传输支持:聊天 API 是一种流式传输 API,可让您在代理生成消息时立即接收消息,从而改善长时间运行的查询的用户体验。不过,并非所有 Looker SDK 语言都支持流式传输。如果您使用的 SDK 不支持流式传输,则在生成所有消息后,API 会同步返回完整响应。如果流式传输至关重要,但您的 SDK 语言不支持,您可能需要直接进行 HTTP 调用才能使用流式传输。