Skip to content

原文(日本語に翻訳)

SDKのモデル情報に supportsEffortsupportedEffortLevelssupportsAdaptiveThinking フィールドが追加され、コンシューマーがモデルの機能を検出できるようになりました。

原文(英語)

SDK model info now includes supportsEffort, supportedEffortLevels, and supportsAdaptiveThinking fields so consumers can discover model capabilities.

概要

Claude Code SDKのモデル情報オブジェクトに、モデルの機能を事前に確認するための新しいフィールドが追加されました。supportsEffort でエフォートレベル設定のサポート確認、supportedEffortLevels で利用可能なレベルの一覧取得、supportsAdaptiveThinking でアダプティブシンキングのサポート確認ができます。これにより、SDKコンシューマーは実行前にモデルの能力に応じた適切な設定ができるようになります。

基本的な使い方

SDKでモデル情報を取得し、機能フィールドを確認します。

typescript
import { ClaudeCode } from '@anthropic-ai/claude-code';

const sdk = new ClaudeCode();

// モデル情報の取得
const modelInfo = await sdk.getModelInfo('claude-opus-4-6');

console.log(modelInfo.supportsEffort);           // true/false
console.log(modelInfo.supportedEffortLevels);    // ["low", "medium", "high"] など
console.log(modelInfo.supportsAdaptiveThinking); // true/false

実践例

ユースケース1: モデル機能に応じた動的な設定

モデルの機能を確認してから適切な設定を適用する場合。

typescript
import { ClaudeCode } from '@anthropic-ai/claude-code';

async function createOptimalSession(modelId: string) {
  const sdk = new ClaudeCode();
  const modelInfo = await sdk.getModelInfo(modelId);

  const sessionConfig: any = {
    model: modelId,
  };

  // エフォートレベルのサポート確認
  if (modelInfo.supportsEffort && modelInfo.supportedEffortLevels.includes('high')) {
    sessionConfig.effort = 'high'; // 複雑なタスクには高エフォートを使用
    console.log(`エフォートレベル 'high' を設定`);
  }

  // アダプティブシンキングのサポート確認
  if (modelInfo.supportsAdaptiveThinking) {
    sessionConfig.adaptiveThinking = true;
    console.log('アダプティブシンキングを有効化');
  }

  return sdk.createSession(sessionConfig);
}

// 使用例
const session = await createOptimalSession('claude-opus-4-6');

ユースケース2: 複数モデルの機能比較

利用可能なモデルの機能を比較して最適なモデルを選択する場合。

typescript
import { ClaudeCode } from '@anthropic-ai/claude-code';

async function selectBestModel(
  requirements: { needsAdaptiveThinking: boolean; minEffortLevel?: string }
) {
  const sdk = new ClaudeCode();
  const availableModels = ['claude-opus-4-6', 'claude-sonnet-4-6', 'claude-haiku-4-6'];

  const modelCapabilities = await Promise.all(
    availableModels.map(async (modelId) => ({
      modelId,
      info: await sdk.getModelInfo(modelId),
    }))
  );

  // 要件に合うモデルをフィルタリング
  const suitableModels = modelCapabilities.filter(({ info }) => {
    if (requirements.needsAdaptiveThinking && !info.supportsAdaptiveThinking) {
      return false;
    }
    if (requirements.minEffortLevel && !info.supportedEffortLevels?.includes(requirements.minEffortLevel)) {
      return false;
    }
    return true;
  });

  if (suitableModels.length === 0) {
    throw new Error('要件に合うモデルが見つかりません');
  }

  console.log('適切なモデル:');
  suitableModels.forEach(({ modelId, info }) => {
    console.log(`- ${modelId}`);
    console.log(`  supportsEffort: ${info.supportsEffort}`);
    console.log(`  supportedEffortLevels: ${info.supportedEffortLevels?.join(', ')}`);
    console.log(`  supportsAdaptiveThinking: ${info.supportsAdaptiveThinking}`);
  });

  return suitableModels[0].modelId;
}

// 使用例
const bestModel = await selectBestModel({
  needsAdaptiveThinking: true,
  minEffortLevel: 'high',
});
console.log(`選択されたモデル: ${bestModel}`);

ユースケース3: 機能に基づいたUI要素の制御

SDKコンシューマーがUIを動的に表示する場合。

typescript
import { ClaudeCode } from '@anthropic-ai/claude-code';

async function buildModelSettingsUI(modelId: string): Promise<ModelSettingsUI> {
  const sdk = new ClaudeCode();
  const modelInfo = await sdk.getModelInfo(modelId);

  const uiConfig = {
    showEffortSelector: modelInfo.supportsEffort,
    availableEffortLevels: modelInfo.supportedEffortLevels ?? [],
    showAdaptiveThinkingToggle: modelInfo.supportsAdaptiveThinking,
  };

  console.log('UI設定:');
  console.log(`エフォートセレクター表示: ${uiConfig.showEffortSelector}`);
  if (uiConfig.showEffortSelector) {
    console.log(`利用可能なレベル: ${uiConfig.availableEffortLevels.join(', ')}`);
  }
  console.log(`アダプティブシンキングトグル表示: ${uiConfig.showAdaptiveThinkingToggle}`);

  return uiConfig;
}

注意点

  • これらのフィールドはClaude Code SDKを通じて利用可能です。Anthropic APIの直接呼び出しとは異なります。
  • supportedEffortLevels の値はモデルによって異なります。事前に確認してから使用してください。
  • モデルの機能は将来的に変更される場合があります。定期的に機能を確認することを推奨します。
  • supportsAdaptiveThinking はモデルが拡張思考(Extended Thinking)に対応しているかを示します。

関連情報