十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

遥感智能体双向语义互补工具检索:从静态匹配到动态组合的进化

遥感智能体双向语义互补工具检索:从静态匹配到动态组合的进化 1. 项目概述当遥感智能体学会“双向思考”最近在搞一个挺有意思的项目名字有点长叫“Bidirectional Semantic Complementary Tool Retrieval for Remote Sensing Agents”翻译过来就是“面向遥感智能体的双向语义互补工具检索”。乍一听全是术语但核心想法其实很直观让处理遥感数据的AI智能体能像经验丰富的老专家一样不仅知道用什么工具更懂得如何组合工具来“看透”一张卫星或航拍图像。我们平时用大语言模型LLM驱动的智能体比如让它分析一张城市热力图它可能会调用一个“计算NDVI归一化植被指数”的工具。这没错但往往不够。一张遥感影像包含的信息是立体的、多层次的。地表温度异常热岛效应可能和植被覆盖率低、建筑密度高、水体缺失都有关。一个优秀的分析需要从多个角度、用多种工具去交叉验证和深度挖掘。这就是“双向语义互补”要解决的问题。它不是一个简单的工具列表匹配而是一个动态的、上下文感知的“工具组合策略生成器”。智能体在规划任务时会进行两种思考前向检索根据当前任务目标如“评估城市绿化水平”检索最直接相关的工具如“计算NDVI”。后向互补在获得初步结果如“某区域NDVI值较低”后反过来思考“有哪些其他工具能从不同维度解释或补充这个现象” 进而检索互补工具如“提取建筑轮廓计算密度”、“识别水体分布”。这个过程是迭代的智能体在“执行-观察-再规划”的循环中不断调用新的互补工具直到形成一个完整的证据链给出可靠结论。这背后离不开对工具功能的深度语义理解而不仅仅是关键词匹配和持续的上下文学习能力。如果你正在研究如何让LLM智能体在遥感、地理信息这类复杂专业领域真正落地解决“工具调用呆板”、“分析维度单一”的问题那么这个关于工具检索机制的探讨或许能给你带来一些新的思路。接下来我会拆解这个系统的核心设计、实现关键以及我们趟过的一些坑。2. 核心设计思路从“单点工具”到“组合拳”的进化传统的基于LLM的智能体工具调用大多遵循“意图识别 - 工具匹配 - 执行”的线性流程。这在简单场景下有效但在遥感这类需要深度分析的领域就显得力不从心了。我们的设计核心是让工具检索从“静态匹配”变为“动态演化”的过程。2.1 为何“双向”与“互补”是关键想象一下你是一位遥感分析师拿到一张火灾后的影像。你的第一反应可能是用“火烧迹地提取”工具。但接下来呢一个完整的评估需要知道过火面积、严重程度、植被类型损失、是否靠近居民点等等。你会自然地串联或并联使用“面积计算”、“光谱指数分析如NBR”、“土地分类”、“缓冲区分析”等一系列工具。“双向语义互补”机制就是在模拟这个思维过程前向路径任务 - 工具解决“我现在该做什么”的问题。系统将用户查询如“监测太湖蓝藻爆发”和当前对话历史编码成语义向量在工具库中检索最相关的工具如“计算叶绿素a浓度指数”。后向路径结果 - 新工具解决“这个结果意味着什么还需要看什么”的问题。当工具执行后系统会将工具输出结果如“区域A指数超高”与原始任务上下文进行融合生成一个新的、更深入的查询向量。这个向量旨在寻找能够解释、验证或补充当前发现的工具如“提取水体边界确认范围”、“获取同期气象数据看温度风速”、“检索历史影像对比变化”。“互补”的核心在于语义空间的构建。我们不是简单地把工具描述成“计算指数”而是将其功能、输入输出数据类型、所能揭示的物理意义如“反映植被覆盖度”、“指示水体富营养化程度”、以及与其他工具的常见关联关系都编码进一个高维语义表示中。这样系统就能理解“计算NDVI”和“计算植被覆盖度”是功能相近的工具而“计算NDVI”和“计算建筑指数”则是常用于城市生态联合分析的工具对。2.2 工具库的语义化建模让机器理解“工具能干什么”这是整个系统的基石。如果工具描述只是几句文本那么检索质量将严重依赖关键词和LLM的即时理解能力不稳定且缺乏深度。我们的做法是为每个工具构建一个结构化的“语义档案”功能描述自然语言描述但要求精确。例如“基于近红外和红波段反射率计算归一化植被指数用于量化绿色植被的活跃程度。”输入/输出模式严格定义。如输入: {“image”: “多光谱影像数组”, “red_band”: int, “nir_band”: int}输出: {“ndvi_layer”: “浮点型栅格数据”}。这有助于系统判断工具是否可用。语义标签体系建立一个多层级标签系统。例如领域植被监测、水体分析、城市测绘、灾害评估。操作类型光谱指数计算、目标检测、变化检测、统计分析。物理指标叶面积指数(LAI)、地表温度(LST)、悬浮物浓度。关联工具手动或自动标注该工具常与哪些工具协同使用。形成一张工具关系图。然后我们使用一个经过微调的嵌入模型Embedding Model将这份“语义档案”的整体文本描述标签关联工具名称编码成一个固定维度的向量。这个向量就是工具在语义空间中的“坐标”。实操心得标签的质量比数量重要。初期我们堆砌了大量标签反而导致语义空间混乱。后来精简为“核心功能”不超过3个、“核心输出指标”1-2个和“典型应用场景”1个检索准确率显著提升。例如给“水体提取”工具打上[水体分析, 图像分割, 范围制图]比打上[遥感, 图像处理, 分类, 水文]更有效。2.3 检索流程的闭环设计整个检索流程嵌入在智能体的“思考-行动-观察”循环中如下图所示概念流程用户请求“分析该区域城市扩张对农田的影响。” 1. 规划智能体分解任务 - “第一步需要识别当前城市和农田范围。” 2. 前向检索将子任务“识别城市和农田范围”编码为查询向量Q1。 * 在工具语义空间中搜索返回Top K个相关工具[土地分类工具, 建筑指数工具, NDVI工具...]。 * 智能体结合上下文选择土地分类工具。 3. 执行与观察调用工具获得分类结果图R1。 4. 后向互补检索 * 将[原始任务上下文 已执行工具土地分类 结果R1]融合生成新的查询向量Q2。 * Q2的语义可能是“已有土地分类图如何量化城市和农田的面积及变化” * 再次检索返回新工具[面积统计工具, 变化检测工具需历史影像...]。 5. 规划新一轮智能体决定调用面积统计工具对R1中的城市和农田类别进行面积计算。 6. 执行与观察获得面积数据R2。 7. 可能的后向检索继续基于“城市面积X农田面积Y”可能触发“计算侵占比例”或“评估生态影响”的检索...这个过程持续进行直到智能体认为已充分回答用户问题或达到迭代限制。关键点在于后向检索的查询生成。我们实验了几种策略LLM生成式将任务历史、工具执行结果扔给LLM让它生成一个“为了进一步分析我现在应该查找什么功能”的查询语句。灵活但有时会偏离。模板填充式预定义几种模式如“量化_[上一步结果]”、“寻找[上一步结果]的原因”、“对比_[上一步结果]与”。稳定但覆盖面有限。混合式先用模板确定意图类别再用LLM细化具体查询。这是我们目前采用的方式在稳定性和灵活性间取得了较好平衡。3. 实现要点嵌入模型、上下文管理与学习机制有了设计思路实现层面有三个关键支柱如何表示语义嵌入模型如何管理复杂的任务状态上下文以及如何让系统越用越聪明持续学习。3.1 嵌入模型的选择与微调直接使用通用的文本嵌入模型如text-embedding-3-small效果一般因为通用模型不理解“波段”、“指数”、“栅格”这些遥感术语的特定含义。我们的做法是进行领域自适应微调构建训练对我们从遥感领域的学术论文、技术报告、工具文档中收集了大量“任务描述-工具集”对。例如任务描述“监测冬小麦播种面积。”正例工具集[NDVI工具, 时间序列滤波工具, 分类工具]。负例工具集[水体提取工具, 地形分析工具]随机采样或人工构造的不相关工具。模型与损失函数选用一个轻量级的句子编码模型如BGE-M3的基础版本。采用对比学习Contrastive Learning框架目标是在向量空间中让任务描述与正例工具集的平均向量距离更近与负例工具集距离更远。微调技巧由于工具描述文本较短我们将工具的“语义档案”描述标签作为一个整体输入。在计算损失时不仅考虑任务与工具集的相似度也考虑任务与单个核心工具的相似度。注意事项负样本的构建至关重要。除了随机负样本一定要加入“困难负样本”。例如对于“监测冬小麦”任务“水稻识别工具”就是困难负样本都是农作物但种类不同。这能迫使模型学习更精细的语义差别。我们通过工具标签的相似度如都有植被监测标签来自动筛选困难负样本。微调后的嵌入模型对于“提取建筑物”和“提取道路”这种在通用领域相似、在遥感领域不同的任务能产生区分度更大的查询向量从而显著提升检索精度。3.2 动态上下文的管理与表示智能体在任务执行过程中上下文不断膨胀原始问题、已执行的工具序列、每个工具的输出结果可能是文本、数值、甚至图片的摘要描述。如何有效表示这个动态上下文用于后续的检索是一个挑战。我们设计了一个分层上下文表示法会话级记忆存储最原始的用户请求和最终要达成的目标。贯穿始终防止智能体跑偏。工作记忆一个固定长度的“最近经历”队列。记录最近N步的(工具输入摘要输出摘要)三元组。输出摘要尤其重要对于图像类结果我们使用多模态LLM生成一段简明的文本描述如“输出了一张土地利用分类图图中显示东北部主要为城市建成区红色西南部为农田绿色。”。检索查询构造当需要进行下一次检索无论是前向还是后向时我们将会话级记忆和工作记忆的内容按照预设的模板进行拼接形成一段完整的提示词输入给一个轻量级LLM或直接使用嵌入模型的编码器来生成当前的查询向量。这个模板会引导模型关注“当前状态”和“待解决问题”。例如模板原始任务{session_memory} 我们已经做了{working_memory} 基于以上为了推进任务或深化分析我们现在需要寻找一个能实现以下目标的工具然后让模型补全目标描述再用嵌入模型将其向量化。3.3 融入持续学习Continual Learning的机制工具库不是静态的。新的遥感处理算法、新的传感器数据产品层出不穷系统需要能平滑地纳入新工具同时不忘旧工具。我们借鉴了持续学习的思想主要解决“灾难性遗忘”问题工具语义向量库的增量更新当新增一个工具时我们用微调好的嵌入模型计算其语义向量并存入向量数据库如Milvus, Pinecone。这里的关键是微调嵌入模型本身也需要定期更新。嵌入模型的持续微调我们维护一个任务-工具对的缓存池。定期例如每周将新增的工具及其相关的任务示例可以从历史成功交互中抽取加入训练数据然后对嵌入模型进行一轮轻量级的增量微调。为了防止遗忘旧知识每次增量训练时都会从缓存池中采样一部分历史数据作为“复习”。经验回放缓冲区系统记录成功的任务执行轨迹即一系列正确的工具调用序列。这些轨迹可以作为高质量的“任务-工具序列”样本用于训练一个辅助的“工具序列预测模型”或者直接作为示例存储在向量库中供检索时进行相似轨迹匹配。这种机制使得系统能够逐渐覆盖更广的遥感分析场景调用工具的组合也更加智能和多样化。4. 系统搭建与核心代码解析理论说了这么多我们来点实际的。下面以一个简化版的系统核心模块为例展示关键代码片段。我们假设使用Python主要依赖langchain用于智能体框架、sentence-transformers用于嵌入模型和chromadb用于向量存储。4.1 工具语义向量库的构建首先定义工具的数据结构并初始化向量库。from sentence_transformers import SentenceTransformer import chromadb from chromadb.config import Settings from typing import Dict, List, Any import json class RemoteSensingTool: def __init__(self, name: str, description: str, tags: List[str], associated_tools: List[str], func): self.name name self.description description self.tags tags self.associated_tools associated_tools self.func func # 实际执行的函数 def to_semantic_text(self) - str: 将工具信息转换为用于生成语义向量的文本 return f 工具名称{self.name} 功能描述{self.description} 功能标签{, .join(self.tags)} 关联工具{, .join(self.associated_tools)} class ToolVectorStore: def __init__(self, embedding_model_name: str path/to/our/fine-tuned-model): self.embedder SentenceTransformer(embedding_model_name) self.client chromadb.Client(Settings(anonymized_telemetryFalse)) # 创建或获取集合 self.collection self.client.get_or_create_collection( nameremote_sensing_tools, metadata{hnsw:space: cosine} # 使用余弦相似度 ) def add_tool(self, tool: RemoteSensingTool): 向向量库添加一个工具 semantic_text tool.to_semantic_text() embedding self.embedder.encode(semantic_text, normalize_embeddingsTrue).tolist() # 存储。以工具名作为ID方便后续查找 self.collection.add( documents[semantic_text], embeddings[embedding], metadatas[{name: tool.name, tags: json.dumps(tool.tags)}], ids[tool.name] ) def retrieve(self, query_text: str, top_k: int 5, filter_tags: List[str] None) - List[Dict]: 检索相关工具 query_embedding self.embedder.encode(query_text, normalize_embeddingsTrue).tolist() where_filter None if filter_tags: # ChromaDB 支持通过metadata过滤 where_filter {tags: {$contains: filter_tags[0]}} # 简化过滤实际需更复杂处理 results self.collection.query( query_embeddings[query_embedding], n_resultstop_k, wherewhere_filter ) retrieved_tools [] for i in range(len(results[ids][0])): retrieved_tools.append({ tool_name: results[ids][0][i], metadata: results[metadatas][0][i], score: results[distances][0][i] # 距离越小越相似 }) return retrieved_tools4.2 双向检索智能体的实现接下来实现智能体的核心决策逻辑包含前向和后向检索。class BidirectionalRetrievalAgent: def __init__(self, tool_vector_store: ToolVectorStore, llm): self.tool_store tool_vector_store self.llm llm # 用于生成查询和决策的LLM self.session_memory # 会话记忆 self.working_memory [] # 工作记忆存储最近几步 self.max_working_memory 3 # 工作记忆容量 def _update_working_memory(self, tool_name: str, input_summary: str, output_summary: str): 更新工作记忆保持固定长度 self.working_memory.append({ tool: tool_name, input: input_summary, output: output_summary }) if len(self.working_memory) self.max_working_memory: self.working_memory.pop(0) def _generate_forward_query(self, task_description: str) - str: 生成前向检索的查询文本 prompt f 你是一个遥感分析专家。当前需要完成的任务是{task_description} 请思考完成这个任务第一步最可能需要调用什么功能的工具 请用一句简洁的话描述你需要的工具功能例如“计算植被指数”或“提取水体范围”。 只输出功能描述不要其他内容。 response self.llm.invoke(prompt) return response.strip() def _generate_backward_query(self, observation: str) - str: 生成后向互补检索的查询文本 # 结合会话记忆和工作记忆 recent_steps \n.join([f- 使用{w[tool]}得到{w[output]} for w in self.working_memory]) prompt f 原始任务{self.session_memory} 我们已经执行了以下步骤 {recent_steps} 最新观察{observation} 基于现有发现为了更深入、全面地推进原始任务接下来我们应该从哪个新的角度进行分析或者使用什么工具来验证/补充当前结论 请用一句简洁的话描述下一步需要的工具功能。 只输出功能描述。 response self.llm.invoke(prompt) return response.strip() def plan_and_retrieve(self, task: str, observation: str None, mode: str forward) - Dict: 规划并检索工具。 :param task: 当前子任务描述前向或最新观察后向 :param observation: 后向模式时为上一步工具的输出摘要 :param mode: forward 或 backward :return: 检索到的工具列表及相关信息 if mode forward: query_text self._generate_forward_query(task) print(f[前向检索] 生成查询: {query_text}) else: # backward query_text self._generate_backward_query(task) # 此处task实为observation print(f[后向检索] 生成查询: {query_text}) # 进行向量检索 retrieved self.tool_store.retrieve(query_text, top_k3) return { query: query_text, retrieved_tools: retrieved } def execute_step(self, task_description: str): 执行一个智能体步骤简化示例 # 1. 前向规划检索 retrieval_result self.plan_and_retrieve(task_description, modeforward) candidate_tools retrieval_result[retrieved_tools] # 2. 模拟LLM根据上下文从候选工具中选择一个最合适的 tool_to_use tool_to_use candidate_tools[0][tool_name] # 简化选最相关的 print(f智能体决定使用工具: {tool_to_use}) # 3. 模拟工具执行和结果摘要生成实际中会调用真实函数和MM-LLM input_summary f输入了任务{task_description}的相关数据 # 假设工具执行后产生了一个结果我们用一个多模态LLM或规则生成其描述 output_summary self._simulate_tool_output(tool_to_use) print(f工具执行结果摘要: {output_summary}) # 4. 更新工作记忆 self._update_working_memory(tool_to_use, input_summary, output_summary) # 5. 基于结果可能触发后向检索这里简化为判断是否需要深入分析 if self._need_deeper_analysis(output_summary): new_retrieval self.plan_and_retrieve(output_summary, modebackward) print(f触发后向互补检索新建议工具: {new_retrieval[retrieved_tools]}) def _simulate_tool_output(self, tool_name: str) - str: 模拟工具输出摘要生成 # 这里应该是调用多模态LLM对工具实际输出如图片进行描述 # 为示例我们返回一个模拟描述 simulations { calculate_ndvi: 生成NDVI指数图显示区域A植被茂盛值0.6区域B植被稀疏值0.2。, land_classification: 生成土地分类图识别出城市用地、农田、森林和水体四种类型。, area_statistics: 计算出城市用地面积为50平方公里农田面积为120平方公里。 } return simulations.get(tool_name, 工具执行完成产生了新的数据成果。) def _need_deeper_analysis(self, output: str) - bool: 简单规则判断是否需要进一步分析 # 实际中可以用LLM判断或更复杂的规则 return 显示 in output or 识别出 in output # 如果结果有“发现”则可能需深入4.3 一个完整的任务执行示例让我们串联起来看一个简单的任务如何运行。# 初始化 embedding_model SentenceTransformer(BAAI/bge-base-zh-v1.5) # 示例实际应用微调后的模型 tool_store ToolVectorStore(embedding_model_nameBAAI/bge-base-zh-v1.5) # 注册一些工具 tool1 RemoteSensingTool( namecalculate_ndvi, description计算归一化植被指数用于评估植被覆盖度和生长状况。, tags[植被监测, 光谱指数], associated_tools[land_classification, calculate_evi], funccalculate_ndvi_func # 假设的函数 ) tool_store.add_tool(tool1) tool2 RemoteSensingTool( nameland_classification, description对遥感影像进行土地覆盖分类识别如城市、农田、森林、水体等地类。, tags[土地覆盖, 图像分类], associated_tools[calculate_ndvi, area_statistics], funcland_classification_func ) tool_store.add_tool(tool2) tool3 RemoteSensingTool( namearea_statistics, description对分类后的矢量或栅格数据计算指定类别的面积。, tags[统计分析, 地理计算], associated_tools[land_classification], funcarea_statistics_func ) tool_store.add_tool(tool3) # 初始化智能体假设有一个LLM实例 from langchain.llms import OpenAI # 示例 llm OpenAI(temperature0) # 实际可能用ChatGPT API或本地模型 agent BidirectionalRetrievalAgent(tool_store, llm) agent.session_memory 分析该区域城市扩张对农田的影响。 # 开始执行 print( 开始任务 ) agent.execute_step(识别当前城市和农田的范围) # 输出可能 # [前向检索] 生成查询进行土地覆盖分类以区分城市和农田 # 智能体决定使用工具land_classification # 工具执行结果摘要生成土地分类图识别出城市用地、农田、森林和水体四种类型。 # 触发后向互补检索新建议工具[{tool_name: area_statistics, ...}] # 接下来智能体可以选择调用 area_statistics 工具来计算面积...这个示例展示了从任务分解、前向检索、执行到后向检索建议的闭环。在实际系统中还需要更复杂的LLM提示工程、工具执行结果的真实处理和多模态理解模块。5. 踩坑实录与性能优化在实际开发和测试中我们遇到了不少问题也总结出一些优化经验。5.1 常见问题与排查问题现象可能原因排查与解决方案检索结果不相关1. 工具语义描述质量差。2. 嵌入模型未微调或微调数据不足。3. 查询生成LLM环节偏离主题。1.检查工具描述确保描述精准、包含核心关键词和场景。让领域专家审核。2.分析检索相似度分数如果分数普遍偏低如余弦相似度0.5说明语义空间未对齐需加强微调。3.审查生成的查询文本在日志中打印出_generate_forward/backward_query生成的查询语句看是否准确理解了意图。可以优化提示词模板或增加少量示例few-shot。智能体陷入循环或重复调用1. 工作记忆过短忘记已执行步骤。2. 后向检索生成的查询总是导向同一个工具。3. 缺乏任务终止判断。1.增加工作记忆容量或引入长期记忆记录所有已执行工具并在生成查询时排除它们。2.在后向检索提示词中强调“寻找新的、不同的分析角度”并可以尝试在检索时对最近使用过的工具向量进行降权如减小其相似度分数。3.设计任务终止条件例如当LLM判断问题已充分回答或连续N步后向检索未提出新工具或用户反馈满意时停止。处理多模态输出如图片效果差工具输出是影像、图表而系统主要处理文本语义。1.强制结果摘要化每个工具执行后必须通过一个多模态LLM如GPT-4V、Qwen-VL或预设的规则模板将输出转化为一段结构化的文本描述。这是后向检索能工作的前提。2.在摘要中包含关键数据和观察例如“NDVI图显示东南部区域指数低于0.2表明植被严重稀疏”。系统响应慢1. LLM生成查询和决策耗时。2. 向量检索规模大。3. 工具实际执行时间长。1.缓存对常见的任务模式缓存其检索结果。使用更小、更快的LLM如7B-14B参数的本地模型处理查询生成和简单决策。2.优化向量索引使用HNSW等高效索引。定期清理不常用的工具向量。3.异步执行对于耗时的遥感处理工具采用异步调用智能体在等待时可以进行其他规划或与用户交互。5.2 性能优化经验分层检索策略不要所有检索都走一遍完整的向量相似度计算。可以先通过工具标签tags进行快速过滤缩小候选集再在子集内做精细的向量检索。这对于拥有数百个工具的大型库非常有效。查询向量缓存对于相同的任务描述其前向检索查询向量是固定的。可以缓存(任务描述, 查询向量)对避免重复调用LLM或嵌入模型编码。工具组合模板库对于一些非常经典的分析流程如“火灾评估火烧迹地提取 - 面积计算 - 严重度分级 - 邻近分析”可以预先定义好“工具链模板”。智能体在识别出此类任务时可以直接推荐整个模板提高效率和准确性。这可以看作是检索机制的一个高级缓存。反馈学习记录用户对智能体推荐工具的采纳或拒绝行为。如果用户多次拒绝某个被检索到的工具可以降低该工具与对应查询的语义关联权重一种在线学习。反之如果用户经常在某个任务后手动选择某个工具可以强化该关联。6. 效果评估与未来展望如何衡量这个“双向语义互补工具检索”机制的好坏我们主要从三个维度评估任务完成度给定一组复杂的遥感分析任务如“评估某水库近五年水质变化趋势”对比使用基础工具检索仅前向和双向检索的智能体看谁能调用更合理的工具序列最终生成更全面、准确的分析报告。可以由领域专家进行盲评打分。工具调用多样性统计智能体在完成一系列任务过程中调用不同工具的数量和比例。双向检索机制应能引导智能体使用更多样化的工具而不是反复使用少数几个。人类干预频率在智能体运行过程中需要人类纠正或提供额外提示的次数。一个好的系统应该能自主完成大部分工具选择与组合。从我们的实验来看引入了后向互补检索的智能体在应对开放式、探索性的遥感分析任务时其工具调用的合理性和分析结论的深度有明显提升。它更像是一个“主动思考”的助手而不仅仅是“令行禁止”的自动脚本。我个人在实际操作中的体会是这套系统的价值不仅仅在于检索精度提升了几个百分点更在于它提供了一种让专业领域知识体现在工具语义中与LLM的通用推理能力深度结合的框架。最大的挑战始终是“语义鸿沟”——如何让机器真正理解“计算NDVI”和“评估植被健康”之间的深层联系。这需要持续地打磨工具的描述体系、精心构建训练数据、并设计更巧妙的交互逻辑。未来除了持续优化检索模型我们还在探索将工具的执行结果如生成的专题图也进行向量化并与工具向量关联起来形成一个“工具-效果”联合语义空间。这样智能体不仅能根据任务找工具还能根据“我想生成一张看起来像XXX的图”来反推工具让创作和分析过程更加直观和强大。这条路还很长但每一次让智能体更“懂行”一点都离让遥感技术更普惠、更智能的目标更近一步。
返回列表