快速回顾
| 复盘点 | 核心内容 |
|---|---|
| 业务目的 | 根据设备照片缩小机型范围,人工确认后用于资产关联和资料查询 |
| 识别模型 | EfficientNet;协调网络深度、宽度与输入分辨率,兼顾效果和计算开销 |
| 服务分工 | PyTorch 负责推理,FastAPI 提供内部接口,Java 后端负责认证与业务处理 |
| 返回结果 | Top-K 候选、置信度、模型版本和人工复核状态 |
| 结果边界 | 置信度不等于正确率;机型类别不等于具体资产身份 |
| 稳定性 | 输入校验、超时、并发限制、有限重试,识别不可用时支持手动选择 |
| MCP 能力 | 图片识别、标准机型查询、知识检索、知识问答、故障排查 |
| 调用边界 | 客户端模型选择工具,MCP Server 校验执行,后端统一控制权限与业务规则 |
| 权限与错误 | 受限服务身份访问平台公共能力,区分空结果、证据不足与执行失败 |
面试主回答
我接入了基于 EfficientNet 的农机图像识别服务,用 PyTorch 完成模型推理,通过 FastAPI 提供内部接口,Java 后端负责认证、图片校验、候选机型映射和人工复核流程。
识别结果返回 Top-K 候选、置信度和模型版本,用户结合铭牌等信息确认后,再关联标准机型,并用于后续资料检索。服务调用设置了超时和并发限制,模型不可用时支持手动选择机型。
此外,我开发了 MCP Server,将图片识别、标准机型查询、知识检索与问答、故障排查封装为标准工具,供支持 MCP 的客户端调用。MCP 层复用后端能力,通过工具 Schema、受限服务身份和统一错误返回,控制调用边界。
业务场景与模型选择
面试回答
用户录入农机设备或查资料时,不一定知道准确型号。我接入图片识别服务,根据照片返回候选机型和置信度,先缩小范围,再让用户结合铭牌、品牌和设备参数确认标准机型。确认后,就可以继续查对应说明书、保养要求或故障资料。
因为不同系列和配置外观相近,角度、遮挡和背景都会影响结果,所以保留 Top-K 候选,不自动认定第一名正确。另外,标准机型和组织里的具体资产分开,识别出某个型号还不能确定是哪一台机器,关联具体资产仍要用户确认。
实现细节
图片识别用于辅助机型定位,再衔接知识问答。候选、模型版本和人工复核结果分别保存,不能把一次分类输出直接当作已核验的资产身份。
面试回答
EfficientNet 是一类卷积神经网络,经典方法通过复合缩放协调调整网络深度、宽度和输入分辨率,在识别能力与计算开销之间做平衡。深度影响特征层次,宽度影响表达能力,分辨率影响细节保留,单独扩大某一个维度不一定划算。
我们的任务是从已有农机类别中返回候选机型,适合封装成专门的图片分类服务。选择时既考虑相近型号的区分能力,也看服务延迟、模型大小和部署环境能承受的并发。独立服务的输入和输出比较稳定,后端可以统一映射机型和安排人工复核,模型升级也能单独进行。
实现细节
缩放维度与代价见表。分类结果只覆盖模型已定义类别,机型标签映射与权重一同管理;EfficientNet 分类服务与 ColQwen 文档检索服务承担不同任务。
| 维度 | 含义 | 代价 |
|---|---|---|
| 深度 | 增加网络层数,学习更复杂的特征 | 计算链路变长 |
| 宽度 | 增加通道数,表达更多特征 | 计算量与内存增加 |
| 分辨率 | 保留更多图像细节 | 计算量明显增加 |
服务接入与结果处理
面试回答
Java 后端负责用户认证、文件与业务校验,调用内部模型服务后,把候选标签映射为标准机型,再处理人工复核和业务关联。FastAPI 提供内部 HTTP 接口,负责图片解码与预处理,PyTorch 加载 EfficientNet 权重并完成推理,返回 Top-K、分数和模型版本。
模型服务主要做计算,不直接读取组织资产或工单,这样模型资源和业务服务可以分别部署、限流和升级。预处理中的尺寸、颜色通道和归一化要与训练配置一致,类别索引与机型标签也随权重管理,否则模型即使正常返回,也可能被映射成错误名称。
实现细节
组件职责和完整调用顺序见表与流程。分类计算结果经过 Java 后端转换后仍是候选,用户确认后才完成业务关联;模型服务的内部访问不能替代业务认证和资源校验。
| 组件 | 职责 | 关键约束 |
|---|---|---|
| Java 后端 | 认证、文件校验、机型映射与复核流程 | 统一业务规则及访问范围 |
| FastAPI | 内部接口、图片解码与预处理 | 预处理与模型训练配置一致 |
| PyTorch / EfficientNet | 模型加载与分类推理 | 权重、类别映射和模型版本一致 |
| 用户确认 | 结合铭牌等信息确认候选 | 确认后再完成业务关联 |
用户上传图片
↓
Java 后端:认证、文件校验、业务处理
↓
FastAPI:图片解码和预处理
↓
PyTorch / EfficientNet:模型推理
↓
返回 Top-K、置信度和模型版本
↓
Java 后端:关联标准机型、返回候选
↓
用户确认后完成业务关联
面试回答
农机相近型号的外观可能很接近,Top-K 可以保留多个候选,让用户结合铭牌和其他角度比较。模型输出的 Softmax 分数反映已知类别间的相对倾向,未经校准不能直接理解成这次识别正确的概率;一张不属于任何已知类别的图片也可能得到较高分。
所以除了 Top-1 分数,还结合前两名差距、图片清晰度、主体完整性和候选是否能映射有效机型来提示复核,阈值通过验证集确定。候选接近时请用户补照片或查看铭牌,即使分差大也保留确认。识别结果和模型版本记录下来,确认后再完成对应业务关联。
实现细节
各类分数和身份信息的边界见表,复核检查项见列表。高分不能可靠排除未知类别,标准机型也不能唯一标识组织中的具体资产,不能把两种不确定性合成一个“已识别”。
| 信息 | 能帮助判断什么 | 不能据此推断什么 |
|---|---|---|
| Top-K 候选 | 比较外观相近机型 | 第一名必然正确 |
| Softmax 分数 | 已知类别间的相对倾向 | 实际正确率或未知类别已被可靠排除 |
| Top-1 与 Top-2 差距 | 候选是否接近、是否需要重点复核 | 差距大就无需核对 |
| 型号与资产 | 缩小标准机型范围 | 仅凭外观确定组织中的具体资产 |
- Top-1 分数是否足够高。
- Top-1 与 Top-2 的差距是否明显。
- 图片是否清晰,设备主体是否完整。
- 候选类别是否能映射到有效标准机型。
面试回答
我先区分输入问题和服务故障。格式错误、文件损坏或超出大小限制,就提示用户修改图片,重复推理没有意义;连接失败、暂时不可用可以在总时间预算内有限重试,过载时限制并发和等待队列,避免重试继续放大压力。
识别失败会返回明确状态,让用户重传、稍后重试或手动选择机型,不能把故障当成没有候选。推理成功但结果不明确则正常返回候选并要求复核。健康检查也看模型权重是否加载成功,不能只凭 FastAPI 接口已经启动就认为识别能力可用。
实现细节
异常类型与界面处理见表。请求超时与服务内部失败分开记录,重试受整体预算约束;人工录入保留为可继续的业务路径,不依赖模型服务恢复后才能提交全部流程。
| 情况 | 处理方式 |
|---|---|
| 图片不符合要求 | 提示更换或压缩图片 |
| 模型未加载、服务不可用 | 返回暂不可识别,允许手动选择 |
| 推理完成但候选不明确 | 返回候选并要求人工复核 |
| 调用超时 | 提示重试或手动录入 |
MCP 工具与调用边界
面试回答
MCP 的全称是 Model Context Protocol,用于让 AI 应用以统一方式连接外部工具和数据。普通 HTTP 接口已经提供业务能力,MCP Server 再把这些能力描述为可发现的工具,提供工具说明、参数 Schema 和调用方式,方便支持 MCP 的客户端接入。
我把图片识别、标准机型查询、知识检索、问答和故障排查等公共能力封装出来,实际仍复用 Java 后端的规则和访问范围。比如外部助手可以先识别图片,请用户确认机型,再调用知识问答查询保养要求。这样减少每个客户端分别理解和适配业务 API 的工作,业务实现和权限仍由原后端维护。
实现细节
工具能力见表。MCP Server 提供发现和调用适配,HTTP 服务继续承载实际业务;模型根据工具描述提出调用发生在客户端编排层,协议本身不替模型决定该调用哪个工具。
| 工具能力 | 解决的问题 |
|---|---|
| 图片识别 | 根据照片获取候选机型 |
| 标准机型查询 | 确认品牌、型号和机型类型 |
| 知识检索 | 查找相关手册与证据 |
| 知识问答 | 根据资料生成带引用的回答 |
| 故障排查 | 结合现象、故障码与资料给出排查建议 |
面试回答
每个 MCP 工具都定义清楚名称、适用场景、输入 Schema 和返回结构,同时说明是否写入数据。客户端获取工具描述后,模型根据用户目标提出工具名和参数,客户端与 MCP Server 校验后执行,Java 后端再检查实际业务范围。
例如图片识别工具接收图片和文件信息,只返回候选、置信度与复核建议,不创建资产;知识检索返回证据,知识问答再基于证据生成回答。边界明确,模型才容易正确选择。选择发生在客户端模型和编排层,MCP Server 负责收到调用后的校验与执行,不能因为模型选了工具就跳过参数或权限检查。
实现细节
下面的 JSON 展示名称、描述和一次调用输入,正式输入 Schema 另行约束字段类型、必填项和取值范围。工具调用结果区分证据、候选和业务回执;各参与方职责见表。
| 参与方 | 负责什么 | 调用边界 |
|---|---|---|
| 客户端模型与编排层 | 根据目标和工具描述提出调用 | 只提出工具与参数 |
| MCP Server | 工具发现、Schema 校验与调用处理 | 不能因为模型选择了工具就省略校验 |
| Java 后端 | 实际业务能力与权限检查 | 不信任调用参数自行声明的权限 |
| 内部模型服务 | 执行图像等模型计算 | 不直接读取组织业务数据 |
{
"name": "farm_machinery_run_image_recognition",
"description": "根据单张农机图片返回候选机型、置信度和人工复核建议",
"input": {
"image_base64": "...",
"file_name": "tractor.jpg",
"content_type": "image/jpeg"
}
}
面试回答
外部调用方先认证,MCP Server 再使用受限服务身份调用后端,只开放平台公共标准机型和知识能力,不读取组织私有资产、工单或私有知识库。调用参数里填写组织 ID 不能扩大权限,实际范围由服务端身份和后端规则确定。
结果要区分成功但空结果、证据不足、参数或权限错误,以及超时和服务不可用。工具执行失败通过错误状态返回,让客户端决定修正输入、有限重试或向用户解释,不能把故障包装成正常空列表。问答保留引用和证据充分性,识别保留候选、模型版本及复核状态,帮助客户端正确解释结果。
实现细节
返回分类与客户端动作见表和列表。服务身份的能力范围与外部请求参数分开,权限错误不能通过改写组织参数绕过。错误状态表达执行是否成功,证据充分性表达结果能否支撑结论,两者不能混用。
| 返回情况 | 含义 | 客户端后续动作 |
|---|---|---|
| 成功但空结果 | 查询完成,没有匹配资料 | 调整条件或说明未找到 |
| 证据不足 | 现有资料无法支撑完整结论 | 补充信息或限制回答范围 |
| 参数或权限错误 | 请求无效或无权调用 | 修正输入或处理授权,不能绕过检查 |
| 超时或服务不可用 | 工具未能正常完成 | 在预算内有限重试或说明失败 |
- 查询成功但没有匹配结果。
- 找到了资料,但不足以支持回答。
- 参数不合法或没有访问权限。
- 下游服务不可用或请求超时。
易混点与回答检查
易混点:分类置信度不能直接解释成实际正确率,机型类别不等于具体资产;MCP 工具选择发生在客户端模型与编排层。
回答检查
补充记录
简历表述:接入 FastAPI/PyTorch 图像识别服务,返回 Top-K 候选机型和置信度供人工复核;开发 MCP Server 提供图像识别、知识检索与问答、标准机型查询和故障排查建议。
事实 / 代码依据:待补充。