news 2026/9/7 2:11:30

让万物开口说话:从零搭建拍照识别智能体

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
让万物开口说话:从零搭建拍照识别智能体

之前在不少“AI 学习机”类产品上看到过这样的功能演示:对着桌子上的苹果拍一张照片,平板里的人工智能助手不仅能告诉你“这是一个红苹果”,还会用苹果的第一人称开口说话:“你好呀,我是红富士苹果,削皮吃更甜哦……”

第一眼觉得很神奇,但拆开看,背后的技术链路其实并不复杂:摄像头采集图片 → 视觉模型完成物体识别 → 大语言模型基于识别结果做角色扮演 → 语音合成播报。核心就两件事:拍照识别提示词设计

这篇文章会从零讲解如何自己动手做一个“拍照识别万物 + 万物开口说话”的自定义智能体,包含完整代码、提示词模板、可视化平台搭建思路和常见排错方案。无论你是 AI 产品经理、全栈开发者,还是准备做教育类应用的学生团队,都可以照着实现一版原型。

1. 背景与核心概念

1.1 智能体(Agent)到底是什么

“智能体”这个词近两年频繁出现,但很多读者对它仍然比较模糊。简单理解,智能体就是一个能自主完成多步骤任务的 AI 程序。它不再只是“你问一句、它答一句”的聊天机器人,而是可以这样工作的:

能力说明例子
理解任务解析用户的自然语言请求“帮我看看桌上是什么水果”
调用工具调用摄像头、图片识别接口、搜索、计算器读取图片文件并传给视觉模型
规划步骤拆解任务并决定先做什么、后做什么先识别物体,再生成拟人介绍
使用记忆记住上下文,支持多轮对话用户追问物体产地时能接上话题
输出结果以文字、语音、卡片等形式回复用合成语音把介绍读出来

“自定义智能体”则是在通用智能体能力之上,允许开发者或用户自己配置提示词、知识库、工具和工作流。你不需要从零训练模型,只需要把已有的模型能力组合起来,定义好行为规则。

1.2 拍照识别万物的实现路径

传统的“拍照识物”依赖图像分类模型,模型能回答“这是什么”,但遇到没见过的物体就很难处理。现在的视觉大模型(VLM,Vision-Language Model)直接把“看图说话”变成了一件很自然的事:

  • 输入一张图片;
  • 模型能理解图像内容;
  • 结合自然语言指令输出识别结果、属性描述、背景知识。

实现链路一般为:

摄像头/相册取图 → 图片编码 → 调用视觉模型接口 → 获得文字描述 → 进入对话智能体 → 语音播报

也就是说,识别能力由视觉模型负责,开口说话的能力由语言模型负责。如果你使用的模型本身自带视觉理解能力,这两个步骤甚至可以合并成一次调用。

1.3 “万物开口说话”的本质是提示词角色扮演

让物体“开口说话”,不是真的给物体装了嘴巴,而是通过**提示词(Prompt)**让大语言模型以物体的第一人称视角进行表达。

这个思路可以拆成三层:

  1. 识别层:确定图片中的核心物体;
  2. 角色层:让模型扮演该物体;
  3. 表达层:用规定的语气、格式、篇幅输出自我介绍。

核心技巧是系统提示词。只要提示词设计得当,同一个模型既能做严肃的百科讲解,也能立刻变成一只“会说话的保温杯”。

1.4 整体架构认知

先建立一幅完整的架构图,后续所有代码都围绕它展开:

用户打开应用 → 拍摄/上传图片 → 应用把图片发送给视觉模型 → 得到物体名称和属性 → 拼入“万物说话”系统提示词 → 调用大模型生成拟人介绍 → 合成语音播放 → 支持多轮追问

如果你选择集成 Dify、Coze 这类智能体平台,整个流程可以拖拽完成,不需要写太多代码;如果选择自研,则需要自己串联各个 API。下文两种方案都会覆盖。

2. 环境准备与基础选型

2.1 软硬件准备

本文示例以 Python 3.9+ 为主,你只需要一台能联网的电脑即可运行核心代码。如果要在手机或学习机上落地,还需要准备:

  • Android / iOS 设备或带摄像头的开发板;
  • 一个可用的视觉模型 API;
  • 一个可用的语音合成(TTS)API;
  • 智能体编排平台账号(可选,用于可视化搭建)。

操作系统方面,Windows、macOS、Linux 均可。本文演示以命令行为主,不依赖特定 IDE。

2.2 模型选型建议

目前市面上有多款支持图片输入的视觉语言模型,常见的包括通义千问 VL 系列、GLM-4V、GPT-4o、Claude 等多模态版本。不同模型的接口调用方式略有差异,但很多国产模型都提供了 OpenAI 兼容的接口格式,因此代码可以复用。

选择模型时建议关注三点:

  • 识别准确度:对常见物体、文字、场景的理解能力;
  • 中文表达质量:拟人化自我介绍是否自然;
  • 接口成本和延迟:学习机/教学场景通常需要低成本、低延迟。

需要说明的是,具体型号和价格变化较快,请以各平台官方文档为准。本文的代码示例思路可以通用,实际使用时替换为你的模型服务地址即可。

2.3 智能体平台选型

如果你不想从零写代码,市面上已经有成熟的智能体搭建平台,例如 Dify。这类平台的核心价值是:

  • 可视化编排大模型工作流;
  • 支持上传知识库,让回答更贴合业务;
  • 内置工具调用和对话管理;
  • 方便接入微信公众号、Web、API 等渠道。

自研方案则适合需要深度定制、数据不出内网、或产品形态比较特殊的团队。

方案优点缺点适合场景
智能体平台上手快、迭代快、无需维护基础设施灵活性受平台限制快速验证需求、教育产品原型
自研调用 API完全可控、可定制需要自己处理并发、安全、日志企业应用、定制硬件、私有化部署

2.4 项目结构设计

自研方案建议采用如下项目结构,便于后续扩展:

photo_agent/ ├── main.py # 主入口 ├── agent.py # 智能体逻辑封装 ├── vision.py # 图片识别工具 ├── prompts.py # 提示词模板 ├── config.py # 配置管理 ├── requirements.txt # 依赖清单 └── images/ # 存放测试图片

3. 核心原理拆解

3.1 视觉识别链路

调用视觉模型的基本流程是一致的:

  1. 读取图片:本地图片以二进制方式读取;
  2. Base64 编码:把图片二进制转为字符串,便于在 JSON 请求中传输;
  3. 构造消息:消息中包含图片数据和文本指令;
  4. 发送请求:调用大模型接口;
  5. 解析结果:从返回内容中提取文本描述。

有一个重要的工程细节:图片体积。手机照片动辄几 MB,直接传给模型会导致请求慢、费用高。建议上传前做压缩处理,一般将长边缩放到 1024 像素以内,JPEG 质量控制在 85 左右,能明显提升响应速度,且识别效果损失很小。

3.2 提示词工程基础

提示词是指导大模型行为的“说明书”。一个高质量的提示词通常包含以下部分:

  • 角色设定:让模型扮演什么角色;
  • 任务描述:需要完成什么任务;
  • 输入信息:用户提供的数据或上文结果;
  • 输出格式:规定输出结构,如 JSON、限定字数;
  • 限制条件:哪些不能说、哪些必须说;
  • 示例(Few-shot):给一两个范例,让模型模仿。

在“万物开口说话”场景中,角色设定是核心。你希望模型扮演的是“图片里的那个物体”,而不是一个见过这个物体的解说员。

3.3 让物体开口说话的关键提示词结构

直接给模型发一张图片,它通常会给出客观描述:“图片中是一个白色保温杯,杯身上有卡通图案。”如果想让保温杯“开口说话”,提示词要改写为:

你看到图片后,请判断图片中最主要的物体。 然后,请你以这个物体的身份,用第一人称“我”来介绍自己。 不要使用“图片中的这个物体”这种第三人称表达。

关键语法点在于人称切换。大模型对“你扮演谁”的理解非常敏感,只要在系统提示词里明确“你是图片里的那个物体”,输出内容就会完全不同。

按照这个思路,我们可以设计一个更完整的系统提示词模板,后面实战部分会给出可直接复制的版本。

3.4 对话上下文与记忆

“万物开口说话”不能只播报一次就结束,用户可能会追问:

  • “你是什么做的?”
  • “你适合用来做什么?”
  • “能讲个关于你的小故事吗?”

为了让追问有连贯性,需要把历史消息一并传给模型。大多数大模型接口都支持多轮消息结构,你只需要维护一个messages数组,每轮对话后追加用户消息和助手回复。

对于简单原型,直接把历史消息拼到请求里即可;数据量大时,建议引入数据库或向量记忆。

4. 完整实战案例:搭建一个会“开口说话”的拍照识别智能体

下面进入代码实战。示例中我以 OpenAI 兼容接口为例来演示,请根据你实际使用的模型服务替换base_urlmodel参数

4.1 创建项目结构

在命令行执行:

mkdir photo_agent && cd photo_agent touch main.py agent.py vision.py prompts.py config.py requirements.txt mkdir images

创建虚拟环境并安装依赖:

python -m venv venv source venv/bin/activate # Windows 使用 venv\Scripts\activate pip install openai # 如果你还需要图片压缩,可以安装 Pillow pip install pillow

requirements.txt内容如下:

openai>=1.0.0 pillow>=10.0.0

4.2 配置管理

为了避免把密钥写死在代码里,我们使用config.py统一管理配置:

# 文件路径:photo_agent/config.py import os # 从环境变量读取,避免密钥泄露 API_KEY = os.getenv("VLM_API_KEY", "") BASE_URL = os.getenv("VLM_BASE_URL", "https://your-model-service.example.com/v1") MODEL = os.getenv("VLM_MODEL", "your-vision-model") TTS_API_KEY = os.getenv("TTS_API_KEY", "") TTS_MODEL = os.getenv("TTS_MODEL", "your-tts-model")

如果你的模型服务不需要 OpenAI 兼容方式,请按官方文档调整客户端调用方式。

4.3 编写图片预处理与识别函数

视觉模型通常支持两种图片传递方式:一种是传图片 URL,另一种是传 Base64 编码后的图片内容。本地图片使用 Base64 更简单。

# 文件路径:photo_agent/vision.py import base64 import io from PIL import Image def compress_image(image_path: str, max_side: int = 1024, quality: int = 85) -> str: """ 压缩图片,并返回 Base64 字符串。 :param image_path: 本地图片路径 :param max_side: 图片最长边像素 :param quality: JPEG 压缩质量 """ with Image.open(image_path) as img: # 转换为 RGB,避免 PNG 透明通道带来的问题 img = img.convert("RGB") # 等比缩放 width, height = img.size if width >= height and width > max_side: new_width = max_side new_height = int(height * max_side / width) img = img.resize((new_width, new_height)) elif height > max_side: new_height = max_side new_width = int(width * max_side / height) img = img.resize((new_width, new_height)) # 压缩并编码 buffer = io.BytesIO() img.save(buffer, format="JPEG", quality=quality) encoded = base64.b64encode(buffer.getvalue()).decode("utf-8") return encoded

注意:不同模型对图片大小、格式有不同限制,如果遇到“图片过大”的错误,可以进一步降低max_sidequality

4.4 设计“万物说话”系统提示词

这是整个项目的灵魂。下面的提示词模板可以直接复制使用,也可以根据你的产品风格调整。

# 文件路径:photo_agent/prompts.py OBJECT_SPEAKER_PROMPT = """你是一台智能拍照讲解助手,具备看图说话和角色扮演能力。 任务流程: 1. 用户会发送一张图片。 2. 请你识别图片中最核心、最醒目的物体。 3. 然后,你不再是一个旁观者,而是变成图片中的那个物体。 4. 以这个物体的第一人称“我”的身份,向用户进行自我介绍。 自我介绍必须包含: - 我是什么(名称、类别) - 我的主要用途 - 我有什么有趣的特点或冷知识 - 关于我的一个实用小提示 表达要求: - 全程使用中文。 - 语气亲切、自然、有童趣,像一位耐心的朋友。 - 必须使用第一人称“我”,不要用“图片中的这个物体”这类第三人称描述。 - 字数控制在 150 到 250 字之间。 - 如果用户继续提问,请继续保持物体身份回答,直到用户明确要求你回到讲解员身份。 - 如果图片中没有任何明确物体,请如实说明,不要编造。""" SYSTEM_DEFAULT_PROMPT = """你是一台智能拍照讲解助手。 当用户发送图片时,你负责识别并介绍图片中的物体。 如果用户没有发送图片,你可以回答关于拍照识物、智能体使用等一般性问题。"""

看到区别了吗?OBJECT_SPEAKER_PROMPT强制模型做角色扮演,SYSTEM_DEFAULT_PROMPT则是普通助手。实际产品中可以根据开关切换两套提示词。

4.5 组装智能体核心逻辑

接下来把视觉识别和对话逻辑封装成一个类。

# 文件路径:photo_agent/agent.py import json from openai import OpenAI from prompts import OBJECT_SPEAKER_PROMPT, SYSTEM_DEFAULT_PROMPT from vision import compress_image class PhotoAgent: def __init__(self, api_key: str, base_url: str, model: str): self.client = OpenAI(api_key=api_key, base_url=base_url) self.model = model self.history = [] def _reset_system_prompt(self, enable_object_speaker: bool = True): """重建消息历史,设置系统提示词。""" system_prompt = OBJECT_SPEAKER_PROMPT if enable_object_speaker else SYSTEM_DEFAULT_PROMPT self.history = [{"role": "system", "content": system_prompt}] def chat_with_image(self, image_path: str, user_text: str = "你好,请介绍一下你自己", enable_object_speaker: bool = True): """ 发送图片并让智能体回复。 :param image_path: 本地图片路径 :param user_text: 用户想要对物体说的话 :param enable_object_speaker: 是否开启“万物开口说话”角色扮演模式 """ if not self.history or self.history[0]["role"] != "system": self._reset_system_prompt(enable_object_speaker) base64_image = compress_image(image_path) # 把系统提示词与本次图片请求放在一起 user_content = [ { "type": "image_url", "image_url": {"url": f"data:image/jpeg;base64,{base64_image}"}, }, { "type": "text", "text": user_text, }, ] # 追加本轮用户消息 self.history.append({"role": "user", "content": user_content}) response = self.client.chat.completions.create( model=self.model, messages=self.history, temperature=0.7, ) answer = response.choices[0].message.content # 追加助手回复到历史,支持后续追问 self.history.append({"role": "assistant", "content": answer}) return answer def clear_history(self): self.history = []

这段代码的核心价值在于维护了多轮对话历史。第一次提问时,图片和文本一起发给模型;之后用户追问时,不再重复发图片,模型也能依据历史中的图片描述继续回答。

4.6 编写主入口

# 文件路径:photo_agent/main.py import config from agent import PhotoAgent def main(): agent = PhotoAgent( api_key=config.API_KEY, base_url=config.BASE_URL, model=config.MODEL, ) image_path = "images/cup.jpg" print(">>> 已开启万物开口说话模式,输入 q 退出") while True: user_text = input("你想对它说:") if user_text.lower() == "q": break # 首轮对话附带图片,后续追问不带图片 if not agent.history: answer = agent.chat_with_image(image_path, user_text, enable_object_speaker=True) else: answer = agent.chat_without_image(user_text) print("\n回答:\n", answer, "\n") if __name__ == "__main__": main()

为了让chat_without_image可用,需要在agent.py中补充一个纯文本对话方法:

def chat_without_image(self, user_text: str): """不附带图片的对话,用于追问场景。""" self.history.append({"role": "user", "content": user_text}) response = self.client.chat.completions.create( model=self.model, messages=self.history, temperature=0.7, ) answer = response.choices[0].message.content self.history.append({"role": "assistant", "content": answer}) return answer

4.7 运行与验证

准备一张测试图片,例如images/cup.jpg,然后执行:

export VLM_API_KEY="你的密钥" export VLM_BASE_URL="你的模型服务地址" export VLM_MODEL="你的视觉模型名称" python main.py

预期输出效果类似于:

>>> 已开启万物开口说话模式,输入 q 退出 你想对它说:你好,请介绍一下你自己 回答: 大家好呀!我是一个白色陶瓷马克杯,平时主要用来装咖啡、热茶和牛奶。 我的杯身圆润厚实,保温效果还不错,冬天捧着暖暖的。 悄悄告诉你,刚倒进热水时先别急着喝,放凉到 60 度左右口感更合适。 希望以后每天都能陪你度过惬意的喝饮时光!

如果没有得到第一人称回答,而是出现“图片中是一个马克杯”这类描述,说明系统提示词没有被正确加载,请检查history数组中第一条消息是否为OBJECT_SPEAKER_PROMPT

4.8 接入语音合成

要让“万物开口说话”真正变成“开口说”,还需要语音合成。主流云服务商都提供 TTS 接口,核心思路是把智能体生成的文字转成音频播放。

简化版流程:

# 伪代码示例,请按你的 TTS 服务文档调整 import requests def text_to_speech(text: str, output_path: str): url = "https://your-tts-service.example.com/v1/audio/speech" headers = {"Authorization": f"Bearer {config.TTS_API_KEY}"} payload = { "model": config.TTS_MODEL, "input": text, "voice": "cute_boy", # 按服务商提供的音色选择 } response = requests.post(url, json=payload, headers=headers) with open(output_path, "wb") as f: f.write(response.content) return output_path

注意:不同 TTS 服务的请求字段差异很大,请以官方文档为准。如果是在移动端落地,也可以把 TTS 能力集成在客户端,减少服务器压力。

5. 基于 Dify 等智能体平台的可视化搭建

对于非开发者或需要快速验证产品的团队,直接使用智能体平台会更高效。以 Dify 这类可视化平台为例,搭建思路如下。

5.1 应用类型选择

平台上通常提供两类应用:

  • 聊天助手(Chatbot):适合多轮对话,用户可追问;
  • 工作流(Workflow):适合一次性任务,比如“图片输入 → 输出介绍”。

“万物开口说话”建议选择聊天助手,因为用户会追问。如果做批量识别,则选择工作流。

5.2 配置模型与工具

在应用配置页中:

  1. 选择支持视觉输入的模型,并确认模型已开启图片理解能力;
  2. 开启图片上传功能,让用户能在对话中发送图片;
  3. 如需要语音播报,增加一个“文本转语音”工具节点。

这里的核心配置项是模型选择:如果模型不支持图片输入,后面的所有设计都无法生效。

5.3 编写系统提示词

把 4.4 节中的OBJECT_SPEAKER_PROMPT原样粘贴到平台系统提示词区域即可。不同平台对图片消息的传递方式不同,但大体思路一致:用户在对话窗口上传图片后,模型会把图片作为上下文上下文的一部分接收。

如果平台支持“变量”,可以把“识别结果”设为中间变量,方便后续节点引用:

{{#sys.query#}} 是用户输入 {{#sys.image#}} 是用户上传的图片

这样后面节点可以基于识别结果生成语音、保存记录或推送通知。

5.4 发布到服务渠道

配置完成后,平台通常提供以下发布方式:

  • Web 应用:生成一个聊天页面链接;
  • API 服务:以 HTTP 接口方式供自己的应用调用;
  • 第三方渠道:接入公众号、钉钉、飞书、企业微信等。

建议先通过 Web 页面验证效果,确认识别和角色扮演稳定后,再开放 API 给小程序或学习机客户端。

5.5 平台方式与自研方式如何选择

如果目标是快速做出 Demo,直接选平台方式,通常一小时内就能上线一个可用的“拍照识物+万物说话”智能体。如果目标是把能力嵌入自己的 App,需要深度定制界面、控制数据流转,建议用自研方式,把核心逻辑做成独立的 Agent 服务。

6. 常见问题与排查思路

在开发和调试过程中,比较容易遇到以下几类问题。这里整理成表格,方便按图索骥:

问题现象常见原因解决思路
模型返回“无法理解图片内容”模型不支持图像输入,或图片编码错误更换支持视觉输入的模型;检查 Base64 是否正确、有无 data URL 前缀
识别结果不准确图片模糊、光线差、画面中物体过多换清晰的单物体图片测试;压缩时不要过度降低质量
物体“开口说话”变成了第三人称客观描述系统提示词没有生效,或消息 history 未正确设置检查第一条 system 消息;确认是否用了角色扮演提示词模板
用户追问后模型忘记图片内容多轮对话时没有携带历史消息在请求中携带完整 messages 数组,而不仅是当前问题
响应速度很慢,或费用高图片未压缩,体积过大使用 Pillow 压缩到长边 1024、质量 85;合理控制并发
输出内容包含幻觉信息模型对物体不确定时编造知识在提示词中明确“不确定就说不确定”;为知识类回答引入知识库
上传图片被服务拒绝格式不支持,常见为 HEIC、WebP服务端统一转为 JPEG 后再调用模型
语音播报听起来像念稿TTS 音色选择不当,或没有去除 Markdown 符号给 TTS 前先清理特殊字符;尝试多种音色

6.1 关于判断问题现象:以“第三人称回答”为例

很多读者第一次运行后会发现模型回复是:

图片中是一个保温杯,杯身是白色的……

这就是典型的角色扮演失败。排查顺序建议如下:

  1. 确认系统提示词是否包含“你是图片中的那个物体”“使用第一人称我”字样;
  2. 确认请求结构中system消息位于第一条;
  3. 尝试更换模型,部分模型对复杂角色扮演的遵循能力较弱;
  4. 在提示词中加入一段示例,例如:“例如看到一只猫,就说‘我是小猫咪,喜欢在窗台晒太阳’。”

多数情况下,加入示例后问题即可解决。

7. 最佳实践与工程建议

7.1 提示词版本管理

提示词是 AI 应用的“核心代码”,建议用 Git 管理提示词文件。每次调整系统提示词后,都要记录变更原因和测试效果,方便回滚。你可以把提示词按场景拆分成独立文件,例如object_speaker.txtknowledge_tutor.txt,运行时动态选择。

7.2 让输出更稳定:结构化输出

如果后续需要把识别结果用于业务逻辑,建议要求模型返回 JSON 结构,例如:

请按以下 JSON 格式返回: { "object_name": "物体名称", "description": "一句话概括", "speech": "第一人称自我介绍" }

结构化输出方便程序解析,也方便做后续的数据统计和质量评估。

7.3 视觉输入环节的工程优化

在拍照识物场景中,图片质量直接决定效果。建议在客户端做这些预检:

  • 对焦提示:引导用户让物体处于画面中心;
  • 光线提示:光线不足时提醒开灯或靠近窗户;
  • 单物体优先:提示“请拍一个物体”,避免画面杂乱;
  • 上传前压缩:降低延迟和成本。

7.4 内容安全与合规

如果是面向学习机、儿童教育场景,必须考虑内容安全。建议做到三点:

  • 模型输出前增加敏感词过滤和内容审核接口;
  • 系统提示词中明确“不要回答与物体无关的不安全内容”;
  • 在应用层面限制未成年人的持续聊天时长,并保留日志用于审计。

另外,不要使用任何声称“无限制”“无审核”的模型服务。正规教育产品需要的是可信、可控、可追溯的内容生成能力。

7.5 性能与成本控制

视觉模型的调用成本通常高于纯文本模型。可以考虑以下策略:

  • 先做一次轻量分类,识别出物体类别后再决定是否需要调用更强的大模型;
  • 对同一物体的重复提问做缓存,减少模型调用次数;
  • 开启异步处理,让语音播报和模型生成并行执行,减少用户等待时间。

7.6 评估与迭代

上线后的迭代依赖数据,建议记录以下指标:

  • 用户平均提问轮数;
  • 角色扮演成功率(人工抽检);
  • 识别准确率(与标注对比);
  • 语音播报完整率;
  • 平均响应时间。

每两周抽一批用户会话进行质量评估,把失败案例补充到提示词的“注意”部分,模型表现会越来越稳定。

8. 总结与延伸方向

通过本文,你应该已经掌握了实现“拍照识别万物 + 万物开口说话”的核心方法:

  • 视觉模型负责把图片变成文字知识;
  • 系统提示词负责让模型以物体第一人称进行表达;
  • 多轮消息结构负责支持用户追问;
  • 语音合成负责把文字变成声音;
  • 智能体平台可以帮你把上述流程可视化、产品化。

比较大的坑有两个:一是模型必须真正支持图片输入,否则后面所有步骤都无法进行;二是角色扮演是否自然,完全取决于系统提示词的质量,值得花时间反复打磨。

如果你想把项目做得更深,可以继续探索以下方向:

  • 知识库增强:给智能体挂载一个植物、动物、生活用品知识库,让介绍内容更准确、更丰富;
  • 多物体识别:一次识别图中多个物体,并允许用户选择让哪个物体“开口说话”;
  • 个性化音色:结合 TTS 让不同类别物体配备不同音色,例如动物用童声、电器用沉稳声;
  • 离线端侧部署:在嵌入式设备上部署轻量化视觉模型和语音合成模型,实现完全离线。

这套能力不止能做学习机。家庭教育、博物馆导览、盲人辅助、商品营销展示,都可以直接复用。从一个“会说话的马克杯”开始,你完全可以构建出属于自己的智能体产品。动手改一版提示词,拍一张身边的物品,体验一下 AI 从“看”到“说”的完整链路吧。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/7 2:10:22

像素工厂萌新发育全攻略:资源规划、产线搭建与防御节奏详解

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/7 2:09:54

零token视频去重:用抽帧与感知哈希实现本地素材库相似视频识别

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/7 2:08:54

软件测试简历项目经验怎么写?16个实战练手项目助你突围

写软件测试简历最尴尬的时刻,不是学历不够,也不是八股文没背熟,而是项目经验那一栏空着,或者只能写“跟视频做了一个登录注册测试”。面试官追问一句“这个项目你们怎么设计测试数据的”,你心里清楚:那只是…

作者头像 李华
网站建设 2026/9/7 2:08:45

MFC对话框状态栏添加与动态刷新:从创建到多窗格实战指南

简介:压缩包内是一套在VS2010环境下为MFC对话框添加状态栏的完整工程示例,适合刚接触MFC界面开发、需要为Dialog补充底部状态栏反馈机制的开发者。示例程序演示了从对话框资源中插入StatusBar控件、将Simple属性设为FALSE以启用多区域划分,到…

作者头像 李华
网站建设 2026/9/7 2:07:50

Spring Boot+Vue+AI:宠物领养管理系统前后端分离实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华