我第一次接触多模态AI开发时,面对满屏的专业术语完全不知所措。花了整整三天才搞清楚什么是vision model、什么是base64编码、为什么我的图片传不上去。三年后的今天,我决定写一篇真正面向零基础开发者的教程——不假设你会任何东西,手把手带你从安装环境到跑通第一个多模态Chain。
本文所有代码基于 HolySheep API 完成,国内直连延迟低于50ms,支持GPT-4o、Gemini 2.0等多模态模型,新用户注册即送免费额度。
一、多模态Chain到底是什么?
先不要被名字吓到。普通AI只能处理文字,你问它"这张图片里有什么",它会一脸懵。多模态AI不一样——它同时理解图片和文字,就像一个能"看见"的智能助手。
举个例子:你发给它一张产品实物图,问"这个产品在我们的库存系统里属于哪一类?"它会先"看"图,再结合文字问题,给出准确答案。这就是多模态Chain的典型应用场景。
二、环境准备:30分钟从零搭建
我们先在电脑上准备好开发环境。
2.1 安装Python(如果你还没有)
先去 python.org 下载安装包(选3.9以上版本)。安装时记得勾选"Add Python to PATH"。
2.2 创建项目文件夹
在命令行里执行:
mkdir multimodal-demo
cd multimodal-demo
python -m venv venv
Windows激活虚拟环境
venv\Scripts\activate
Mac/Linux激活虚拟环境
source venv/bin/activate
2.3 安装LangChain及相关包
pip install langchain langchain-openai pillow python-dotenv requests
我第一次安装时遇到版本冲突问题,后来发现用指定版本更稳定:
pip install langchain==0.1.0 langchain-openai==0.0.5
三、API Key获取与配置
这里以 HolySheep 为例,因为它的优势非常明显:
- 汇率优势:¥1=$1无损结算,对比官方¥7.3=$1的汇率,节省超过85%
- 国内直连:延迟低于50ms,调试体验流畅
- 充值便捷:支持微信、支付宝直接充值
- 价格优势:GPT-4o $5/MTok、Gemini 2.0 Flash $0.35/MTok
访问 立即注册 HolySheep,注册后在控制台创建API Key。
在项目根目录创建 .env 文件:
HOLYSHEEP_API_KEY=YOUR_HOLYSHEEP_API_KEY
四、第一个多模态Chain:看图回答问题
我们从最基础的功能开始:上传一张图片,问AI图片里有什么。
4.1 基础版本(单张图片)
import os
from dotenv import load_dotenv
from langchain_openai import ChatOpenAI
from langchain.schema import HumanMessage
from langchain.tools.render import render_text_description
import base64
加载环境变量
load_dotenv()
初始化模型(使用HolySheep API)
llm = ChatOpenAI(
model="gpt-4o",
api_key=os.getenv("HOLYSHEEP_API_KEY"),
base_url="https://api.holysheep.ai/v1"
)
def encode_image_to_base64(image_path):
"""将本地图片转换为base64编码"""
with open(image_path, "rb") as image_file:
return base64.b64encode(image_file.read()).decode("utf-8")
def ask_about_image(image_path, question):
"""
多模态问答:上传图片并提问
image_path: 本地图片路径
question: 你的问题
"""
# 编码图片
base64_image = encode_image_to_base64(image_path)
# 构建多模态消息
messages = [
HumanMessage(content=[
{"type": "text", "text": question},
{"type": "image_url", "image_url": {"url": f"data:image/jpeg;base64,{base64_image}"}}
])
]
# 调用API获取回答
response = llm.invoke(messages)
return response.content
测试运行
if __name__ == "__main__":
# 确保有一张测试图片
answer = ask_about_image(
"test_image.jpg",
"请描述这张图片的主要内容"
)
print(f"AI回答: {answer}")
4.2 进阶版本:多图对比Chain
实际工作中我们经常需要对比多张图片。我写了一个支持多图输入的版本:
import os
from dotenv import load_dotenv
from langchain_openai import ChatOpenAI
from langchain.schema import HumanMessage
from langchain.prompts import PromptTemplate
from langchain.chains import LLMChain
load_dotenv()
llm = ChatOpenAI(
model="gpt-4o",
api_key=os.getenv("HOLYSHEEP_API_KEY"),
base_url="https://api.holysheep.ai/v1"
)
def encode_images_to_base64(image_paths):
"""批量编码多张图片"""
encoded_images = []
for path in image_paths:
with open(path, "rb") as f:
encoded_images.append(base64.b64encode(f.read()).decode("utf-8"))
return encoded_images
def compare_products(image_paths, product_names):
"""
多图对比Chain:对比多个产品的外观差异
返回结构化的对比报告
"""
# 构建多图消息
content = []
for i, (img_b64, name) in enumerate(zip(
encode_images_to_base64(image_paths),
product_names
)):
content.append({"type": "image_url", "image_url": {"url": f"data:image/jpeg;base64,{img_b64}"}})
# 添加分析指令
comparison_prompt = f"""请对比以下{len(product_names)}个产品,输出结构化对比报告:
产品列表: {', '.join(product_names)}
对比维度: 外观、颜色、尺寸感、包装风格
输出格式: Markdown表格"""
content.insert(0, {"type": "text", "text": comparison_prompt})
messages = [HumanMessage(content=content)]
response = llm.invoke(messages)
return response.content
使用示例
if __name__ == "__main__":
# 假设有三款竞品图片
products = ["product_a.jpg", "product_b.jpg", "product_c.jpg"]
names = ["竞品A", "竞品B", "竞品C"]
report = compare_products(products, names)
print(report)
五、价格与成本测算
很多开发者担心多模态调用成本高。我实测了 HolySheep 的主流多模态模型定价(基于2026年最新数据):