Table of Contents

  1. 系统设计: 实际应用中,可将其作为一个“入口Agent”,目的是 模糊性检测
    1. 人是如何思考的
    2. 解决方案:“入口Agent”节点
    3. 实现效果
  2. 用户需求收集的防御式编程
    1. 问题识别
      1. Java防御式编程示例
    2. 解决方案
      1. 方案一:严格验证模式
      2. 方案二:主动收集模式
  3. 代码案例

从更高的层次来看,AI应用的准确度主要由两个方面决定:

  1. 用户交互层:用户的需求是否清晰表达
  2. 技术处理层: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

示例图

** 注意: 一些更详细的提示词分析以及源码分析,我放到了星球中. **

更多的干货都在我的知识星球, 你会有更多收获: 示例图

Written by

雷哥(微信:leigeaicom)

带你AI编程和AI工程化落地, 让你少走弯路, 做更有价值的创造者.

大家一起来讨论