近年、ECサイトのAIカスタマーサービスにおいて「商品の画像」から注文状況を判定する需要が急増しています。私は以前、担当していたファッションECで商品画像とテキストを同時に処理するAIボットを開発した経験があります。従来は画像認識APIとLLMを別々に呼び出す必要があり、レスポンス遅延とコストが課題でした。

本稿では、HolySheheep AIを活用した多模态プロンプトエンジニアリングの基本から、 Few-shot学習による精度向上テクニックまで、の実用的な手法を解説します。

多模态AIとは

多模态AIとは、テキスト・画像・音声など異なるモダリティ(様態)を同時に処理できるAIモデルのことです。GPT-4VやClaude 3 Opus、Gemini Proなどのモデルが 대표的に知られています。

画像描述の最適化アプローチ

1. 構造化されたプロンプト設計

画像描述を依頼する際、漠然とした指示ではなくXMLタグやMarkdown形式の活用することで、出力の品質が大幅に向上します。以下は商品画像からの情報抽出プロンプトの例です。

import requests
import base64
from io import BytesIO

画像をbase64エンコード

def encode_image(image_path): with open(image_path, "rb") as img_file: return base64.b64encode(img_file.read()).decode('utf-8') image_base64 = encode_image("product_image.jpg") payload = { "model": "gpt-4o-mini", "messages": [ { "role": "system", "content": """あなたは商品画像分析専門家です。 以下のXMLタグ形式で情報を抽出してください: <product_info> <category>商品カテゴリ</category> <color> основной цвет товара</color> <brand>ブランド名(不明な場合は「不明」)</brand> <condition>新品/中古/傷あり</condition> <price_estimate>推定価格(JPY)</price_estimate> </product_info> <reasoning> 判断根拠を簡潔に説明 </reasoning>""" }, { "role": "user", "content": [ { "type": "image_url", "image_url": { "url": f"data:image/jpeg;base64,{image_base64}" } } ] } ], "temperature": 0.3, "max_tokens": 500 } response = requests.post( "https://api.holysheep.ai/v1/chat/completions", headers={ "Authorization": f"Bearer YOUR_HOLYSHEEP_API_KEY", "Content-Type": "application/json" }, json=payload ) print(response.json()["choices"][0]["message"]["content"])

ポイント:temperatureを0.3程度に下げることで出一貫性を保ち、構造化されたXMLタグさせることで後のパースが容易になります。

2. Few-shot Learningの実装

Few-shotとは、数例の例示を与えるだけで新たなタスクに対応させる手法です。多模态タスクでは特に有効です。

# Few-shot 例示を含む多模态プロンプト
few_shot_prompt = {
    "model": "claude-sonnet-4-20250514",
    "messages": [
        {
            "role": "system",
            "content": """あなたはECサイトの注文状況判定AIです。
画像から状況を判定し、適切な対応を示してください。"""
        },
        {
            "role": "user",
            "content": [
                {
                    "type": "text",
                    "text": """【例1】入力: 届いた商品の写真(箱が開封され、商品が箱から半分出ている)
出力: 配送事故の可能性があります。箱の再利用可能な損傷を確認し、商品を保証してください。対応: 交換・返金プロセスを開始"""
                },
                {
                    "type": "text", 
                    "text": """【例2】入力: 新品のタグ付きバッグの写真
出力: 問題は報告されていません。新品正品を確認。対応: 完了"""
                },
                {
                    "type": "text",
                    "text": """【例3】入力: 靴底の摩耗が特徴的なスニーカーの写真
出力: 使用感あり中古品の特徴。対応: 中古品として取值額を通知"""
                }
            ]
        },
        {
            "role": "user",
            "content": [
                {
                    "type": "image_url",
                    "image_url": {"url": f"data:image/jpeg;base64,{image_base64}"}
                },
                {
                    "type": "text",
                    "text": "この注文状況画像を判定してください"
                }
            ]
        }
    ],
    "max_tokens": 300,
    "temperature": 0.2
}

response = requests.post(
    "https://api.holysheep.ai/v1/chat/completions",
    headers={
        "Authorization": f"Bearer YOUR_HOLYSHEEP_API_KEY"
    },
    json=few_shot_prompt
)

HolySheep AIでの実装Tips

HolySheep AIでは、多模态モデルの利用時に以下の特徴があります:

コスト試算:月次5000リクエストの場合

モデル1Mトークン単価月次コスト概算
GPT-4o$8/MTok約¥32,000
Gemini 2.5 Flash$2.50/MTok約¥10,000
DeepSeek V3$0.42/MTok約¥2,100

よくあるエラーと対処法

エラー1:画像サイズが大きすぎる

# ❌ エラー例:4K画像をそのまま送信
image_base64 = encode_image("4k_product.jpg")  # 10MB超

✅ 解决方法:画像のリサイズと圧縮

from PIL import Image def preprocess_image(image_path, max_size=1024): img = Image.open(image_path) # アスペクト比を維持してリサイズ img.thumbnail((max_size, max_size), Image.Resampling.LANCZOS) # JPEG形式で圧縮 output = BytesIO() img.convert('RGB').save(output, format='JPEG', quality=85)