有状态 GIS 智能体
系统边界与职责划分
LLM 不直接执行 GIS 代码。它在工具结构约束下选择下一步;本地 GIS 工具完成数据读取、制图、综合和渲染;每次结果写入状态和版本,供后续修改复用。
项目定义
Map-LLM 将自然语言理解、工具协议、空间计算和状态版本拆开负责:模型做规划,本地 GIS 工具做确定性执行,MapState 让下一轮操作继续基于已有地图。
有状态 GIS 智能体
LLM 不直接执行 GIS 代码。它在工具结构约束下选择下一步;本地 GIS 工具完成数据读取、制图、综合和渲染;每次结果写入状态和版本,供后续修改复用。
三项核心能力
从首次制图到路网综合、持续修改的三个任务阶段,展示自然语言输入如何转为工具调用、地图结果和可追溯状态。
01 · 自动制图
用户只需要用自然语言描述想要制作的地图,例如地图范围、标题、行政区划、道路网络以及比例尺、指北针等要求,系统就会自动理解需求,调用本地地理数据和制图工具,将不同地图要素进行组合、样式配置和渲染,最终生成指定尺度下的专题地图。
02 · 路网综合
在已有道路数据基础上,用户可以通过自然语言指定目标比例尺或综合要求,系统自动调用 Stroke 构建、网眼密度、层次选取、GCNN 等路网综合算法,对原始大比例尺道路网络进行筛选、简化和缩编,在尽量保留主要道路结构和路网特征的同时,生成更适合小比例尺地图展示的道路网络,并能够对比展示综合前后的结果。
03 · 动态调整
用户不需要重新描述整张地图,只需要继续输入“把高速公路改成红色”“删除铁路图层”“调整综合参数”“修改标题”等指令,系统就会读取当前地图状态,识别具体修改内容,在已有结果上进行局部调整并重新渲染,同时保存新的地图状态和版本。
智能体架构
Django 负责请求与会话,LangGraph 负责流程节点和条件路由,LangChain 负责模型与工具协议;LLM 只规划下一步,本地 GIS 执行环境才执行数据处理、综合和渲染,最终结果回到 MapState、版本和追踪记录。
接收前端自然语言请求,根据 Session ID 定位对应会话 Agent,并将请求交给 ConversationalAgent;任务完成后保存 AI 回复与地图结果,并返回前端。
通过 Session ID 维护会话上下文:ConversationState 保存消息、 意图和流程状态,MapState 保存图层、样式、地图范围等地图配置;后续请求加载已有状态并继续增量处理。
意图分类节点先调用 LLM;异常或非法返回时使用规则兜底,再路由创建、综合、调整、查询和错误节点,最终统一生成响应。
LangChain 将 GIS 工具及参数 Schema 绑定给 LLM,LLM 根据当前任务选择下一步工具; 项目代码执行对应本地工具,并通过 ToolMessage 将执行结果回传模型,循环直至任务完成。
GeoPandas、Shapely 等负责空间数据读取与几何处理,制图工具完成图层组织与 Matplotlib 渲染; 路网综合引擎根据任务调用 Stroke、网眼密度、层次选取或 GCNN 等算法。
地图渲染结果与 MapState 统一保存,每次修改生成新的状态版本,并通过 parent_version 维护版本链; 同时记录工具调用 Trace,最终结果返回前端,下一轮修改继续基于当前状态执行。
制图规格
自然语言需求 → 结构化 MapSpec / MapState → GIS 工具调用 → 地图渲染
输入约定
用户不需要记住 GIS 工具或参数名称,只需描述目标地图。系统从自然语言中提取数据、范围、表达和输出要求, 并整理为后续工具可以直接执行的结构化制图参数;缺失信息则根据数据自动推断或在后续交互中补充。
双状态架构
系统不依赖 LLM 从完整聊天记录中反复推断当前地图,而是将对话流程状态与可持久化的地图业务状态分层管理,并通过 Session ID 关联同一轮持续演进的制图任务。
Stateful Agent
ConversationState 服务于 LangGraph 的流程编排,保存消息、当前意图、待确认操作、澄清问题、补丁、错误和渲染结果;MapState 作为地图业务状态源,保存配置、图层、样式、范围、注记、版本与修改记录。
多轮动态调整
地图生成并不是任务的终点。系统持续维护当前 MapState,后续自然语言指令会在已有结果上执行局部更新,重新渲染并保存新的状态版本。
制图流程 · 当前任务
每轮修改都会先加载当前 MapState,保留地图范围、图层、样式、比例尺和指北针等已完成配置,只更新真正发生变化的对象。
工程设计与可靠性
LLM 只负责理解与决策,所有可能改变地图状态的操作都必须经过结构化解析、 状态校验和白名单编译;执行失败则进入重试、澄清或版本恢复链路。
版本管理与撤销
系统不会在每次修改后直接覆盖原有地图状态,而是基于当前 MapState 创建新版本,并保留上一版本,形成连续的状态演进记录。
完整快照 · 版本链
每个版本记录版本号、父版本和对应的修改记录。系统采用 Full Snapshot 保存完整 MapState,历史版本可以直接加载,不需要让 LLM 重新推导反向操作。
空间数据辅助
能够由数据和规则确定的信息,由系统自动计算,而不是要求用户重复输入或依赖 LLM 猜测。LLM 负责理解制图目标,确定性 GIS 规则负责参数推断与空间布局。
参数自动推断
用户只需提供基本制图需求,系统会结合空间数据和当前地图状态补齐缺失配置,减少对专业 GIS 参数的依赖。
智能文本定位
读取当前图层的空间边界,转换为地图相对坐标后检查候选点与要素范围的重叠关系。要素较少的候选位置会优先用于标题和注记。
技术栈
从 Web 请求接入、Agent 流程编排,到 GIS 确定性执行、地图状态持久化和实时结果反馈,各层职责相互解耦。