Agent模式测试题

📝 测试时间:60分钟 💯 总分:100分 📌 答案请查看:[[Agent模式测试题答案]]


第一部分:概念理解(30分)

1. 单选题(每题3分,共15分)

1.1 以下哪个不是Agent的核心组成部分?

  • A. Planning(规划层)
  • B. Memory(记忆层)
  • C. Database(数据库层)
  • D. Tools(工具层)

1.2 Function Call的主要作用是什么?

  • A. 让LLM运行得更快
  • B. 让LLM能够结构化地调用外部函数
  • C. 减少Token消耗
  • D. 提高模型的推理能力

1.3 在多工具并行调用场景中,以下哪种说法是正确的?

  • A. 必须等待第一个工具执行完才能调用第二个
  • B. 可以同时发起多个独立的工具调用请求
  • C. 并行调用会导致结果不准确
  • D. 只有GPT-4支持并行调用

1.4 ReAct模式中的"Reflection"步骤的主要目的是?

  • A. 重新执行失败的操作
  • B. 分析执行结果并指导下一步行动
  • C. 删除错误的历史记录
  • D. 向用户报告执行进度

1.5 在Agent系统中使用Redis存储对话历史的主要优势是?

  • A. 永久保存数据
  • B. 快速读写和自动过期机制
  • C. 支持复杂查询
  • D. 数据安全性更高

2. 多选题(每题3分,共15分)

2.1 以下哪些属于Agent相比传统LLM的优势?(多选)

  • A. 能够调用外部工具和API
  • B. 具备自主决策能力
  • C. 可以端到端完成复杂任务
  • D. 不需要任何人工干预
  • E. 能够处理实时信息

2.2 在设计Function Call的工具描述时,应该包含哪些信息?(多选)

  • A. 工具名称(name)
  • B. 工具功能描述(description)
  • C. 参数定义(parameters)
  • D. 工具的实现代码
  • E. 必需参数列表(required)

2.3 以下哪些场景适合使用链式工具调用?(多选)

  • A. 查询天气信息
  • B. 搜索信息后生成报告并发送邮件
  • C. 查询订单状态后检查物流信息
  • D. 简单的数学计算
  • E. 根据用户地址查询附近商家并推荐

2.4 在Messages列表中,可能出现哪些角色(role)?(多选)

  • A. system
  • B. user
  • C. assistant
  • D. tool
  • E. admin

2.5 优化Agent性能可以采取哪些措施?(多选)

  • A. 设置最大执行步数限制
  • B. 优化工具描述的准确性
  • C. 使用滑动窗口管理上下文
  • D. 增加更多的工具
  • E. 实现错误重试机制

第二部分:代码分析(30分)

3. 代码阅读题(每题10分,共30分)

3.1 阅读以下代码,回答问题:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
tools = [{
    "type": "function",
    "function": {
        "name": "get_weather",
        "description": "查询天气",
        "parameters": {
            "type": "object",
            "properties": {
                "location": {"type": "string"}
            },
            "required": ["location"]
        }
    }
}]

messages = [{"role": "user", "content": "北京天气?"}]
response = client.chat.completions.create(
    model="qwen-plus",
    messages=messages,
    tools=tools
)

问题:

  1. 这段代码缺少什么关键步骤才能完成完整的工具调用流程?(5分)
  2. 如果LLM决定调用工具,response对象中会包含什么信息?(5分)

3.2 分析以下ReAct Agent的代码片段:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
def run(self, user_query):
    current_step = 0
    while current_step < self.max_steps:
        current_step += 1

        # Planning
        plan = self.step_1_plan(user_query)

        if plan.get("decision") == "finish":
            return plan.get('final_answer')

        # Acting
        observation = self.step_2_act(plan["tool_name"], plan["tool_args"])

        # Reflecting
        reflection = self.step_3_reflect(plan, observation)

        self.history.append({
            "thought": plan["thought"],
            "action": f"{plan['tool_name']}({plan['tool_args']})",
            "observation": observation,
            "reflection": reflection
        })

问题:

  1. 这段代码实现了ReAct的哪三个核心步骤?(3分)
  2. self.history的作用是什么?(3分)
  3. 如果去掉current_step < self.max_steps这个条件会有什么风险?(4分)

3.3 观察以下Redis存储代码:

1
2
3
4
5
6
7
8
def add_message(self, role, content):
    message = {"role": role, "content": content}
    redis_client.rpush(self.session_id, json.dumps(message))
    redis_client.expire(self.session_id, 3600)

def get_messages(self):
    raw_messages = redis_client.lrange(self.session_id, 0, -1)
    return [json.loads(msg) for msg in raw_messages]

问题:

  1. 为什么要使用json.dumpsjson.loads?(3分)
  2. expire(self.session_id, 3600)的作用是什么?(3分)
  3. 如果要实现"只保留最近10轮对话",应该如何修改代码?(4分)

第三部分:实战设计(40分)

4. 系统设计题(20分)

场景描述: 你需要设计一个"智能客服Agent",要求能够:

  1. 查询订单状态
  2. 查询物流信息
  3. 处理退款申请
  4. 回答常见问题

请回答:

4.1 列出至少4个需要实现的工具函数,并简要说明每个函数的功能和参数。(8分)

4.2 选择合适的Agent架构模式(Simple Workflow / ReAct / 中央调度),并说明理由。(6分)

4.3 设计记忆系统方案:如何存储用户的对话历史和订单上下文?(6分)


5. 问题解决题(20分)

5.1 调试问题(10分)

用户反馈:Agent在处理"帮我查一下订单123456的物流信息"时,总是回复"我无法查询实时信息",但工具函数已经正确实现。

可能的原因有哪些?请列举至少3个,并给出对应的解决方案。


5.2 优化问题(10分)

一个Agent系统在运行时出现以下问题:

  • 问题1:经常超过最大步数限制仍未完成任务
  • 问题2:Token消耗过大,成本很高
  • 问题3:有时会重复调用相同的工具

针对每个问题,提出具体的优化方案。


第四部分:开放题(附加10分)

6. 思考与创新(10分)

6.1 如果要设计一个"AI编程助手Agent",它需要能够:

  • 理解用户需求
  • 搜索相关文档
  • 生成代码
  • 运行测试
  • 修复错误

请设计完整的工作流程,包括:

  1. 需要哪些工具?
  2. 采用什么架构模式?
  3. 如何处理代码执行失败的情况?

(可以用流程图或伪代码表达)


评分标准

部分分值说明
概念理解30分考察基础知识掌握
代码分析30分考察代码理解能力
实战设计40分考察实际应用能力
开放题10分考察创新思维(附加分)
总分100+10分满分100分,附加10分

答题说明

  1. 请在独立的文档中作答
  2. 代码题可以使用伪代码或Python
  3. 设计题注重思路清晰,不要求完美实现
  4. 开放题鼓励创新,没有标准答案

祝你考试顺利!🎉