Table of Contents
从更高的层次来看,AI应用的准确度主要由两个方面决定:
- 用户交互层:用户的需求是否清晰表达
- 技术处理层:AI应用是否能满足用户需求,解决用户问题
后者是是AI的技术能力体现。 但是前者非常关键, 不可能在描述不清晰的情况下, 很好的满足用户需求.
系统设计: 实际应用中,可将其作为一个“入口Agent”,目的是 模糊性检测
人是如何思考的
像”公司情况如何?”这样的开放式问题可能导致通用、低价值的回答。人类专家会首先要求澄清,我们的Agent也应该这样做。
解决方案:“入口Agent”节点
构建一个““入口Agent”“节点作为所有用户请求的第一站:
- 职责:判断查询是否足够具体,能够以高精度回答
- 处理逻辑:
- 如果查询过于模糊,生成澄清问题并暂停流程
- 防止代理在定义不清的任务上浪费资源
- 确保只有明确的需求才能进入后续处理环节
实现效果
通过“入口Agent”的过滤,可以显著提高AI应用的准确性和效率,避免资源浪费在模糊不清的任务上。
用户需求收集的防御式编程
问题识别
用户需求收集的完整性是AI应用成功的关键。根据传统编程经验,我们需要采用防御式编程思维,确保用户信息收集的完整性和准确性。
Java防御式编程示例
public class UserService {
public void createUser(String name, String email, Integer age) {
// 防御式编程:参数验证
if (name == null || name.trim().isEmpty()) {
throw new IllegalArgumentException("用户名不能为空");
}
if (email == null || !email.contains("@")) {
throw new IllegalArgumentException("邮箱格式不正确");
}
if (age == null || age < 0 || age > 150) {
throw new IllegalArgumentException("年龄必须在0-150之间");
}
// 只有所有参数都验证通过,才执行业务逻辑
// ... 创建用户的业务逻辑
}
}
这个例子展示了传统编程中的防御式思维:在执行业务逻辑之前,先验证所有输入参数的有效性。同样的思路可以应用到AI系统中。
解决方案
方案一:严格验证模式
当检测到用户信息不完整时:
- 要求用户重新输入
- 整个流程退出
- 直到用户输入信息完整后,才进入后续AI技术处理环节
注意: 如果收集的信息过多, 会导致用户的产品体验不好, 所以一般使用大数据分析,提供一些用户的偏好统计信息作为背景信息, 然后给出少量的问题反馈即可.
方案二:主动收集模式
当用户需求不够清晰时:
- 启动用户信息收集循环
- 主动收集用户需求
- 通过提示词判断所需信息是否收集完成
- 提供总结性对话信息给用户确认
- 信息收集完整后,开始后续处理
代码案例
来自langgraph的deepsearch项目:https://github.com/langchain-ai/open_deep_research
** 注意: 一些更详细的提示词分析以及源码分析,我放到了星球中. **
更多的干货都在我的知识星球, 你会有更多收获:
大家一起来讨论