私がAPI使ったことない頃からこの世界に飛び込んで、最初は「API?」という状態から始まりました。同じようにゼロから始めたいあなたのために、この記事ではCoze(扣子)のカードメッセージをGemini 2.5 Pro多模態APIで処理する方法を、スクリーンショットのヒント付きで丁寧に説明します。

前提知識:Cozeカードメッセージとは?

Coze(扣子)はByteDanceが開発したビジュアルBot開発プラットフォームです。カードメッセージとは、DiscordやSlackのようなチャット平台上でお洒落な埋め込みカードを生成できる機能のこと。通常のテキストだけでなく、画像付き・ボタン付き・フォーム付きのメッセージをドラッグ&ドロップで作成できます。

💡スクリーンショットヒント:Cozeエディターの左サイドバーから「卡片」カテゴリを展開すると、様々なカードテンプレートが表示されます。

Gemini 2.5 Pro多模態APIの魅力

Gemini 2.5 ProはGoogleの最先进的マルチモーダルAIです。テキストだけでなく、画像・音声・動画・PDFなど複数の数据类型を一つのプロンプトで処理できます。Cozeカード内の画像付きメッセージの内容分析及び自動返答生成に活用できます。

HolySheep AIを選ぶ理由

ここで私が実際に使っているHolySheep AI(https://www.holysheep.ai/register)をご紹介します。以下の理由で初心者にもおすすめです:

Step 1:HolySheep AIでAPIキーを取得

まずAPIを呼び出すための認証キーを取得しましょう。

  1. HolySheep AIに登録(無料)
  2. ダッシュボードの「API Keys」メニューをクリック
  3. 「Create New Key」ボタンをクリック
  4. キーに名前をつけて「Generate」

💡スクリーンショットヒント:生成されたキーは「sk-...」で始まる文字列です。このキーをメモ帳にコピーしておきましょう。一度画面を閉じると再表示できないので注意!

Step 2:CozeでカードメッセージBotを作成

次にCozeエディターでカードメッセージを出力するBotを設定します。

  1. Cozeにログインし「创建Bot」をクリック
  2. Bot名を入力(例:「Gemini画像分析Bot」)
  3. Botタイプで「AI Agent」を選択

💡スクリーンショットヒント:Bot設定画面の「模型」セクションで、ワークプレースに適切なモデルを選択してください。

Step 3:カードメッセージを出力するワークフロー設定

Cozeでカードメッセージを出力するには、ワークフローを構成する必要があります。

カードメッセージの構造を理解する

カードメッセージの基本構造は以下の通りです:

{
  "type": "interactive",
  "card": {
    "type": "template",
    "template_id": "あなたのテンプレートID",
    "variables": {
      "title": "タイトル",
      "content": "内容",
      "image_url": "画像URL"
    }
  }
}

Step 4:HolySheep AIのGemini 2.5 Pro APIを呼び出すコード

さて、ここから本番です!Cozeのコードブロック機能でHolySheep AIのGemini 2.5 Proを呼び出します。

import requests
import json

HolySheep AI設定

BASE_URL = "https://api.holysheep.ai/v1" API_KEY = "YOUR_HOLYSHEEP_API_KEY" # Step 1で取得したキー def analyze_card_with_gemini(card_data, image_url=None): """ Cozeカードメッセージの内容をGemini 2.5 Proで分析 Parameters: card_data: Cozeから受信したカードデータ(辞書型) image_url: カードに添付された画像のURL(任意) Returns: dict: Geminiの分析結果 """ # システムプロンプト system_prompt = """あなたは画像とテキスト内容を分析するAIアシスタントです。 Cozeカードメッセージの内容を深く理解し、適切な返答を生成してください。""" # ユーザーメッセージの構築 user_message = f"""以下のCozeカードメッセージを分析してください: カードデータ: {json.dumps(card_data, ensure_ascii=False, indent=2)}""" # 画像が添付されている場合 if image_url: user_message += f"\n\n添付画像URL:{image_url}" # APIリクエスト_body payload = { "model": "gemini-2.5-pro-preview-05-20", "messages": [ {"role": "system", "content": system_prompt}, {"role": "user", "content": user_message} ], "max_tokens": 2048, "temperature": 0.7 } # API呼び出し headers = { "Authorization": f"Bearer {API_KEY}", "Content-Type": "application/json" } response = requests.post( f"{BASE_URL}/chat/completions", headers=headers, json=payload, timeout=30 ) # 応答の確認 if response.status_code == 200: result = response.json() return { "success": True, "analysis": result["choices"][0]["message"]["content"], "usage": result.get("usage", {}) } else: return { "success": False, "error": f"エラー {response.status_code}: {response.text}" }

使用例

if __name__ == "__main__": # Cozeカードデータの例 sample_card = { "type": "template", "template_id": "product_card", "variables": { "title": "新商品案内", "content": "最新スマートフォンの詳細情報", "price": "¥89,800" } } result = analyze_card_with_gemini( card_data=sample_card, image_url="https://example.com/product.jpg" ) if result["success"]: print("分析結果:", result["analysis"]) else: print("エラー:", result["error"])

Step 5:Cozeワークフローへの組み込み

Cozeのコードブロックに上記コードを貼り付けて、ワークフローに接続します。

# Cozeワークフローでの使用例

コードブロックのinput変数:card_data, image_url

コードブロックのoutput変数:analysis_result

def coze_workflow_handler(event_data): """ Cozeワークフローから呼び出されるハンドラー関数 event_dataにはCozeから渡されるデータが含まれる """ # Cozeからカードデータを抽出 card_content = event_data.get("message", {}).get("content", {}) attached_images = event_data.get("message", {}).get("attachments", []) image_url = attached_images[0]["url"] if attached_images else None # HolySheep Gemini APIで処理 result = analyze_card_with_gemini( card_data=card_content, image_url=image_url ) # カード形式で応答を生成(Cozeのカード出力) if result["success"]: response_card = { "type": "interactive", "card": { "type": "template", "template_id": "response_card", "variables": { "title": "📊 分析結果", "content": result["analysis"], "usage_info": f"使用トークン: {result['usage'].get('total_tokens', 'N/A')}" } } } return response_card else: return { "type": "text", "content": f"処理エラー: {result['error']}" }

💡スクリーンショットヒント:Cozeコードブロックの設定で、「input variables」にcard_dataとimage_urlを追加し、「output variables」にanalysis_resultを設定してください。

Step 6:実際に動かしてみる

設定が完了したら、ワークフローをテストしましょう。

  1. Cozeエディター右上の「試す」ボタンをクリック
  2. テストメッセージでカード付きメッセージを投稿
  3. Geminiからの分析結果がカード形式で表示されるか確認

💡スクリーンショットヒント:テスト実行中にコンソールログを確認すると、API呼び出しの詳細が記録されます。HolySheepのダッシュボード에서도使用量の確認ができます。

Step 7:本番環境へのデプロイ

テストが完了したら、Botをパブリッシュして本番環境で利用開始します。

  1. Cozeエディターの「发布」ボタンをクリック
  2. 公開先のプラットフォームを選択(Discord、Slack、LINEなど)
  3. 認証情報を設定して「确认发布」

よくあるエラーと対処法

私が実際に遭遇したエラーとその解決策をまとめます。

エラー1:APIキーが無効(401 Unauthorized)

# ❌ エラー例

{"error": {"message": "Invalid API key provided", "type": "invalid_request_error"}}

✅ 解決方法

1. HolySheepダッシュボードでAPIキーが有効か確認

2. キーが完全コピーされているか確認(先頭/末尾の空白に注意)

3. キーのフォーマット確認:「sk-」で始まること

API_KEY = "YOUR_HOLYSHEEP_API_KEY" # 実際のキーに置き換える

原因:APIキーが正しく設定されていない、または期限切れです。
解決:HolySheep AIダッシュボードで新しいキーを生成して貼り付けてください。

エラー2:画像が処理されない(400 Bad Request)

# ❌ エラー例

{"error": {"message": "Invalid image URL format", "type": "invalid_request_error"}}

✅ 解決方法

1. 画像URLが直接アクセス可能か確認

2. HTTPS而非HTTPを使用

3. 画像URLエンコーディングの確認

正しいURLフォーマットの例

image_url = "https://example.com/image.png" # HTTPS必須 image_url = "https://example.com/image.jpg?token=abc123" # トークン付きOK

原因:画像URLがHTTPSでない、またはアクセス不可能な形式です。
解決:画像がパブリックアクセス可能なHTTPS URLであることを確認してください。

エラー3:レート制限(429 Too Many Requests)

# ❌ エラー例

{"error": {"message": "Rate limit exceeded", "type": "rate_limit_error"}}

✅ 解決方法

1. リクエスト間にdelayを追加

2. バックオフ処理の実装

import time from requests.adapters import HTTPAdapter from urllib3.util.retry import Retry def call_api_with_retry(url, headers, payload, max_retries=3): """リトライ機能付きのAPI呼び出し""" session = requests.Session() retries = Retry( total=max_retries, backoff_factor=1, status_forcelist=[429, 500, 502, 503, 504] ) session.mount('https://', HTTPAdapter(max_retries=retries)) for attempt in range(max_retries): response = session.post(url, headers=headers, json=payload) if response.status_code == 429: wait_time = 2 ** attempt # 指数バックオフ print(f"レート制限待機: {wait_time}秒") time.sleep(wait_time) continue return response return response # 最終試行の結果を返す

原因:短時間内に大量のリクエストを送信。
解決:リクエスト間に適切な間隔を空け、指数バックオフ処理を実装してください。HolySheep AIなら50ms未満の低レイテンシーで効率的に処理できます。

エラー4:カードJSON形式エラー(422 Unprocessable Entity)

# ❌ エラー例

{"error": {"message": "Invalid JSON format in card data", "type": "validation_error"}}

✅ 解決方法

Cozeから受信したデータを必ずJSON解析する

import json def parse_card_data(raw_data): """Cozeカードデータを安全に解析""" try: # 文字列の場合は辞書に変換 if isinstance(raw_data, str): card_data = json.loads(raw_data) else: card_data = raw_data # 必須フィールドの存在確認 required_fields = ["type", "card"] for field in required_fields: if field not in card_data: # デフォルト値を設定 card_data[field] = None return card_data except json.JSONDecodeError as e: print(f"JSON解析エラー: {e}") return {"type": "text", "content": str(raw_data)}

原因:カードデータのJSON形式が不正です。
解決:Cozeからの生データを必ずjson.loads()で解析し、必須フィールドの存在を確認してください。

まとめ

この記事は完全初心者向けに、CozeカードメッセージをGemini 2.5 Proで処理する方法を解説しました。ポイントをまとめます:

HolySheep AIを選べば、レート¥1=$1、成本削減率达85%、さらにWeChat Pay・Alipay対応で非常に便利です。

私はこの構成で月に数千件のカードメッセージを自動処理していますが、HolySheepの低レイテンシーと安定性に満足しています。

👉 HolySheep AI に登録して無料クレジットを獲得