私が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)をご紹介します。以下の理由で初心者にもおすすめです:
- 圧倒的成本効率:レートが¥1=$1(公式サイト比¥7.3=$1より85%節約)
- 高速応答:レイテンシーが50ms未満
- 支払い方法:WeChat Pay・Alipay対応で中国人ユーザーに優しい
- 無料クレジット:登録するだけで無料クレジット付与
- 2026年最新価格表:GPT-4.1 $8/MTok、Claude Sonnet 4.5 $15/MTok、Gemini 2.5 Flash $2.50/MTok、DeepSeek V3.2 $0.42/MTok
Step 1:HolySheep AIでAPIキーを取得
まずAPIを呼び出すための認証キーを取得しましょう。
- HolySheep AIに登録(無料)
- ダッシュボードの「API Keys」メニューをクリック
- 「Create New Key」ボタンをクリック
- キーに名前をつけて「Generate」
💡スクリーンショットヒント:生成されたキーは「sk-...」で始まる文字列です。このキーをメモ帳にコピーしておきましょう。一度画面を閉じると再表示できないので注意!
Step 2:CozeでカードメッセージBotを作成
次にCozeエディターでカードメッセージを出力するBotを設定します。
- Cozeにログインし「创建Bot」をクリック
- Bot名を入力(例:「Gemini画像分析Bot」)
- 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:実際に動かしてみる
設定が完了したら、ワークフローをテストしましょう。
- Cozeエディター右上の「試す」ボタンをクリック
- テストメッセージでカード付きメッセージを投稿
- Geminiからの分析結果がカード形式で表示されるか確認
💡スクリーンショットヒント:テスト実行中にコンソールログを確認すると、API呼び出しの詳細が記録されます。HolySheepのダッシュボード에서도使用量の確認ができます。
Step 7:本番環境へのデプロイ
テストが完了したら、Botをパブリッシュして本番環境で利用開始します。
- Cozeエディターの「发布」ボタンをクリック
- 公開先のプラットフォームを選択(Discord、Slack、LINEなど)
- 認証情報を設定して「确认发布」
よくあるエラーと対処法
私が実際に遭遇したエラーとその解決策をまとめます。
エラー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のAPIキーを取得(登録で無料クレジット付き)
- CozeでカードメッセージBotを作成
- HolySheepのbase_url「https://api.holysheep.ai/v1」を使用
- PythonコードでGemini 2.5 Pro APIを呼び出し
- エラー対処法を事前に把握しておく
HolySheep AIを選べば、レート¥1=$1、成本削減率达85%、さらにWeChat Pay・Alipay対応で非常に便利です。
私はこの構成で月に数千件のカードメッセージを自動処理していますが、HolySheepの低レイテンシーと安定性に満足しています。
👉 HolySheep AI に登録して無料クレジットを獲得