27
17

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

PythonでDeepSeek-R1 APIを呼び出す完全ガイド:インストールから成功実行まで

Posted at

一、準備作業

API Keyの取得

  1. まずDeepSeekコンソールにログインし、アカウントがない場合は登録してください。
    deepseek-1.png

  2. 「API Keys」ページで「Create new API key」をクリックして、API Keyを取得します。生成されたキー(例:sk-123456789abc)をコピーして保存してください。忘れたり紛失した場合は、新しいAPI Keyを再作成する必要があります。
    deepseek-2.png

DeepSeek-R1 APIを呼び出す際、Apidogは欠かせないツールです。Apidogは、DeepSeek-R1とDeepSeek-V3 APIの呼び出しをサポートし、直感的なインターフェースと強力な機能を備えています。これにより、API呼び出しが簡単かつ効率的になり、煩雑な設定が不要になります。開発者にとって、Apidogは作業効率を向上させ、開発プロセスを簡素化する最適な選択です。初心者から経験豊富な開発者まで、ApidogはシームレスなAPI管理体験を提供します。

apidog-client-JP-1.png

二、Python呼び出しステップ

1. 環境準備:Pythonのインストール(既にインストール済みの場合はスキップ)

  • コンピュータにPython環境がない場合は、まずPython環境をインストールする必要があります(macOSにはPython3環境が標準でインストールされています)。python.orgからダウンロードしてインストールできます。
  • 最新版(3.8以上推奨)をダウンロード
  • インストール時に必ず Add Python to PATH を選択

2. requestsライブラリのインストール(既にインストール済みの場合はスキップ)

VSCodeまたは他のIDEAツールで新しいプロジェクトフォルダを作成し、ターミナル(トップメニュー:ターミナル → 新しいターミナル)を開いて以下のコマンドを実行します:

pip install requests

# または

pip3 install requests

# または

python3 -m pip install pyopenssl

python3-3.png

コマンドが成功すると、以下のようなメッセージが表示されます:

Successfully installed requests-x.x.x...

python3-4.png

インストールが失敗し、コンピュータにPython環境がある場合、システムに複数のPythonバージョンが存在し、異なる環境で異なるPythonバージョンを使用している可能性があります。そのため、requestsライブラリが特定のバージョンの環境にのみインストールされている可能性があります。

ページの右下でバージョンを切り替えることができます。
python3-5.jpeg

これらのエラーを処理できない場合は、記事の最後のセクションにジャンプしてください。そこでは、より簡単にDeepSeek-R1 APIを呼び出す方法を提供しています。

Kapture1.gif

3. 基本的な呼び出しコード

上記のコマンドが成功した後、プロジェクト内に .py で終わるファイルを新規作成し、例えば deepseek.py ファイルを作成し、以下のコードをコピーして貼り付けます(sk-あなたの密钥 を置き換えることを忘れないでください)。

# deepseek.py 

import requests

# あなたのAPI Keyを記入
API_KEY = "sk-あなたの密钥"  

url = "https://api.deepseek.com/chat/completions"
headers = {
    "Content-Type": "application/json",
    "Authorization": f"Bearer {API_KEY}"
}

data = {
    "model": "deepseek-reasoner",  # R1モデル(deepseek-reasoner)またはV3モデル(deepseek-chat)を指定
    "messages": [
        {"role": "system", "content": "あなたはプロのアシスタントです"},
        {"role": "user", "content": "あなたは誰ですか?"}
    ],
    "stream": False  # ストリーミングをオフにする
}

response = requests.post(url, headers=headers, json=data)

if response.status_code == 200:
    result = response.json()
    print(result['choices'][0]['message']['content'])
else:
    print("リクエストが失敗しました。エラーコード:", response.status_code)

model='deepseek-chat'を指定することでDeepSeek-V3を呼び出すことができます。
model='deepseek-reasoner'を指定することでDeepSeek-R1を呼び出すことができます。

4. コードの実行方法

  • 右上の「▶」ボタンをクリックしてコードを実行
  • コンソールで python3 deepseek.py または python deepseek.py を使用してコードを実行
  • 「右クリックエディタ → Run Python File in Terminal」でコードを実行

python3-6.png

5. 成功した場合の出力

以下のような出力が表示されれば、呼び出しが成功したことを示します。

こんにちは!私はDeepSeek-R1で、深層思考(DeepSeek)社によって開発されたAIアシスタントです。質問や問題解決のお手伝いをすることが得意で、幅広いトピックについて情報提供やサポートを行います。検索、データ分析、アイデア出し、学習支援など、さまざまなタスクに対応できます。どうぞお気軽にご相談ください!

三、コード解析

1. 重要なパラメータの説明

パラメータ 説明
model deepseek-reasonerはR1モデルを示します
messages 会話履歴(複数回の会話をサポート)
stream Trueでストリーミング出力を有効に(長文に適しています)

2. 複数回の会話の例

messages = [
    {"role": "system", "content": "あなたは詩人です"},
    {"role": "user", "content": "春についての詩を書いてください"},
    {"role": "assistant", "content": "春風が頬を撫で、柳の枝が長く..."},
    {"role": "user", "content": "第二段を続けてください"}
]

四、ストリーミングモード

以下のパラメータを変更することで有効にできます:

data["stream"] = True

response = requests.post(url, headers=headers, json=data, stream=True)

for line in response.iter_lines():
    if line:
        decoded_line = line.decode('utf-8')
        print(decoded_line)

完全なコード:

# deepseek.py 

import requests

# あなたのAPI Keyを記入
API_KEY = "sk-あなたのAPI Key"  

url = "https://api.deepseek.com/chat/completions"
headers = {
    "Content-Type": "application/json",
    "Authorization": f"Bearer {API_KEY}"
}

data = {
    "model": "deepseek-chat",  # R1モデル(deepseek-reasoner)またはV3モデル(deepseek-chat)を指定
    "messages": [
        {"role": "system", "content": "あなたはプロのアシスタントです"},
        {"role": "user", "content": "あなたは誰ですか?"}
    ],
    "stream": False  # ストリーミングをオフにする
}

data["stream"] = True

response = requests.post(url, headers=headers, json=data, stream=True)

for line in response.iter_lines():
    if line:
        decoded_line = line.decode('utf-8')
        print(decoded_line)

以下はV3モデル(deepseek-chat)を使用した出力結果です。なぜR1を使わないのか?非常に人気があり、応答がないことが多いからです。

apidog-deepseek.png

五、よくある質問

Q1:V3とR1モデルの違いは?

  • V3:model: "deepseek-chat"
  • R1:model: "deepseek-reasoner"

Q2:401エラーが発生した場合?

  • API Keyが正しく入力されているか確認
  • キーが期限切れでないことを確認

Q3:「No module named 'requests'」が表示された場合?以下を確認:

  • 正しいターミナルでpip install requestsを実行したか(上記参照)
  • VSCodeが正しいPythonインタプリタを使用しているか(上記参照)

Q4:requests.exceptions.JSONDecodeError: Expecting value: line 1 column 1が表示された場合?

うーん、「サーバーが忙しい」と同じ理由で、利用者が多すぎて応答が失敗した可能性があります。

エラーメッセージExpecting value: line 1 column 1 (char 0)は、json()メソッドが有効なJSONデータを受け取ることを期待しているが、実際には空の内容を受け取ったことを示しています。これは、APIがデータを返さなかったか、空の応答ボディを返した可能性があります。

Q5:ストリーミング出力を有効にした後、keep-aliveが表示され続けるのはなぜですか?

うーん、「サーバーが忙しい」と同じ理由で、利用者が多すぎて、長時間接続状態が続いている可能性があります。

六、より簡単なDeepSeek-R1 APIの呼び出し方法(推奨)

ApidogでDeepSeek-R1 APIまたはDeepSeek-V3 APIを呼び出すことができます。Apidogを使用してストリーミング出力結果を取得することもできます:
apidog-deepseek-8.png

または全体の出力結果を取得することもできます:
apidog-deepseek-9.png

27
17
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
27
17

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?