モデル比較

Fugu Ultra v2 vs Grok 4.7

料金・コンテキスト長・実際の回答で比較(2026年9月時点)

Fugu Ultra v2(Sakana AI)とGrok 4.7(xAI)を、FastMetalのゲートウェイで実際に呼び出せる条件で比較します。どちらも同じOpenAI互換エンドポイントとAPIキーから利用でき、切り替えは model の文字列を変えるだけです。

スペックと料金

Fugu Ultra v2x-ai logoGrok 4.7
提供元Sakana AIxAI
入力(100万トークンあたり)¥893.5¥276.2
出力(100万トークンあたり)¥5,361¥828.6
想定コスト(入力1,000・出力500トークン × 1,000回)¥3,574¥691
コンテキスト長1,000,000 トークン500,000 トークン
リリース日2026/9/112026/9/21
入力モダリティtext, image, filetext, image, file
生成速度 (p50)
アリーナ 総合圏外圏外
アリーナ 日本語圏外圏外
アリーナ コーディング圏外圏外

料金はFastMetalの円建て単価(税別)。アリーナ順位は公開リーダーボードの最新取得時点の値です。

どちらを選ぶべきか

  • 料金重視ならGrok 4.7。出力100万トークンあたり¥828.6で、Fugu Ultra v2より85%安くなります。
  • 長い文書を扱うならFugu Ultra v2。コンテキスト長は1,000,000トークンで、Grok 4.7の500,000トークンより広くとれます。
  • 迷ったら両方を同じキーで試せます。model の文字列を変えるだけで切り替わり、料金はそれぞれの単価で従量課金されます。

同じプロンプトへの実際の回答

FastMetalのゲートウェイが返した回答をそのまま並べています。ベンチマークの数字ではなく、実際の出力です。

このエラーをデバッグして

以下のエラーがPythonアプリケーションで発生しています。原因を特定して修正してください。 Traceback (most recent call last): File "app.py", line 23, in get_user_orders total = sum(order["price"] * order["quantity"] for order in orders) TypeError: unsupport…

Fugu Ultra v2

## 原因 `order["price"]` が **数値ではなく文字列 (`str`)** で返ってきていることが原因です。 Python では `"1200" * 3` は掛け算ではなく「文字列を3回繰り返す」という意味になります。今回は `quantity` が `int` なので一見成立しそうですが、エラーメッセージが示す通り `str * int` の組み合わせで型が噛み合わず `TypeError` になっています。 文字列になる典型的な理由は次の通りです。 1. **カラム型が文字列** — `price` が `VARCHAR`/`TEXT` で定義されている(`"1,200"` や `"$12.00"` のような値が混ざっているケースも) 2. **DBドライバの型変換** — MySQL の `DECIMAL` を文字列で返す設定(`raw=True` など)、SQLite に文字列のまま INSERT されている 3. **アプリ層で文字列化** — フォーム/JSON の入力を変換せずにそのまま INSERT している まず実際の型を確認すると切り分けができます。 ```python rows = db.query("SELECT price, quantity FROM orders WHERE user_id = %s", user_id) for r in rows[:5]: print(repr(r["price"]), type(r["price"]), repr(r["quantity"]), type(r["quanti…
応答時間 97.1秒出力 6218 トークン

Grok 4.7

原因は、`order["price"]` が文字列(`str`)のまま返ってきていることです。`quantity` は整数なので、`str * int` になって `TypeError` になっています。 DBドライバやカラム型(`DECIMAL` / `NUMERIC` / `VARCHAR` など)によっては、数値のはずの値が文字列で返ることがあります。 修正例: ```python def get_user_orders(user_id): orders = db.query( "SELECT price, quantity FROM orders WHERE user_id = %s", user_id, ) total = sum( float(order["price"]) * int(order["quantity"]) for order in orders ) return {"user_id": user_id, "total": total, "orders": orders} ``` 金額を正確に扱いたい場合は `float` ではなく `Decimal` を使ってください。 ```python from decimal import Decimal def get_user_orders(user_id): orders = db.query( "SELECT price, quantity FROM orders…
応答時間 9.1秒出力 621 トークン

コードレビュー

以下のTypeScript関数をレビューして、可読性・パフォーマンス・ベストプラクティスの観点から改善点を提案してください。 async function fetchAllUsers(page: number = 1): Promise<any[]> { let allUsers: any[] = []; let hasMore = true; let currentPage = page; while (hasMo…

Fugu Ultra v2

# コードレビュー: `fetchAllUsers` ロジックの意図は明確で、`async/await` による素直な実装になっています。特に **終了判定にフィルタ後ではなく API が返した生の `data.users.length` を使っている点は正しい**(フィルタ後の件数で判定すると、削除済みユーザーが多いページで早期終了するバグになります)。また `push` をループで回しているため、`push(...array)` によるスタックオーバーフローも回避できています。 一方で、**型安全性・HTTP エラー処理・ページネーションの堅牢性**に重要な改善余地があります。以下、重要度順にまとめます。 --- ## 指摘事項サマリ | # | 重要度 | 分類 | 内容 | |---|---|---|---| | 1 | 🔴 高 | バグ | `response.ok` を確認していない(4xx/5xx を正常系として処理) | | 2 | 🔴 高 | バグ | 無限ループのリスク(終了条件が API の挙動に全依存) | | 3 | 🔴 高 | 型安全 | `any[]` が呼び出し側全体に伝播 | | 4 | 🟠 中 | 堅牢性 | レスポンス形状のランタイム検証がない | | 5 | 🟠 中 | 堅牢性 | キャンセル(`AbortSignal`)非対応 | | 6 | 🟠 中 | 保守性 | マジックナンバー `100` の重複定義 | | 7 | 🟠 中 | 保守性 | マジック文字列 `"deleted"` | | 8 | 🟠 中…
応答時間 240.2秒出力 17159 トークン

Grok 4.7

この関数は「ページングしながらユーザーを集め、削除済みを除外して整形する」意図は明確ですが、型安全性・失敗時の挙動・終了条件に改善余地があります。 ## 主な問題 **型と契約** - `any` のため、API の形が変わってもコンパイル時に気づけません。 - 戻り値も `any[]` なので、呼び出し側がフィールド名を間違えやすいです。 **エラー処理がない** - `fetch` のネットワーク失敗、`!response.ok`(4xx/5xx)、不正な JSON がすべて未処理です。 - `data.users` が無いと `data.users.length` で例外になります。 **無限ループの可能性** - 「100件未満なら終了」だけだと、API が常に 100 件返す不具合や、ページが進まない場合に止まりません。 - ページ途中でユーザーが増減すると、欠落や重複もあり得ます。可能なら `total` / `hasNext` / cursor を使った方が安全です。 **可読性** - `data.users[i]` の繰り返し、index 付き `for`、`"deleted"` と `100` のマジック値は意図が読み取りにくいです。 - `page` を受け取ると「全件」ではなく「そのページ以降」になります。関数名と挙動がずれています。 **パフォーマンス** - ページ取得自体は依存関係があるので逐次 `await` で問題ありません。 - ボトルネックはループ内の `push` ではなく、全件をメモリに溜めることです。件数が多いなら asy…
応答時間 25.1秒出力 1692 トークン

ビジネスメール作成

取引先の田中部長に、納品予定の製品に不具合が見つかり、納期を1週間延期する必要がある旨を伝えるビジネスメールを作成してください。 条件: - 原因は品質検査で軽微な不具合が発見されたため - 代替案として暫定版を先に納品することも可能 - 改めてお詫びの訪問をしたい - 日本のビジネスマナーに沿った丁寧な文面にすること

Fugu Ultra v2

以下が最終版です。Agent 1 の構成の丁寧さを活かしつつ、Agent 2 が指摘した「事実として確認されていない安全性への言及」は削除し、あわせて敬称・件名・お願い形の表現を整えました。 --- ## メール文面(完成版) **件名:【お詫び】「【製品名】」納品日変更のお願い(株式会社【自社名】・【氏名】)** 株式会社【取引先名】 【部署名】 部長 田中 様 いつも大変お世話になっております。 株式会社【自社名】【部署名】の【氏名】でございます。 このたびは、【○月○日】に納品を予定しておりました「【製品名】」につきまして、 誠に申し上げにくいご連絡となり、まずは深くお詫び申し上げます。 出荷前の最終品質検査におきまして、製品の一部に軽微な不具合が確認されました。 現在、原因の特定と是正処置を進めておりますが、万全の品質でお納めするためには 是正後の再検査を含め、当初の予定より一週間程度のお時間を頂戴する必要がございます。 誠に勝手なお願いではございますが、納品日を下記のとおり変更させていただきたく、 何卒ご容赦賜りますようお願い申し上げます。  ■ 当初の納品予定日:【○月○日(○)】  ■ 変更後の納品予定日:【○月○日(○)】  ■ 変更理由:品質検査で確認された不具合の是正および再検査のため なお、貴社の業務スケジュールへの影響を最小限に抑えるため、ご希望がございましたら、 現時点で動作確認の完了している**暫定版を当初の予定日までに先行して納品**することも可能でございます。 暫定版の仕様およびご利用上の制約につきましては、あらためて詳しくご…
応答時間 113.6秒出力 6144 トークン

Grok 4.7

件名:納品日程変更のお願い(品質確認に伴う1週間の延期) 株式会社〇〇 田中部長 いつもお世話になっております。 株式会社△△の□□でございます。 このたび、納品予定の製品につきまして、品質検査の過程で軽微な不具合が確認されました。 万全の状態でお届けするため、納期を1週間延期させていただきたく、ご連絡申し上げます。 ご期待に沿えず、多大なるご迷惑をおかけしますことを、心よりお詫び申し上げます。 なお、業務への影響を最小限に抑えるため、暫定版を先行して納品することも可能です。 ご希望がございましたら、至急手配いたしますので、ご指示をいただけますと幸いです。 また、改めてお詫びに伺いたく存じます。 ご都合のよろしい日時をお知らせいただけましたら、調整のうえお伺いいたします。 何卒ご理解を賜りますようお願い申し上げます。 今後とも変わらぬお引き立てのほど、よろしくお願いいたします。 □□ 株式会社△△ 電話:〇〇-〇〇〇〇-〇〇〇〇 メール:〇〇@example.com
応答時間 6.5秒出力 369 トークン

他のプロンプトでも比較する →

よくある質問

Fugu Ultra v2とGrok 4.7、料金はどちらが安いですか?
出力100万トークンあたりFugu Ultra v2は¥5,361、Grok 4.7は¥828.6で、Grok 4.7の方が安くなります(FastMetalの円建て単価・税別)。
Fugu Ultra v2とGrok 4.7のコンテキスト長の違いは?
Fugu Ultra v2は1,000,000トークン、Grok 4.7は500,000トークンです。
Fugu Ultra v2とGrok 4.7を同じAPIキーで使えますか?
はい。FastMetalのOpenAI互換エンドポイントで、model に "fugu-ultra-v2" または "grok-4.7" を指定するだけで切り替えられます。料金はそれぞれの単価で、同じ前払い残高から従量課金されます。

どちらも同じAPIキーで試せます

アカウントを作成してクレジットを追加すれば、Fugu Ultra v2とGrok 4.7をブラウザのチャットとAPIの両方から呼び出せます。月額料金はありません。

Fugu Ultra v2の他の比較

Grok 4.7の他の比較