Databricks環境でのClaude 3.7 Sonnet実践ガイド

# はじめに
2025年3月、Databricksは[Anthropicとのパートナーシップ](https://www.databricks.com/jp/blog/anthropic-claude-37-sonnet-now-natively-available-databricks)を発表し、最先端の大規模言語モデル「Claude 3.7 Sonnet」をMosaic AI基盤モデルサービング（以下、基盤モデルAPI）でサポート開始しました。Claude 3.7 Sonnetは高度な推論（Reasoning）のための拡張思考モードを備え、複雑な計画立案やエージェント機能に優れています。さらにコーディング分野においても業界トップクラスの性能を発揮する最新モデルです。
本記事では、Claude 3.7 Sonnetの主要な特徴と能力、Databricksでの提供形態とセキュリティ、OpenAI互換APIやAI関数を使った実装例、拡張思考モードの活用方法、そして料金体系までを体系的に解説します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/284925/f83e8376-7b2a-400f-a19b-0a5824fb06a4.png)

# Claude 3.7 Sonnetの概要と特徴
最初に、Claude 3.7 Sonnetの概要と特徴について記載します。

## ハイブリッド推論モデル
Claude 3.7 Sonnetの最大の特徴は、「ハイブリッド推論」能力を備えた初のLLMである点です。通常のLLMとしてユーザーの入力に対し即座に回答を返すこともできますが、必要に応じて段階的に「考える」ステップ（思考プロセス）を内部で実行し、より深い推論を行うことができます。この統合的なアプローチにより、迅速な応答と綿密な熟考を単一のモデルで両立しており、透明性と信頼性の高いAIエージェントを構築できる点が従来モデルにない画期的な利点です。

ハイブリッド推論の効果的な活用シーンの例は以下の通りです。

- 複雑な数学的問題や論理パズルの解決
- 多段階の意思決定が必要なビジネス分析
- 複数ドキュメントからの情報統合と矛盾検出
- プログラムのバグ発見やアルゴリズム最適化
- 複雑なロジックのプログラムの別言語への変換

## 大規模なコンテキストと長大な出力
Claude 3.7 Sonnetは最大約200,000トークンにも及ぶ非常に大きなコンテキストウィンドウをサポートしており、長いドキュメントや大量のデータを一度に入力して解析できます。また、最大64,000トークンの出力生成にも対応しており、従来モデルでは困難だった長大な回答やコードの一括生成が可能になっています。例えば、数百ページに及ぶ文書の要約や、大規模なコードベース全体の改修提案も単一プロンプトで扱えるようになります。

:::note warn
Databricksの基盤モデルAPIのClaude 3.7 Sonnetは、2025年5月時点で、Anthropic APIのベータ機能である128Kトークン出力をサポートしていない点に注意が必要です。
:::

## 高度なコーディング能力
Claude 3.7 Sonnetはソフトウェア開発やコーディングにおいて最先端の性能を誇ります。実世界の複雑なプログラミング課題に強く、コードの生成からバグ修正、大規模リファクタリングまで開発ライフサイクル全体を支援できる水準です。Anthropic社および第三者の評価によれば、Claude 3.7 Sonnetはコードベースの理解や高度なエージェント的コーディングタスク（ツールを使った複雑なワークフローの自動化など）で他のモデルを凌駕しており、実用的なソフトウェア開発支援AIとして最先端であることが報告されています。これにより、エンタープライズ環境でのコード自動生成やコードレビュー、テスト生成などにおいて優れた効果を発揮します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/284925/2e3c06e3-d747-4b98-8761-2a8fae99611a.png)
*出典：[Claude 3.7 Sonnet and Claude Code](https://www.anthropic.com/news/claude-3-7-sonnet)*

## 長文理解と多段論理推論
自然言語の長文や複雑な指示の理解にも優れており、マルチターンの対話や複数ステップにまたがる推論・計画を要するタスクで最先端の性能を示しています。大規模な知識ベースや文書を読み込ませて質疑応答させるようなケースでも、文脈を保持したまま深い理解に基づく回答が期待できます。特にエージェント的な推論・プランニング（与えられたゴールに向けて自律的にサブタスクを考え実行する能力）に強く、TAUベンチマーク（ユーザーとツールの相互作用を伴う実世界タスクのベンチマーク）でも最先端のスコアを達成しています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/284925/013e6162-580e-4ede-9e5b-d81b6be094d8.png)
*出典：[Claude 3.7 Sonnet and Claude Code](https://www.anthropic.com/news/claude-3-7-sonnet)*

## 日本語処理の特徴（2025年5月時点）
Claude 3.7 Sonnet は多言語対応が強化されており、日本語でも高水準の生成・理解性能を発揮します。公式ドキュメントでは「英語以外の主要言語でも安定した品質を維持する」と記載されていますが、社内検証やコミュニティの検証記事では、長文文脈の保持・敬語表現の自然さ・技術用語の解釈精度が向上したとの報告が多数あります。特に、次のような企業ユースケースに有用でしょう。

* 技術仕様書や業務マニュアルの要旨抽出・翻訳
* 自然な敬語を含むFAQボット
* 仕様レビューやコードコメントの日本語自動生成

## Claudeの従来モデルとの比較
Claude 3.7 Sonnetは前世代のClaudeモデル（例：Claude 2、Claude 3.5など）と比べて大幅に機能強化されています。前述のようにコンテキスト長が飛躍的に拡大し（Claude 2は100Kトークン程度だったのに対し本モデルは200K級）、扱える情報量が増えました。また推論ステップの可視化・制御という新機能を備えた点はClaudeシリーズで初めてであり、旧モデルではブラックボックスだった思考過程を透明化できるようになっています。さらにコーディング性能の向上（特に実務的なプログラミングタスクへの強さ）や、長時間・複数ターンの対話での安定性向上など、細かなモデルアーキテクチャ・チューニングの改良により全体的な性能も底上げされています。なお、Claude 3.5には高速・低コスト版の「Haiku」と高性能版「Sonnet」が存在しましたが、Claude 3.7では現時点で単一のSonnetモデルが提供されています。

### モデル比較表
| 機能 | Claude 3.7 Sonnet | Claude 3.5 Sonnet |
|------|-------------------|-------------------|
| 説明 | 最も知的なモデル | 以前の最も知的なモデル
| コンテキストウィンドウ | 200K | 200K |
| 最大出力 | 64,000トークン | 8,192トークン |
| 拡張思考 | はい | いいえ |
| 多言語対応 | はい | はい |
| 学習データのカットオフ | 2024年11月 | 2024年4月

出典：[全モデル概要 - Anthropic](https://docs.anthropic.com/ja/docs/about-claude/models/all-models)

# Databricksでの提供形態とセキュリティ
Claude 3.7 Sonnetはクローズドソースの商用モデルで、Anthropic社からはAPI経由のサービスとして提供されています。Databricksでは、Claude 3.7 SonnetをMosaic AIの基盤モデルAPIとして提供しており、ユーザーはDatabricksのAPIを通じて簡単にアクセスできます。

基盤モデルAPIのClaude 3.7 Sonnetエンドポイントは、DatabricksによってAWSのセキュリティ境界内でホストされます。お客様データの機密性は厳格に保護され、Databricksはこれらのデータを基盤モデルの学習に使用せず、他の顧客向けのサービス改善にも流用しません。また、データは転送中に標準的な暗号化技術で保護されます。

基盤モデルAPIを含むDatabricks AIのセキュリティとコンプライアンスの詳細については、[Databricks AI の信頼性](https://docs.databricks.com/aws/ja/databricks-ai/databricks-ai-trust)のドキュメントをご参照ください。

# Claude 3.7 Sonnetの料金体系
続いて、料金体系です。

## Databricksにおける利用料金
Databricksの基盤モデルAPIのClaude 3.7 Sonnetは現在、Pay-Per-Token（トークン従量課金）の方式でのみ利用可能です。Azure Databricks、Databricns on AWS、Databricks on Google Cloudで共通の料金となっています。

- 入力トークン: $3.00/百万トークン
- 出力トークン: $15.00/百万トークン

請求書には「Anthropic Model Serving」というSKUとして表示されます。詳細は[Mosaic AI 基盤モデルサービング | Databricks](https://www.databricks.com/jp/product/pricing/foundation-model-serving)をご覧ください。

## 各提供元の料金比較
Claude 3.7 Sonnetは複数のプラットフォームで提供されていますが、基本的な料金体系はどの提供元でも共通しています。以下の表は主要プラットフォームにおける料金比較です。

| 提供元 | 入力トークン単価 (USD/百万) | 出力トークン単価 (USD/百万) |
| --- | --- | --- |
| Databricks | $3.00 | $15.00 | Databricksのデータ基盤と統合、Azure環境での唯一の選択肢 |
| Anthropic API | $3.00 | $15.00 | バッチ処理で割引あり |
| Amazon Bedrock | $3.00 | $15.00 | AWS環境での利用向け |
| Google Vertex AI | $3.00 | $15.00 | Google Cloud環境での利用向け |

各プラットフォームはそれぞれ特徴があり、既存のデータ基盤やワークフローに合わせて選択するのが理想的です。Databricksユーザーにとっては、既存のデータパイプラインやDelta Lakeとの統合が容易であるため、Databricks経由での利用が最も効率的でしょう。特筆すべき点として、Microsoft Azure環境においてClaude 3.7 Sonnetを利用できるサービスは、現時点ではAzure Databricksが唯一の選択肢となっています。

# Databricksでの利用方法
DatabricksはClaude 3.7 Sonnetを基盤モデルAPIとして提供しているため、専用インフラの準備やAnthropicのAPIキー取得等は不要で、Databricksのワークスペース上ですぐに使い始めることができます。以下に、Databricksにおける具体的な利用手段をまとめます。

## サービングエンドポイントとPlayground
Databricksのワークスペースには、あらかじめClaude 3.7 Sonnet用の基盤モデルAPIエンドポイントが用意されています。エンドポイント名は `databricks-claude-3-7-sonnet` です。サービングエンドポイントの一覧ページにありますので「使用」をクリックすると、対話的なチャットUIであるAI Playgroundが起動し、ブラウザ上でClaude 3.7 Sonnetに対するプロンプト入力・応答確認ができます。

![サービングエンドポイントでClaude 3.7 Sonnetを使用](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/284925/fa12b953-da81-4518-abed-1e95c23fd96b.png)

Playground画面ではcURLコマンドやPythonコードのサンプルをワンクリックで表示できるため、アプリケーションへの統合方法も容易に把握できます。

![AI Playgroundでのプロンプト入力と応答画面](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/284925/0e112b50-13ab-453f-beb1-cdfb688df20e.png)

## OpenAI互換APIによるプログラムからの呼び出し
Databricksで提供されている基盤モデルAPIは、OpenAI社のAPI互換のRESTインターフェースで利用できます。開発者はDatabricksが発行するPersonal Access Token（またはマシン間OAuthトークン）をAPIキーとして使用し、エンドポイント名をモデル指定にセットすることで、OpenAIのクライアントライブラリ経由で直接Claude 3.7を呼び出せます。

以下にDatabricksノートブックにおけるPythonでの呼び出し例を示します。

```python
import json
import os
from openai import OpenAI

# トークンとワークスペースURLをノートブックコンテキストから取得
DATABRICKS_TOKEN = dbutils.notebook.entry_point.getDbutils().notebook().getContext().apiToken().get()
WORKSPACE_URL = dbutils.notebook.entry_point.getDbutils().notebook().getContext().apiUrl().get()

# OpenAIクライアントの初期化
client = OpenAI(
    api_key=DATABRICKS_TOKEN,
    base_url=f"{WORKSPACE_URL}/serving-endpoints"
)

# DatabricksのClaude 3.7 Sonnetモデルを使用してリクエストを送信
response = client.chat.completions.create(
    model="databricks-claude-3-7-sonnet",
    messages=[{
        "role": "user",
        "content": "Databricksでのデータ分析ベストプラクティスを3つ教えてください。それぞれ一言ずつで、余分な装飾なしで出力してください。"
    }],
    max_tokens=500
)

# 結果を表示
print(response.choices[0].message.content)
```

**実行結果：**
```
1. データを適切にパーティショニングして読み込み効率を最適化する
2. Deltaテーブルを活用してACID準拠のデータ管理を実現する
3. ノートブックでのコード整理とドキュメント化を徹底する
```

Databricks Mosaic AI Gatewayが背後でモデルへのリクエストを仲介し、リクエストと生成されたレスポンスの記録やガードレール（有害発話の遮断など）、個人情報（PII）検出といったいわゆる統制機能も簡単に適用できるため、エンタープライズ用途でも安心して利用できます。

また、Databricksノートブック内で上記のコードをそのまま実行できるため、データ分析や機械学習のワークフローに簡単に組み込むことができます。例えばPySparkデータフレーム処理の結果をLLMに送り、その生成結果を下流の処理に利用するといった連携も可能です。

## SQLからの直接呼び出し（AI Functions）
DatabricksはSQLクエリ内からLLMを呼び出すためのAI関数も提供しています。これにより、構造化データの処理途中でテキスト生成や要約を組み込んだり、SQLだけで非構造データに対する質問応答処理を実行することができます。以下に、SQLからClaude 3.7 Sonnetを呼び出す例を示します。

```sql
%sql
-- サンプルデータを含む一時ビューを作成
CREATE OR REPLACE TEMP VIEW customer_feedback AS
VALUES 
  ('C1001', '配送が予定より2日早く届いて驚きました。商品の品質も素晴らしく、また利用したいと思います。'),
  ('C1002', '注文から3週間経ちますが商品がまだ届きません。問い合わせにも返答がなく非常に困っています。'),
  ('C1003', '商品自体は期待通りでしたが、梱包が少し雑な印象を受けました。それ以外は特に問題ありません。')
AS t(customer_id, feedback_text);

-- 顧客フィードバックの感情分析と要約を行うクエリ
WITH analysis_results AS (
  SELECT 
    customer_id,
    feedback_text,
    ai_query(
      'databricks-claude-3-7-sonnet',
      CONCAT('以下の顧客フィードバックを分析し、感情と要約をJSON形式で返してください。
      必ず {"sentiment": "ポジティブ/ネガティブ/ニュートラルのいずれか", "summary": "要約文"} という形式のJSONのみを返してください: ', feedback_text),
      modelParameters => named_struct(
        'max_tokens', 500
      )
    ) AS json_response
  FROM customer_feedback
)
-- 分析結果を整形して表示
SELECT 
  customer_id,
  feedback_text,
  get_json_object(json_response, '$.sentiment') AS `感情`,
  get_json_object(json_response, '$.summary') AS `要約`
FROM analysis_results;
```

上記のクエリの実行結果例は、以下の通りです。

| customer_id | feedback_text | 感情 | 要約 |
|-------------|---------------|------|------|
| C1001 | 配送が予定より2日早く届いて驚きました。商品の品質も素晴らしく、また利用したいと思います。 | ポジティブ | 配送が予定より早く、商品品質も高く満足しており、リピート意向がある |
| C1002 | 注文から3週間経ちますが商品がまだ届きません。問い合わせにも返答がなく非常に困っています。 | ネガティブ | 注文から3週間経過しても商品が未着で、問い合わせにも返答がなく顧客が困っている状況 |
| C1003 | 商品自体は期待通りでしたが、梱包が少し雑な印象を受けました。それ以外は特に問題ありません。 | ニュートラル | 商品は期待通りだったが、梱包が雑だった印象があるものの、全体的には大きな問題はなかった |

AI関数の大きな利点は、データをDatabricksの環境外に移動させることなく処理できる点です。これによりデータガバナンスを維持したまま、LLM推論を大規模バッチ処理できます。
実用例として、Databricks上のBIダッシュボードにシームレスに統合したり、数百万件のログエントリに対する一括要約や、大量の商品レビュー分析などが可能になります。

# 拡張思考モードについて
Claude 3.7 Sonnetの最大の特徴である「ハイブリッド推論」能力を活用するには、拡張思考モード（Extended Thinking Mode）を有効にする必要があります。このモードを使用すると、モデルはより複雑な問題を段階的に分析し、より深い推論を行った上で回答を生成します。

## Pythonでの実装例
Databricksの基盤モデルAPIを使用してPythonからClaude 3.7 Sonnetの拡張思考モードを利用する例は以下の通りです。リクエストのパラメーターに`"thinking": {"type": "enabled"}`を追加することで拡張思考モードが有効になります。

```python
import json
import os
from openai import OpenAI

# トークンとワークスペースURLをノートブックコンテキストから取得
DATABRICKS_TOKEN = dbutils.notebook.entry_point.getDbutils().notebook().getContext().apiToken().get()
WORKSPACE_URL = dbutils.notebook.entry_point.getDbutils().notebook().getContext().apiUrl().get()

# OpenAIクライアントの初期化
client = OpenAI(
    api_key=DATABRICKS_TOKEN,
    base_url=f"{WORKSPACE_URL}/serving-endpoints"
)

# DatabricksのClaude 3.7 Sonnetモデルを使用してリクエストを送信：拡張思考モードを有効化
response = client.chat.completions.create(
    model="databricks-claude-3-7-sonnet",
    messages=[{
        "role": "user",
        "content": "二次方程式 2x² - 5x - 3 = 0 を解いてください。解だけを簡潔に答えてください。"
    }],
    max_tokens=8000,
    extra_body={
        "thinking": {
            "type": "enabled",
            "budget_tokens": 4000
        }
    }
)

# 結果をJSON形式で整形して表示
print(json.dumps(response.choices[0].message.content, indent=2, ensure_ascii=False))
```

上記のプログラムの実行結果例は以下の通りです。`type`が`reasoning`のテキストが思考の過程で、`type`が`text`のテキストが最終的な回答に当たります。

```json
[
  {
    "type": "reasoning",
    "summary": [
      {
        "type": "summary_text",
        "text": "二次方程式 $2x^2 - 5x - 3 = 0$ を解きます。\n\n二次方程式の解の公式を使います。\n一般的な二次方程式 $ax^2 + bx + c = 0$ の解は\n$x = \\frac{-b \\pm \\sqrt{b^2 - 4ac}}{2a}$ で与えられます。\n\nこの場合、$a = 2$, $b = -5$, $c = -3$ です。\n\n解の公式に代入します。\n$x = \\frac{-(-5) \\pm \\sqrt{(-5)^2 - 4 \\times 2 \\times (-3)}}{2 \\times 2}$\n$= \\frac{5 \\pm \\sqrt{25 + 24}}{4}$\n$= \\frac{5 \\pm \\sqrt{49}}{4}$\n$= \\frac{5 \\pm 7}{4}$\n\n従って、解は\n$x = \\frac{5 + 7}{4} = \\frac{12}{4} = 3$\nまたは\n$x = \\frac{5 - 7}{4} = \\frac{-2}{4} = -\\frac{1}{2}$\n\nつまり、$x = 3$ または $x = -\\frac{1}{2}$ が解です。",
        "signature": "EqoBCkgIAxABGAIiQB7u6dmv8redGXr46ys7Oqo1NvcJonbEcu6PicCQ+yC6haVSXjhU+Sz1gleoagBOlptQU5yNnGGnc1w04zMCOecSDIcQjaj4P9AUsCXOSxoMsBh5AVmWw5ZSTsX9IjD2MPN7cIPJumQu8YS2rVExCY+bphE1G8bhhpVs93fnx+xzKa2qS41Sd+8TwRTg3hIqEItadZTDsEA8WsG9Hg7vWDI="
      }
    ]
  },
  {
    "type": "text",
    "text": "# 二次方程式 2x² - 5x - 3 = 0 の解き方\n\n二次方程式の解の公式を使って解きます。\n\n一般的な二次方程式 ax² + bx + c = 0 の解は次の公式で求められます：\nx = (-b ± √(b² - 4ac)) / 2a\n\nこの方程式では：\n- a = 2\n- b = -5\n- c = -3\n\nこれらの値を公式に代入します：\n\nx = (-(-5) ± √((-5)² - 4×2×(-3))) / (2×2)\nx = (5 ± √(25 + 24)) / 4\nx = (5 ± √49) / 4\nx = (5 ± 7) / 4\n\nこれにより、二つの解が得られます：\n- x₁ = (5 + 7) / 4 = 12 / 4 = 3\n- x₂ = (5 - 7) / 4 = -2 / 4 = -1/2\n\nしたがって、方程式 2x² - 5x - 3 = 0 の解は、**x = 3** または **x = -1/2** です。"
  }
]
```

## SQLでの実装例
:::note warn
**SQLからの拡張思考モードの利用について**

記事執筆時点（2025年5月）では、Databricksの基盤モデルAPIでSQL関数からの拡張思考モード（thinking）はサポートされていません。以下のクエリを実行すると、エラーメッセージが表示されます。

クエリ
```sql
-- 拡張思考モードを利用した複雑な問題解決
SELECT ai_query(
  'databricks-claude-3-7-sonnet',
  '二次方程式 2x² - 5x - 3 = 0 を解いてください。',
  modelParameters => named_struct(
    'max_tokens', 8000,
    'thinking', named_struct(
      'type', 'enabled',
      'budget_tokens', 4000
    )
  )
) AS `二次方程式の解`;
```

エラーメッセージ
```
[AI_FUNCTION_INVALID_MODEL_PARAMETERS.UNSUPPORTED_MODEL_PARAMETER] The provided model parameters ({"max_tokens":8000,"thinking":{"type":"enabled","budget_tokens":4000}}) are invalid in the AI_QUERY function for serving endpoint "databricks-claude-3-7-sonnet". The "thinking" parameter is not supported for the serving endpoint.
```
:::

## 拡張思考モードの考慮事項
拡張思考モードを使用する際には、処理時間とトークン使用量のバランスを考慮する必要があります。通常モードよりも処理時間が長くなり、思考プロセスに使用されるトークンも出力としてカウントされるためAPIコストが増加します。複雑な推論や計算が必要な問題に最適である一方、単純な質問は通常モードで十分だったりします。問題の複雑さに合わせて拡張思考モードを利用するかどうかと、思考トークン数（budget_tokens）を適切に調整することで、精度と効率のバランスを取ることができます。

# まとめ
Databricksで提供されるClaude 3.7 Sonnetは、エンタープライズAIの新たな可能性を開くモデルです。ハイブリッド推論能力により、複雑な数理問題や多段階推論を必要とするタスクでも高い性能を発揮し、大規模なコンテキストウィンドウと拡張思考モードにより従来のLLMを超える能力を実現しています。

Databricksの基盤モデルAPIとしてClaude 3.7 Sonnetを利用する最大の利点は、既存のデータレイクハウスと直接統合できる点です。Databricksのセキュリティ境界内で実行されるため高いデータ保護が確保され、OpenAI互換APIとSQL関数からの呼び出しにより、開発者は最小限の労力で強力なAI機能をデータパイプラインに組み込むことができます。

料金面でも他のプラットフォームと同等レベルであり、Databricksユーザーは外部APIキーや複雑な連携設定なしに、すぐにClaude 3.7 Sonnetを自社データと組み合わせて活用できます。データエンジニアからビジネスアナリストまで、組織全体でAIの力を活用するための基盤として、Databricks上のClaude 3.7 Sonnetは検討する価値のある選択肢といえるでしょう。是非皆様の環境でも試してみてください！