😀
DeepSeek API を使って TypeScript から Deepseek v3 を呼び出す方法
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 |
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 |
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 |
Discussion