在教育场景里,有一个问题正在被反复问到:AI 辅导老师真的能看懂题目吗?大多数聊天式 AI 能看懂文字题干,但一旦题目里有一张几何图、一个电路图、一组数据图表,模型就开始“答非所问”。问题的本质不是模型不会算,而是模型看不见它正在说的东西。所谓视觉接地(Visual Grounding),解决的正是这个问题——让模型不仅能回答问题,还能在图像上准确地指出与答案对应的区域。
本文会从一个实际的 AI 辅导项目出发,拆解视觉接地的技术原理、系统设计、代码实现和工程部署方案。读完你会发现,AI 辅导的下一步不是生成更长的答案,而是知道答案应该落在图像的哪个位置。
1. 这篇文章真正要解决的问题
当你把一道带图的数学题发给普通对话式大模型时,会发生什么?
模型可能认识题干里的文字,也可能描述出图片的大致内容,但当你追问“这条辅助线应该画在哪里”“红色区域和蓝色区域是哪个”“第三行第二个选项为什么错”时,模型立刻陷入混乱。它没有把语言描述与图像中的具体位置对应起来,无法给出坐标级、区域级的反馈。
这个问题在教学场景中被放得很大。因为真正的辅导并不是把标准答案念出来,而是要在图上圈圈点点,让学生看到“这一步是怎么从图形上推出来的”。一个优秀的 AI 辅导系统,至少要能做到三件事:
- 理解图文混合的题目,不是只读文字。
- 能引用图像区域,说“这条边”“这个角”“这部分曲线”时,真的把对应位置框出来。
- 能基于这些区域展开多轮讲解,而不是每轮都从头理解。
视觉接地就是实现这三件事的关键技术。它让模型在生成自然语言回答的同时,输出目标物体在图像中的空间位置,通常是一个边界框或者区域掩码。从产品角度看,这相当于给 AI 戴上了一个“激光笔”。
需要说明的是,这篇文章不是一篇评测,也不会虚构任何人的实测数据。我们会从技术原理和工程实践入手,结合当前可以公开获取的模型和工具链,给出一个可以照着跑的架构方案。适合正在做教育产品、AI 助教、多模态知识库的开发者和算法工程师阅读。
1.1 为什么说视觉接地是 AI 辅导的分水岭
传统的 AI 解题系统走的是两条路:一条是基于 OCR 识别题目文字,再把文字丢给语言模型;另一条是做一个目标检测模型,先识别题目里的图形元素,再走模板规则。这两条路都存在明显问题。
OCR 路线丢掉了空间关系。拿到一道几何题,OCR 只能提取“AB 平行于 CD”这样的文本语义,但无法知道线段 AB 在图像中的具体位置。目标检测路线虽然能拿到位置,但它本质是闭集识别,只能认出训练数据里出现过的图形类别,遇到复杂的函数图像、实验装置图就失效了。
视觉接地走的是一条更通用的路:通过多模态大模型的跨模态对齐能力,把自然语言描述直接映射到图像区域。它不需要为每种题型定制规则,也不需要训练出一个能够穷尽所有图形类别的检测器。这带来的直接好处是:新题型的适应速度更快,交互方式也更自然。
1.2 有哪些读者最应该关注这个方向
如果你正在做下面这些工作,建议重点阅读:
- 教育科技产品的后端开发或算法工程师,需要为拍照搜题、AI 讲解功能增加“指图讲解”能力。
- 多模态大模型应用开发者,希望在自己的业务中使用视觉定位能力,而不只是简单的图像问答。
- AI Agent 方向的技术人员,想了解如何让 Agent 的视觉感知从“能看见”升级为“能指向”。
- 对大模型前沿应用感兴趣的技术读者,想理解视觉接地在大模型架构中的位置和实现方式。
2. 视觉接地的基础概念与核心原理
2.1 视觉接地到底是什么
视觉接地(Visual Grounding)的技术定义是:给定一张图像和一句自然语言描述,模型需要定位出描述所指的物体或区域。它通常输出一个边界框,也可以输出一个分割掩码,形式如下:
- 输入图像:一张包含多个物体的场景图。
- 输入文本:“那只正在睡觉的猫”。
- 输出结果:一个边界框,恰好框住图像中的猫。
在 AI 辅导场景里,输入可能变成“划出三角形的底边”“标记图中滑动变阻器的接线柱”“指出抛物线的最低点”。模型的输出不仅能给出文字回答,还能返回这些对象在图像中的坐标。
这里需要区分两个容易混淆的概念:视觉接地与目标检测。目标检测解决的是“图里有什么”,它面对的是一个固定的类别列表;视觉接地解决的是“描述的那一个在哪里”,它面对的是一段开放的自然语言。后者更像是目标检测和跨模态语义理解的结合。
2.2 与多模态大模型的关系
多模态大模型(如视觉语言模型 VLM)能够同时理解图像和文本,这是接地能力的基础。VLM 的基本结构可以归纳为三个部分:
- 视觉编码器:把图像转成视觉特征向量,常见的是 ViT 或类似结构的编码器。
- 文本编码器:把用户指令转成文本特征向量。
- 跨模态融合模块:让视觉特征和文本特征在模型内部交互,最终解码出文本或坐标。
视觉接地能力正是在跨模态融合阶段产生的。模型学习到“文本中提到的某个物体”与“视觉特征图上的某一块区域”之间的对应关系后,就能把对应区域解码为边界框。
2.3 常见的技术路线对比
| 技术路线 | 核心思路 | 优点 | 局限 |
|---|---|---|---|
| 传统目标检测 | 在预定义类别上做分类和定位 | 精度高、稳定 | 只能识别训练过的类别 |
| 图文检索 | 在预提取的区域中检索目标 | 灵活度较高 | 区域质量受候选框限制 |
| 统一多模态模型 | 用 Transformer 结构直接回归坐标 | 端到端、风格统一 | 需要海量对齐训练数据 |
| 多模态大模型+接地头 | 在 VLM 基础上增加输出头 | 兼容复杂指令 | 微调成本较高 |
在实际项目中,越来越多团队选择最后一种路线,即基于一个推理能力强大的多模态大模型,再进行视觉接地微调。这样模型既能理解复杂的解题逻辑,也能输出精准的坐标。
2.4 为什么“解题”和“指图”必须同时发生
严格来说,纯文本大模型也能“解题”,纯检测模型也能“指图”,但在教育场景里,必须把这两件事放在同一个模型里完成。
原因是解题和指图之间存在语义依赖。讲解一道几何证明题时,“这里”指的是哪条辅助线,取决于当前论证到哪一步。如果模型先生成一个通用答案,再单独用检测模型找相关区域,出来的结果往往是割裂的:答案说到了关键步骤,但图上圈出来的区域根本不是那一步涉及的图形。
正确的做法是让模型在生成答案的每一个关键节点上,同时决定下一个输出是文本还是坐标。这种“边讲边指”的能力,对学习体验的提升非常明显。
3. 系统整体架构与工作流程
3.1 从 AI 聊天机器人到 AI 辅导系统的架构升级
一个最基本的 AI 聊天机器人只需要三部分:用户输入、大模型、文本输出。但一个带视觉接地的 AI 辅导系统,需要有更完整的信息链路:
用户拍照/上传题目 ↓ 图像预处理(分辨率调整、OCR 识别文字层) ↓ 多模态输入组装(图像 + 提示词 + 历史对话) ↓ 多模态大模型推理(文本解码 + 坐标解码) ↓ 结果后处理(坐标映射、区域过滤、文字匹配) ↓ 前端渲染(在图上绘制边界框、箭头、标注)每一步都有值得注意的工程细节。图像预处理的目的是让模型看到更清晰的视觉信息,尤其是题目中的小字和细线;多模态输入组装要设计好提示词,让模型知道什么时候该输出坐标;结果后处理要解决模型输出的坐标是相对坐标还是绝对坐标的问题,这对前端渲染至关重要。
3.2 AI Agent 与多轮辅导的交互设计
真正可用的辅导系统不能只回答一个问题。学生在听完讲解后可能会继续追问:“那如果我把这个角再画大一点呢?”“这一步的结论为什么可以推出下一步?”这就需要系统具备多轮对话能力,并且在多轮对话中保持对图像区域的一致性理解。
一种常见的做法是为系统引入 AI Agent 设计:将对话状态管理交给 Agent,视觉接地能力作为工具函数。Agent 负责解析学生的问题、决定是否需要调用视觉定位函数、判断定位结果是否可靠,然后把结果组织成回复。这个设计的优势是:即使模型本身不支持复杂的多轮图文混合输入,也可以通过工具调用的方式,把上一轮圈出的区域作为下一轮的上下文传入。
3.3 视觉接地模型的选择策略
在模型选型上,不同量级的项目有不同做法:
- 如果使用云端 API,可以选择具备视觉理解能力的通用大模型,利用其原生能力或输出结构化的坐标信息。
- 如果希望在本地服务器部署,可以考虑开源的视觉语言模型,再通过微调增强接地能力。
- 如果对延迟和成本极度敏感,可以把“视觉编码器+轻量解码器”的组合作为第一版,用更小的模型先跑通主流程。
无论选择哪种方案,都需要在“答案质量”和“接地精度”之间做取舍。有些模型文本推理很强,但坐标输出误差较大;有些模型定位很准,但解题逻辑薄弱。对教育产品来说,解题逻辑的正确性优先级更高,因为学生不会因为框得准而接受错误的讲解。
4. 环境准备与前置条件
在开始写代码之前,需要准备好运行环境。本节以本地开发为主要场景给出建议,不是唯一方案,但能覆盖大多数读者的需求。
4.1 硬件与运行环境
视觉接地模型需要同时处理图像和文本,对显存的要求比纯文本模型高。建议的配置如下:
- GPU 显存:至少 8GB,推荐 16GB 以上。如果使用量化模型或更轻量的模型,8GB 可以跑通最小示例。
- 操作系统:Linux 优先,Windows 也可运行,但部分算子库在 Windows 上需要额外配置。
- Python 版本:建议 3.10 及以上,本文示例按该版本编写。
如果是纯 API 调用方案,本地不要求 GPU,只需要保证网络访问稳定。
4.2 依赖安装推荐
下面是一组常见的 Python 依赖,具体版本以实际项目为准。这里不写死版本号,是为了避免不同操作系统和 CUDA 版本带来的冲突。
# 建议使用虚拟环境 python -m venv ai_tutor_env source ai_tutor_env/bin/activate # 核心依赖 pip install transformers torch Pillow numpy fastapi uvicorn # 如果使用 Hugging Face 生态 pip install datasets accelerate如果 CUDA 版本比较老,PyTorch 建议从官方渠道选择对应版本安装。这个环节最容易出现的错误是 transformers 版本和 torch 版本不匹配,建议在项目里锁定一个经过验证的版本组合。
4.3 需要准备的测试图像
为了验证后续代码,可以准备几张不同类型的题目图片:
- 一张带几何图形的图片,比如三角形、平行四边形。
- 一张带曲线的函数图像,比如抛物线、正弦曲线。
- 一张包含文字标注的物理实验图。
这些图片不需要很清晰,但分辨率不要太低,否则视觉编码器很难捕捉到细节。
5. 视觉接地核心流程拆解与代码示例
5.1 整体流程设计
为了实现一个可用的 AI 辅导视觉接地模块,我建议把流程拆成四步:
- 构造多模态提示词,把图像和任务描述组织在一起。
- 调用视觉语言模型,得到文本回答和坐标候选。
- 解析模型的输出,从 JSON 或特殊格式中提取边界框。
- 将相对坐标转换为图像像素坐标,交给前端渲染。
下面按照这个流程依次实现。
5.2 示例一:构造多模态提示词
提示词设计是视觉接地任务中最容易被忽略、却最能影响结果的部分。模型需要明确知道:它面对的是哪种题目、要回答什么、以及如何输出坐标。
以下是一个参考提示词模板:
# 文件路径:prompt_template.py GROUNDING_PROMPT = """你是一个擅长图文讲解的 AI 辅导老师。 请观察用户上传的题目图片,完成以下任务: 1. 判断题目类型(几何、代数、物理、化学等)。 2. 用中文给出解题思路和答案。 3. 当回答中提到图片中的某个具体图形或区域时,必须输出一个边界框来表示它。 输出格式要求: - 文本部分正常输出。 - 每个边界框的格式为 <box>相对中心点坐标和宽高,取值都是0到1,如 <box>(0.5,0.2,0.3,0.1)</box>。 - 如果一句话同时提到多个区域,请依次输出多个 <box> 标记。 题目描述:{question} 图片信息:图片已和本次对话同时提供。 请开始回答:"""这个提示词有几个关键考虑:
- 显式告诉模型“你要在图上指出位置”,而不是默认模型会这么做。
- 用相对坐标而不是绝对坐标,因为不同模型训练时使用的坐标体系可能不同,相对坐标更容易跨图像尺寸迁移。
- 给出了明确的标记格式,方便程序解析。
5.3 示例二:调用模型并解析输出
下面是一个完整的 Python 推理函数,包含图像加载、提示词组装、模型推理和坐标解析。
# 文件路径:grounding_inference.py from PIL import Image import torch import re # 以 Hugging Face Transformers 生态为例 # 具体模型名称和处理器请参考模型仓库文档 from transformers import AutoProcessor, AutoModelForVision2Seq def load_model(model_id: str): processor = AutoProcessor.from_pretrained(model_id) model = AutoModelForVision2Seq.from_pretrained(model_id) model.eval() return processor, model def run_grounding(processor, model, image_path: str, question: str): image = Image.open(image_path).convert("RGB") prompt = GROUNDING_PROMPT.format(question=question) # 构造模型输入 inputs = processor(text=prompt, images=image, return_tensors="pt") with torch.no_grad(): outputs = model.generate( **inputs, max_new_tokens=512, do_sample=False ) # 解码模型输出 generated_text = processor.decode(outputs[0], skip_special_tokens=True) # 解析所有 <box> 标记 boxes = re.findall(r"<box>\(([\d.]+),([\d.]+),([\d.]+),([\d.]+)\)</box>", generated_text) results = [] for box in boxes: cx, cy, w, h = map(float, box) results.append({ "center_x": cx, "center_y": cy, "width": w, "height": h }) return { "answer": generated_text, "boxes": results } if __name__ == "__main__": processor, model = load_model("your-model-id") output = run_grounding(processor, model, "math_problem.png", "请指出三角形的底边并说明面积公式") print(output["answer"]) print(output["boxes"])代码说明:
load_model中加载的模型需要支持视觉编码和文本生成,具体模型 ID 请替换为实际使用的多模态模型。generate过程关闭了随机采样,保证答案稳定。如果希望答案更丰富,可以调整do_sample和temperature。re.findall用于从生成文本中提取边界框坐标。这里假设模型严格遵循提示词中的输出格式。实际项目中,模型偶尔会生成不完整的标记,需要编写更健壮的解析逻辑。
5.4 示例三:坐标转换与前端渲染接口
模型输出的相对坐标必须转换为前端可用的像素坐标。这个转换逻辑需要知道图片的原始宽高。
# 文件路径:coordinate_converter.py def relative_to_absolute(box, image_width: int, image_height: int): cx, cy, w, h = box["center_x"], box["center_y"], box["width"], box["height"] x1 = int((cx - w / 2) * image_width) y1 = int((cy - h / 2) * image_height) x2 = int((cx + w / 2) * image_width) y2 = int((cy + h / 2) * image_height) # 防止越界 x1 = max(0, min(x1, image_width)) y1 = max(0, min(y1, image_height)) x2 = max(0, min(x2, image_width)) y2 = max(0, min(y2, image_height)) return {"x1": x1, "y1": y1, "x2": x2, "y2": y2}接着,用 FastAPI 把这个函数封装成一个后端接口。这样前端可以通过 HTTP 上传图片和问题,得到渲染所需的坐标。
# 文件路径:api_server.py from fastapi import FastAPI, UploadFile, File, Form from PIL import Image import io import torch app = FastAPI() # 初始化模型(实际项目中建议使用全局变量并在启动时加载) processor, model = load_model("your-model-id") @app.post("/tutor/grounding") async def grounding_endpoint( question: str = Form(...), image: UploadFile = File(...) ): image_bytes = await image.read() image = Image.open(io.BytesIO(image_bytes)).convert("RGB") img_w, img_h = image.size # 复制给模型后需要重新读取,避免流位置问题 image.save("/tmp/current_task.png") result = run_grounding(processor, model, "/tmp/current_task.png", question) boxes_abs = [ relative_to_absolute(box, img_w, img_h) for box in result["boxes"] ] return { "answer": result["answer"], "boxes": boxes_abs, "image_size": {"width": img_w, "height": img_h} } if __name__ == "__main__": import uvicorn uvicorn.run(app, host="0.0.0.0", port=8000)这个接口的基本流程是:
- 接收图片字段和问题字段。
- 打开图片,记录宽高。
- 调用推理函数获取文本答案和相对坐标。
- 把相对坐标转换为像素坐标。
- 返回结构化结果。
前端拿到boxes数组后,可以直接在图片上绘制矩形框,也可以结合答案文本把讲解和图形区域一一对应。
5.5 面向视觉接地的微调数据准备
如果现有模型在具体题型上的接地效果不理想,一个有效的手段是进行小规模微调。微调数据的组织是整个流程的关键。
常见的数据格式是一个 JSON 文件,每条数据包含图片路径、问题和带坐标标注的回答。下面是一个参考格式:
{ "train_data": [ { "image": "images/geo_001.png", "question": "请指出三角形的高,并说明面积公式", "answer": "三角形的高是从顶点到底边的垂线段 <box>(0.5,0.3,0.2,0.5)</box>。" }, { "image": "images/function_002.png", "question": "请问该函数的对称轴在哪个位置?", "answer": "对称轴是这条黄色虚线 <box>(0.7,0.5,0.1,0.6)</box>。" } ] }数据准备的一个小建议:不要只标注“物体在哪里”,还要标注“解答步骤与区域的关联”。因为 AI 辅导系统真正需要的,不是单纯的目标检测框,而是能够支撑讲解过程的定位信息。
6. 运行结果与效果验证
6.1 如何判断前端渲染是否正确
当接口返回结果后,第一步要检查的是:每个边界框是否准确覆盖了答案中提到的区域。
判断成功的标准:
- 边界框包含目标对象的主要部分,且没有明显偏移。
- 如果答案里提到两个区域,输出中应该有对应数量的边界框。
- 坐标没有被截断为 0 或者图像边界,这意味着模型输出的相对坐标在有效范围内。
如果边界框完全偏移,优先怀疑两个方向:一是提示词中的坐标格式说明不够清晰,模型没有严格按照格式输出;二是输入图像分辨率过高或被显著压缩,导致视觉编码器看不清关键区域。
6.2 文本答案质量检查
视觉接地是辅助,最终回答是否正确才是核心。建议建立一个判断题面标准答案的小型题库,包含不同科目和不同图片类型。
验证流程可以自动化:
- 把用户问题、图片、模型答案记录下来。
- 用规则或者更强的模型判断答案是否正确。
- 同时记录接地框是否命中关键区域。
- 定期汇总准确率,作为模型迭代的量化依据。
这里要特别提醒:不要只关注“框得准不准”,还要关注“答得对不对”。一个框得很准却在讲解中犯了计算错误的系统,对学生的伤害比一个模糊回答更大。
6.3 失败时的排查顺序
如果整个流程跑不通,建议按以下顺序排查:
- 检查模型是否成功加载,显存是否足够。
- 检查输入图片是否可以正常读取,图片流位置是否被重置。
- 检查生成文本中是否包含
<box>标记,如果没有,说明模型没有按提示词格式输出。 - 检查解析正则是否匹配,模型可能输出全角括号或多余空格。
- 检查前端是否使用了正确的坐标系,不同前端库处理坐标的起止点定义不同。
7. 视觉接地常见问题与排查方法
在真实项目中,视觉接地系统的问题往往集中在定位不准、格式解析失败、性能不足三类。下面用表格总结常见问题和解决思路。
| 问题现象 | 可能原因 | 排查方式 | 解决方案 |
|---|---|---|---|
| 边界框位置明显偏移 | 模型对图像中小目标不敏感 | 检查输入图像的分辨率;观察模型输出文本是否准确 | 提高图像输入分辨率,或对图像按区域切片处理 |
生成文本中没有<box>标记 | 提示词格式说明不够明确 | 查看完整生成文本,确认是否被截断 | 重写提示词,增加示例和“必须输出”的指令 |
| 边界框数量与答案不匹配 | 模型对多目标定位能力较弱 | 检查答案是否提到了两个物体 | 拆分问题,一次只定位一个核心区域 |
| 坐标解析失败 | 模型输出全角括号或多余空格 | 打印生成文本原文 | 增强正则匹配,兼容全角和半角括号 |
| 推理速度过慢 | 视觉编码器计算量大 | 查看 GPU 利用率和推理耗时 | 使用模型量化、批量缓存图像特征、升级 GPU |
| 多轮对话中位置漂移 | 模型没有结合之前的定位结果 | 检查上一轮的边界框是否传入提示词 | 在提示词中加入“上一轮已指出区域坐标为……” |
| API 调用超过上下文长度 | 历史对话积累过长 | 检查请求参数中的 token 数 | 增加对话裁剪策略,丢弃无关历史 |
这里重点说一下多轮对话中的位置漂移问题。一个常见的误解是:只要模型在前一轮已经框出了目标区域,下一轮它就会记住。实际上,如果不在每一轮请求中显式携带上一轮的定位结果,模型可能会重新理解,给出完全不同的位置。这在教学场景中非常容易引起困扰。一个稳妥的解决方案是,在后端维护一个“已定位对象”的列表,在下一轮提示词中自动注入这些坐标和对象名称。
8. 最佳实践与工程建议
8.1 提示词设计要“给示例,而不只是给规则”
视觉接地模型的输出格式稳定性,很大程度上取决于提示词是否包含示例。与其写“请输出边界框”,不如写“例如:这个三角形的高是 (0.5,0.3,0.2,0.5) ”。模型在少样本示例下会更愿意遵守格式。在生产环境中,建议准备 2 到 3 个不同类型的示例,覆盖几何、函数和实验图,根据图片类型动态选择示例。
8.2 数据合规与教育内容安全
AI 辅导系统涉及未成年人,数据合规必须放在第一位。
- 不要收集超出需求的学生个人信息,尤其是姓名、学校、联系方式。
- 上传的题目图片可能包含学生手写笔记,建议在服务端设置自动清理策略,或者只保留脱敏后的题目版本。
- 生成内容需要经过安全过滤,避免出现可能误导学生的错误结论或不当言论。
- 设置人工审核兜底机制,尤其是针对可能存在争议的题目类型。
8.3 从“答案正确”走向“讲解可解释”
教育场景中,模型给出答案只是开始。学生需要知道这个答案是怎么来的。视觉接地的另一个价值就是让讲解过程变得可解释。工程上建议在返回结果中额外增加一个字段,记录每个边界框对应的文本片段。这样前端不仅能在图上画框,还能在文本中对“这句话对应的区域”做高亮联动。
8.4 模型部署优化
如果打算在自建服务器上部署视觉接地模型,需要关注三件事:
- 模型量化:使用 INT8 或 INT4 量化可以显著降低显存占用,但要注意与视觉编码器某些算子的兼容性。
- 图像预编码缓存:同一张题目图片在多轮对话中会被反复使用,可以提前提取视觉特征并缓存,避免每轮都跑一次视觉编码器。
- 批处理优化:如果并发量较大,可以把多个学生的请求合并成 batch,提升 GPU 利用率。
8.5 灰度发布与回滚
在引入新的视觉接地模型时,不要直接替换线上正在服务的旧系统。建议采用灰度发布:
- 先把新模型应用于 5% 的流量。
- 对比新模型与旧模型在同一批测试题上的准确率,重点关注底线错误。
- 设置自动回滚开关,当准确率下降或接口超时率上升时,立刻切回旧模型。
对于教育产品,一个模型讲解错误带来的信任损失是难以挽回的。因此保留一个稳定的兜底模型,比不断尝试新模型更明智。
9. 总结与后续学习方向
视觉接地这项技术,把 AI 辅导从“能读懂文字”推进到了“能看懂图形”的阶段。它的核心价值不是输出一个边界框,而是让模型在讲解过程中能够引用视觉证据,从而实现真正意义上的“指着图讲题”。
如果今天只看一篇文章,建议你记住三点:
- 视觉接地的关键是跨模态对齐,不是单纯的目标检测,更不是 OCR 加规则。
- 工程实现上,提示词设计和输出格式解析的稳定性,决定了系统是否真的可用。
- 教育场景的特殊性要求我们优先保证讲解正确性,其次才是定位精度。
下一步值得深入的方向有三个:
- 从单轮定位走向多轮视觉对话:让模型在连续追问中保持对区域的稳定引用。
- 从边界框走向分割掩码:在演示实验步骤时,边界框往往不够精细,分割级别定位能提供更精确的指示。
- 从模型能力走向 Agent 编排:让视觉接地成为 AI Agent 的工具函数,使系统能够自主决定什么时候需要定位、如何利用定位结果组织教学策略。
如果你正准备做一个带视觉接地的 AI 辅导原型,建议先用一个开源多模态模型跑通最小的“图片上传—问答—画框”闭环。确认这个闭环稳定后,再逐步加入微调、多轮对话和部署优化。这个方向的技术更新很快,但核心的工程思维是通用的:先保证模型能给出可靠的、可引用的视觉证据,再谈更复杂的教学能力。