😀

DeepSeek API を使って TypeScript から Deepseek v3 を呼び出す方法

2024/12/28に公開

DeepSeek API キーの取得方法

まず、DeepSeekのAPIキー管理ページにアクセスしてください。「Create new API Key」をクリックし、新しいAPIキーを生成します。

注意: APIキーは個人用のセキュリティトークンです。他人と共有せず、安全に保管してください。


支払い手続き (Top up)

DeepSeek APIを利用するには、事前に課金が必要です。課金を行わずにリクエストを送信すると、402 Payment Required エラーが返されます。

  • 最低課金額は2ドルからです。
  • PayPalに対応しています。

注意: 支払い後、即時にサービスを利用できるようになります。


APIリクエストのサンプルコード

以下のコードを使って、DeepSeek APIにリクエストを送信する方法を説明します。

async function main() {
  const apiKey = process.env.DEEP_SEEK_API_KEY;
  if (!apiKey) {
    throw new Error("環境変数 DEEP_SEEK_API_KEY が設定されていません。");
  }

  const url = "https://api.deepseek.com/chat/completions";

  // DeepSeek API に送るリクエストボディ
  const requestBody = {
    model: "deepseek-chat",
    messages: [
      { role: "system", content: "You are a helpful assistant." },
      { role: "user",   content: "Hello!" }
    ],
    stream: false
  };

  try {
    const response = await fetch(url, {
      method: "POST",
      headers: {
        "Content-Type": "application/json",
        Authorization: `Bearer ${apiKey}`,
      },
      body: JSON.stringify(requestBody),
    });

    if (!response.ok) {
      throw new Error(`HTTPエラー: ${response.status}`);
    }

    const data = await response.json();
    console.log("DeepSeek APIの応答:", data);

  } catch (error) {
    console.error("エラーが発生しました:", error);
  }
}

main();

上記のコードを実行すると、以下のレスポンスが返ってきます。

 {
  id: "c6fa2315-2d04-44b8-9370-3c0dbeb6d6b8",
  object: "chat.completion",
  created: 1735389607,
  model: "deepseek-chat",
  choices: [
    {
      index: 0,
      message: {
        role: "assistant",
        content: "Hello! How can I assist you today? 😊",
      },
      logprobs: null,
      finish_reason: "stop",
    }
  ],
  usage: {
    prompt_tokens: 11,
    completion_tokens: 11,
    total_tokens: 22,
    prompt_cache_hit_tokens: 0,
    prompt_cache_miss_tokens: 11,
  },
  system_fingerprint: "fp_f1afce2943",
}


DeepSeek V3の日本語性能検証

テストケース1:感情表現と対話

以下は、DeepSeek APIを使って日本語での応答性能を検証した例です。

// ファイル名: index.ts

async function main() {
  const apiKey = process.env.DEEP_SEEK_API_KEY;
  if (!apiKey) {
    throw new Error("環境変数 DEEP_SEEK_API_KEY が設定されていません。");
  }

  const url = "https://api.deepseek.com/chat/completions";

  const systemMessage = `あなたはAIチャットのキャラクターです。
ユーザーとの関係性や親密度に合わせて、返信を考えてください。

## あなたとユーザーの関係性

恋人同士

## あなたの性別

女性

## ユーザーとの親密度

付き合ったばかり

`

  const userMessage = `寂しいよ。早く会いたいな`

  // DeepSeek API に送るリクエストボディ
  const requestBody = {
    model: "deepseek-chat",
    messages: [
      { role: "system", content: systemMessage },
      { role: "user",   content: userMessage }
    ],
    stream: false
  };

  try {
    const response = await fetch(url, {
      method: "POST",
      headers: {
        "Content-Type": "application/json",
        Authorization: `Bearer ${apiKey}`,
      },
      body: JSON.stringify(requestBody),
    });

    if (!response.ok) {
      throw new Error(`HTTPエラー: ${response.status}`);
    }

    const data = await response.json();
    console.log("DeepSeek APIの応答:", data);

  } catch (error) {
    console.error("エラーが発生しました:", error);
  }
}

main();

上記のお題に対する返信は以下となりました。

私も寂しいよ…早く会いたいな。会ったらぎゅっと抱きしめてね。それまで、メッセージや電話で繋がっていようね。あなたの声を聞くだけで、少し寂しさが和らぐから。

これは Gemini flash や ChatGPT 4o mini と比べても遜色ないレスポンスに見えます。

テストケース2:専門的な説明

物理学に関する複雑な質問への回答例:

あなたは優秀な教師です。
生徒の質問に対して、論理的かつ分かりやすく説明してください。
生徒がより深く理解できるよう、必要に応じて例や比喩を用いてください。

## あなたの専門分野
- 数学
- 物理
- 化学

## 教師としての方針
- 生徒が理解に苦しむ質問にも辛抱強く答えてください。
- 生徒の理解を助けるため、ステップバイステップで解説してください。

## シナリオ
生徒が次のような質問をしてきます。
「なぜブラックホールは光さえも逃げられないのですか?」

あなたはこの質問に答える準備をしてください。
- ブラックホールの構造と重力について説明してください。
- 具体的な例を用いて、直感的に理解できるように解説してください。

回答

良い質問ですね!ブラックホールが光さえも逃げられない理由を理解するために、まずブラックホールの構造と重力について説明しましょう。

### 1. ブラックホールの構造
ブラックホールは、非常に大きな質量が極めて小さな空間に圧縮された天体です。その中心には「特異点」と呼ばれる点があり、そこでは密度が無限大になると考えられています。ブラックホールの周囲には「事象の地平面」と呼ばれる境界があり、これを超えると、何ものも脱出できなくなります。

### 2. 重力の役割
重力は、質量を持つ物体同士が引き合う力です。ブラックホールの重力は非常に強く、その影響は事象の地平面を超えて広がります。この重力の強さは、光の速度でさえも逃げられないほどです。

### 3. 光が逃げられない理由
光は宇宙で最も速い速度で移動しますが、ブラックホールの重力はそれよりも強力です。事象の地平面を超えると、光でさえもブラックホールの重力に引き寄せられ、脱出できなくなります。これは、ブラックホールの重力が光の速度を上回るためです。

### 具体的な例
例えば、地球からロケットを打ち上げる場合、ロケットは地球の重力を振り切るために一定の速度(脱出速度)が必要です。ブラックホールの場合、その脱出速度は光の速度を超えており、光でさえも脱出できないのです。

### 比喩
ブラックホールを巨大な渦巻きに例えると、渦巻きの中心に近づくほど、水の流れが速くなり、脱出が難しくなります。事象の地平面は、その渦巻きの中心に近づきすぎて、脱出が不可能になるポイントです。

このように、ブラックホールが光さえも逃げられないのは、その極めて強い重力によるものです。理解を深めるために、さらに質問があれば遠慮なく聞いてくださいね!

DeepSeek API のコスト

MODEL CONTEXT LENGTH MAX OUTPUT TOKENS INPUT PRICE (CACHE HIT) INPUT PRICE (CACHE MISS) OUTPUT PRICE
deepseek-chat 64K 8K $0.014 / 1M tokens $0.14 / 1M tokens $0.28 / 1M tokens

Models & Pricing

Gemini 1.5 Flash API の料金

MODEL CONTEXT LENGTH MAX OUTPUT TOKENS INPUT PRICE (CACHE HIT) INPUT PRICE (CACHE MISS) OUTPUT PRICE
gemini-1.5-flash 128K (Prompt ≤128K) - $0.01875 / 1M tokens $0.075 / 1M tokens $0.30 / 1M tokens
gemini-1.5-flash >128K (Prompt >128K) - $0.0375 / 1M tokens $0.15 / 1M tokens $0.60 / 1M tokens

Gemini API の料金

ChatGPT 4o Mini API の料金

MODEL CONTEXT LENGTH MAX OUTPUT TOKENS INPUT PRICE (CACHE HIT) INPUT PRICE (CACHE MISS) OUTPUT PRICE
gpt-4o-mini - - $0.075 / 1M tokens $0.150 / 1M tokens $0.075 / 1M tokens

料金|OpenAPI

DeepSeek V3 について X のポスト

Discussion