小智 AI 接入视觉能力:原理拆解+服务端实现

picture.image

猴哥的第 181 期分享,欢迎追看

前文,分享了:

小智AI MCP 控制IoT设备:原理+流程拆解

不得不说,接入了 MCP,可玩性越来越高了。

本文,就来聊聊小智AI如何通过 MCP 接入视觉能力

  1. 交互逻辑

视觉能力,是通过接入摄像头搞定的。

上篇已经实现了MCP 控制IoT设备,设备端的摄像头也是一种IoT设备

当用户有图片识别需求时,服务端识别到这种意图,会通过 MCP 向客户端发请求。

客户端,调用摄像头拍照,然后请求视觉识别模型,获得当前图片的描述。

客户端通过 MCP 把当前看到的发给服务端,由服务端 LLM 进行总结后回答用户。

交互逻辑,用流程图描述如下:

picture.image

我们来看日志,会更直观一些:

picture.image

整个流程,基于上篇分享的 MQTT + UDP 协议框架,实现并不复杂。

下面重点看:如何自建视觉识别模型

  1. 视觉识别模型

对于简单的图片描述生成,其实只要接入一个多模态大模型就够了,比如Qwen 2.5-VL

无论是本地部署,还是调用云端API,最终都给封装成 OpenAI 兼容格式。

  
openaiClient = OpenAI(api\_key=settings.VISION\_KEY, base\_url=settings.VISION\_URL)  
  
def process\_image\_with\_ai(image\_data: bytes, question: str) -> str:  
    encoded\_image = base64.b64encode(image\_data).decode("utf-8")  
    response = openaiClient.chat.completions.create(  
        model=settings.VISION\_MODEL,  
        messages=[{"role": "user","content": [  
            {"type": "image\_url","image\_url": {"url": f"data:image/jpeg;base64,{encoded\_image}"}},  
            {"type": "text", "text": question},  
        ]}]  
    )  
    return response.choices[0].message.content  

以阿里云的qwen-vl-plus,单张图像推理需要 1.5-2s 左右。

  
# 1.68 s  
{'success': True, 'result': '图片中有一只卡通风格的猴子。猴子的毛色是棕色的,脸上有彩虹色的装饰,显得非常可爱。它手里拿着一块牌子,牌子上用红色字母写着“AI”。背景是浅绿色的,整体画面色彩鲜艳,给人一种愉快和积极的感觉。'}  

所以,对延时要求较高的朋友,可选择部署端侧模型,对于图片描述这种简单任务,完全足够了。

最后,再把上述结果,封装到一个/mcp/vision/explain接口中,对外提供服务即可,这里给出接口示例:

  
@app.post("/mcp/vision")  
async def analyze\_image(  
    request: Request,  
    file: UploadFile = File(..., description="JPEG 图像文件"),  
    question: str = Form(...),  
):  
    """  
    接收 JPEG 图像文件和问题,进行 AI 分析并返回结果。  
    - **file**: JPEG 格式的图像文件  
    - **question**: 关于图像的问题  
    - **headers**:  
        - Device-Id (required)  
        - Client-Id (optional)  
        - Authorization (Bearer token, optional)  
    返回:  
    - 成功时返回 AI 分析结果  
    - 失败时返回错误信息  
    """  
    # 1. 提取 headers  
    # 2. 调用 AI 模型分析  
    try:  
        image\_data = await file.read()  
        result = process\_image\_with\_ai(image\_data, question)  
        return {"success": True, "result": result}  
    except Exception as e:  
        raise HTTPException(status\_code=500, detail="AI 分析失败")  
  

如果有类似人脸识别等需求,那就再接入一个人脸识别的服务不就 OK 了。

有了 MCP,想干点啥不行?

写在最后

本文分享了 小智AI 接入视觉能力 的原理,和服务端实现方案。

如果对你有帮助,欢迎点赞收藏 备用。

下篇继续聊:

  • 如何低成本 DIY 一套接入视觉能力的 小智AI

为方便大家交流,新建了一个 AI 交流群,公众号后台「联系我」,拉你进群。

👇 关注猴哥,快速入门AI工具

picture.image

# AI 工具:

本地部署大模型?看这篇就够了,Ollama 部署和实战

盘点9家免费且靠谱的AI大模型 API,统一封装,任性调用!

免费GPU算力本地跑DeepSeek R1,无惧官方服务繁忙!

# AI应用** :**

弃坑 Coze,我把 Dify 接入了个人微信,AI小助理太强了

我把「FLUX」接入了「小爱」,微信直接出图,告别一切绘画软件!

202K 下载!最强开源OCR:本地部署,邀你围观体验

阿里开源TTS CosyVoice 再升级!语音克隆玩出新花样,支持流式输出

借 WeChatFerry 东风,我把微信机器人复活了!

成本不到50的AI对话机器人,如何自建服务端?自定义角色+语音克隆

0
0
0
0
评论
未登录
暂无评论