能否借助带函数调用的LLM解决玩具几何问题?实现方案探讨
可行性判断
完全可行。这个需求属于结构化数据统计+工具调用的典型场景,LLM(结合LangChain)可以负责拆解统计任务、编排函数调用逻辑,而预设的contains()和get_area()负责完成几何计算的核心工作,两者结合可以高效生成目标统计表格,无需复杂的模型微调,仅通过Prompt工程和工具绑定即可实现。
实现架构设计
整体采用“数据加载→LLM任务编排→统计计算→结果输出”的线性流程,核心模块如下:
1. 数据预处理与加载
- 解析
locations.json,将4个命名矩形转换为contains()函数可识别的标准形状对象(比如带坐标属性的结构体) - 批量加载3个场景JSON,提取每个场景的彩色多边形集合和日期标识,同样转换为标准形状对象格式,确保与工具函数兼容
2. LLM工具调用与任务编排(基于LangChain)
这是核心环节,重点是让LLM明确统计规则并调用预设函数:
- 工具注册:将
contains(shape1, shape2)(需提前明确判断规则:比如多边形完全落在位置矩形内/存在交集即计入,是否计算交集面积)和get_area(shape)注册为LangChain的Tool对象,定义好输入输出格式 - Prompt约束:通过精准Prompt告知LLM两个统计任务的执行逻辑:
- 任务1(颜色总面积表):遍历每个场景,按颜色对多边形分组,对每组内的所有多边形调用
get_area()并求和,最终按「场景-颜色」维度汇总 - 任务2(位置场景面积表):遍历每个场景的每个位置,调用
contains()筛选出该位置内的所有多边形,再对这些多边形调用get_area()求和,按「位置-场景」维度汇总
- 任务1(颜色总面积表):遍历每个场景,按颜色对多边形分组,对每组内的所有多边形调用
- 逻辑执行:LangChain的
Agent或Chain会根据LLM生成的函数调用指令,自动执行工具函数并返回结果,LLM再基于结果完成统计聚合
3. 统计聚合与表格生成
- 接收LLM返回的聚合结果,按预设格式整理为Markdown表格:
- 颜色总面积表示例:
场景日期 红色总面积 蓝色总面积 绿色总面积 2024-01-01 120 80 50 ... ... ... ... - 位置场景面积表示例:
位置名称 场景1面积 场景2面积 场景3面积 区域A 90 110 75 ... ... ... ...
- 颜色总面积表示例:
- 直接输出格式化后的Markdown表格
4. 校验模块(可选)
- 针对关键统计结果,通过脚本或手动方式验证:比如抽查某场景下某颜色的多边形面积求和是否正确,某位置内的多边形筛选是否符合
contains()的预设规则,避免LLM出现逻辑偏差
关键注意事项
- 函数规则明确:必须给LLM清晰定义
contains()的判断逻辑(比如是完全包含还是交集判断),避免歧义导致统计错误 - 数据格式统一:确保所有形状对象的坐标、格式与工具函数的输入要求完全匹配,否则会触发调用失败
- Prompt精准性:Prompt中要明确统计维度、函数调用的触发条件,不要用模糊表述,比如直接说“对每个场景中颜色为红色的所有多边形,调用get_area()并累加总和”
内容的提问来源于stack exchange,提问作者nickponline
相关产品推荐
相关产品推荐

