105 lines
4.0 KiB
Python
105 lines
4.0 KiB
Python
# 第 1-11 课课堂练习:Agent 工具权限管理器
|
||
#
|
||
# 完成要求:
|
||
# 1. 根据注释完成集合的创建、成员判断、添加、删除、遍历和集合运算。
|
||
# 2. 使用有意义的英文蛇形变量名。
|
||
# 3. 不要依赖集合的显示顺序。
|
||
# 4. 删除可能不存在的元素时使用 discard(),或先使用 in 判断。
|
||
# 5. 不要删除题目注释。
|
||
# 6. 完成后运行本文件并核对预期结果。
|
||
|
||
# 练习一:创建集合 agent_tools,包含以下工具:
|
||
# "搜索"、"计算"、"写作"、"搜索"。
|
||
# 输出集合和元素数量,观察重复的“搜索”是否只保留一份。
|
||
|
||
|
||
# 练习二:创建空集合 disabled_tools。
|
||
# 输出它的值和类型,确认类型是 set,而不是 dict。
|
||
|
||
|
||
# 练习三:完成成员判断:
|
||
# 1. 判断 agent_tools 中是否存在“搜索”,保存到 can_search;
|
||
# 2. 判断 agent_tools 中是否不存在“图片生成”,保存到 cannot_generate_image;
|
||
# 3. 输出两个判断结果。
|
||
|
||
|
||
# 练习四:使用 add() 向 agent_tools 添加“代码执行”。
|
||
# 再次使用 add() 添加已经存在的“搜索”。
|
||
# 输出添加后的集合和元素数量,确认没有产生重复元素。
|
||
|
||
|
||
# 练习五:使用 update() 一次添加“图片生成”和“网页浏览”。
|
||
# 传给 update() 的数据可以使用列表。
|
||
# 输出更新后的集合。
|
||
|
||
|
||
# 练习六:完成安全删除:
|
||
# 1. 使用 remove() 删除确定存在的“网页浏览”;
|
||
# 2. 使用 discard() 删除不存在的“语音识别”;
|
||
# 3. 输出删除后的集合,确认程序没有报错。
|
||
|
||
|
||
# 练习七:使用 for 遍历 agent_tools。
|
||
# 为了让输出顺序稳定,请遍历 sorted(agent_tools)。
|
||
# 每行按照“可用工具:搜索”的格式输出。
|
||
|
||
|
||
# 练习八:创建两个集合:
|
||
# code_agent_tools = {"搜索", "计算", "代码执行"}
|
||
# writer_agent_tools = {"搜索", "写作", "图片生成"}
|
||
# 计算并输出:
|
||
# 1. 交集 common_tools;
|
||
# 2. 并集 all_tools;
|
||
# 3. 代码助手独有的差集 code_only_tools;
|
||
# 4. 对称差集 different_tools。
|
||
|
||
|
||
# 练习九:创建以下两个集合:
|
||
# required_tools = {"搜索", "计算"}
|
||
# available_tools = {"搜索", "计算", "写作"}
|
||
# 使用 <= 判断 required_tools 是否是 available_tools 的子集,
|
||
# 将结果保存到 has_required_tools 并输出。
|
||
|
||
|
||
# 练习十:为模型使用记录去重:
|
||
# model_history = ["gpt-5", "o3", "gpt-5", "o3", "gpt-5-mini"]
|
||
# 将列表转换成集合 unique_models 并输出;
|
||
# 再把集合转换成列表 unique_model_list 并输出。
|
||
# 注意:转换后的顺序可能与原列表不同。
|
||
|
||
|
||
# 练习十一:创建集合 current_permissions:
|
||
# {"读取配置", "修改配置", "执行任务"}
|
||
# 再创建集合 revoked_permissions:
|
||
# {"修改配置", "删除配置"}
|
||
# 使用差集得到 remaining_permissions,
|
||
# 表示撤销相关权限后仍然保留的权限,并输出结果。
|
||
|
||
|
||
# 预期核心结果:
|
||
# agent_tools 中重复的“搜索”只保留一份;
|
||
# disabled_tools 的类型是 set;
|
||
# can_search = True;
|
||
# cannot_generate_image = True;
|
||
# 重复执行 add("搜索") 不会增加元素数量;
|
||
# discard() 删除不存在的元素时不会报错;
|
||
# common_tools = {"搜索"};
|
||
# all_tools 包含两组 Agent 的全部工具;
|
||
# code_only_tools = {"计算", "代码执行"};
|
||
# different_tools 不包含共同拥有的“搜索”;
|
||
# has_required_tools = True;
|
||
# unique_models 只有三个元素;
|
||
# remaining_permissions = {"读取配置", "执行任务"}。
|
||
|
||
|
||
# 完成后进行自查:
|
||
# 1. 空集合是否使用 set() 创建;
|
||
# 2. 是否理解集合会自动去除重复元素;
|
||
# 3. add() 和 update() 是否按要求分别使用;
|
||
# 4. 删除不存在的元素时是否避免了 KeyError;
|
||
# 5. 遍历时是否没有依赖集合自身的顺序;
|
||
# 6. 是否能区分交集、并集、差集和对称差集;
|
||
# 7. 是否理解差集运算的左右方向;
|
||
# 8. 是否能使用子集判断检查权限;
|
||
# 9. 是否理解集合去重可能打乱原列表顺序。
|