3行でいうと

  • APIの呼び出しは、messages に system と user を並べ、model に deepseek-flash か deepseek-v4-pro を入れて送る形です。思考モードは {"thinking": {"type": "enabled/disabled"}}、強さは reasoning_effort の low・high・max(既定は高)と、思考モードのガイドにあります。
  • 思考モードでは temperature、presence_penalty、frequency_penalty は設定してもエラーにならず、効果もない、と公式にあります。ツール(tools)を使うときは、履歴の reasoning_content を毎回返さないと400になります。
  • 検索とページ取得は、POST /v1/tools/search と /v1/tools/fetch の2つです。成功したリクエスト1,000件あたり5元で、空の結果や失敗は課金されない、と公式にあります(確認日 2026-10-25)。
  • HarnessのWeb UIは、ワークスペースを選ぶまで入力欄が使えません。依頼のあと、承認が要る操作は画面が先に聞きます。リマインダーは、会話でモデルに頼み、「Automation」ページで確かめます。

この記事は、公式の資料を2026年10月25日に読んでまとめたものです。この記事は、実際に使って確かめた記録ではありません。運営者は DeepSeek を入れていますが、使い心地はこの記事には書いていません。手順は「公式の手順を順に並べたもの」です。指示文(プロンプト)の例は、すべて「この記事の例」で、公式の例ではありません。Web版(chat.deepseek.com)は読めていないので、画面の説明は書けません。「返ってくる内容」は、公式が応答の形を書いている範囲だけを書き、中身の質や速さは書きません。

先に結論

前提:用語をそろえる

たとえ話:相談相手に「メモ用紙」と「電話」を渡す

DeepSeekを、頭の回転が速い相談相手だと考えます。ふつうの質問は立ち話。思考モードは「メモ用紙を広げて考えてもらう」こと。ツール呼び出しは、相手が「天気を調べてきて」とメモを渡し、こちらが調べて答えを返す、という「電話の取り次ぎ」です。検索は図書館への問い合わせ。ただし、相手が何を書いたかは自分で確かめる必要があります。これは僕らのたとえで、公式の表現ではありません。

場面1:Web版・アプリで、最初の質問をする

公式で確認できていること。 公式の発表は、最新のモデルに chat.deepseek.com か公式アプリで話せる、と書いています(01・02)。画面の構成は、確認できていません。

手順(画面の名前は未確認)

  1. 05のA-1またはA-2でサインインする。
  2. 入力欄に、機密でない質問を入れて送る。この記事の例(用語の説明):

「トークン」という言葉を、AIの文脈で小学生にもわかるように、3行で説明してください。

  1. 返事を読み、わからないところを、同じ会話の続きで質問する。この記事の例:

いまの説明の2行目を、身近なたとえで言い直してください。

  1. 画面に、思考やファイルの添付などのボタンがあれば、1つずつ試す。どんなボタンがあるか、公式の資料では確認できていません。

気をつけること。 04のとおり、公式のポリシーは、入力した内容は中華人民共和国で保存される、と書いています。最初は、機密でない質問で。会話を「共有リンク」にすると、公開された会話は第三者に見られうる、と公式が注意しています(01)。

場面2:APIで質問を送り、返ってきたものを読む

前提。 05のB-3でキーを環境変数に置き、B-4のcurlが通ること。

手順

  1. 05のB-4のcurlを、ターミナルで実行する。messages の最後の user の content が、質問の部分です。
  2. 返ってきたJSONのどこを読むか。公式のツール呼び出しのコードは、応答の choices[0].message を、メッセージとして扱っています(response.choices[0].message)。つまり、答えの文章は、その content の中、考えた内容は reasoning_content、ツールの呼び出しは tool_calls、と読めます(思考モードのガイドの記載と合わせた読み方)。
  3. 質問を変えるには、content の文字を書き換えて、もう一度実行する。この記事の例(user の content に入れる文):

このページの内容を3点で要約する手順を、番号つきで教えてください。

期待される結果。 JSONが返る。公式の最初のページに、成功時の応答の見本は載っていませんでした。エラーのときは05の表を見る。

場面3:思考モードを切り替える

公式の思考モードのガイドに書かれた内容です。

やりたいこと リクエストに足すもの 公式の記載
思考を有効にする {"thinking": {"type": "enabled"}} 既定は有効
思考を無効にする {"thinking": {"type": "disabled"}}
思考の強さ {"reasoning_effort": "low"}、"high"、"max" 既定は high
OpenAI SDK(Python)で thinking を渡す extra_body={"thinking": {"type": "enabled"}} reasoning_effort="high" は通常の引数

手順(curlで、この記事で組んだ例。05のB-4の1か所を変えただけで、動作は確かめていません)

  1. 05のB-4のコマンドをコピーする。
  2. "thinking": {"type": "enabled"} を、"thinking": {"type": "disabled"} に書き換える。
  3. 実行して、応答に reasoning_content が入るかどうかを、有効のときと見比べる。

公式の補足。

場面4:答えを少しずつ受け取る(ストリーム)

公式の最初のページに、「例は非ストリームで、stream を true にするとストリームの出力になる」と書かれています。

  1. 05のB-4のコマンドの "stream": false を "stream": true に書き換える。
  2. 実行する。

期待される結果。 応答が、一度に1つのJSONではなく、細かく分かれて届く。その細かい形式は、読んだページには書かれていませんでした。 SDKを使う場合の書き方も、読んだページでは確認できていません。

場面5:ツール呼び出し(自分の関数をモデルに呼ばせる)

公式のツール呼び出しのガイドの、天気の例です。流れは次の4ステップです。

  1. 利用者が「杭州の天気は?」と聞く。
  2. モデルが get_weather({location: 'Hangzhou'}) の呼び出しを返す。
  3. 自分のコードが get_weather を実行し、結果を tool メッセージとしてモデルに返す。
  4. モデルが、その結果を使って文章で答える。

公式のPythonの例の写し(取得した内容から、行末の空白を除いたもの。全文は公式ページで確かめてください)。

from openai import OpenAI

def send_messages(messages):
    response = client.chat.completions.create(
        model="deepseek-flash",
        messages=messages,
        tools=tools,
        extra_body={"thinking": {"type": "disabled"}},
    )
    return response.choices[0].message

client = OpenAI(
    api_key="<your api key>",
    base_url="https://api.deepseek.com",
)

tools = [
    {
        "type": "function",
        "function": {
            "name": "get_weather",
            "description": "Get weather of a location, the user should supply a location first.",
            "parameters": {
                "type": "object",
                "properties": {
                    "location": {
                        "type": "string",
                        "description": "The city and state, e.g. San Francisco, CA",
                    },
                },
                "required": ["location"],
            },
        },
    },
]

messages = [{"role": "user", "content": "How's the weather in Hangzhou, Zhejiang?"}]
message = send_messages(messages)
print(f"User>\t {messages[0]['content']}")

tool = message.tool_calls[0]
messages.append(message)

messages.append({"role": "tool", "tool_call_id": tool.id, "content": "24℃"})
message = send_messages(messages)
print(f"Model>\t {message.content}")

読むときの注意(公式のページの内容から)。

場面6:検索とページ取得(Search / Fetch API)

公式のSearch/Fetchのガイドに書かれた内容です。

Search(検索)。 次は公式の例の写しです。<DeepSeek API Key> は、自分のキーに置き換えます。

curl https://api.deepseek.com/v1/tools/search \
  -H "Authorization: Bearer <DeepSeek API Key>" \
  -H "Content-Type: application/json" \
  -d '{
    "query": "DeepSeek V4 模型 发布",
    "count": 5,
    "need_content": true
  }'
項目 内容(公式の記載)
query 必須。1〜128文字。検索演算子が使える
count 1〜50。既定は10
ori_question 任意。検索のきっかけになった元の質問(1〜128文字)
localization 任意。IPアドレスで、地域に合った結果を優先する
need_content true でページ本文を content に入れる。既定は false(このとき content は空)
演算子 site:、-site:、-、-"..."、"..."、lang:、after:、before:(組み合わせ可)

応答。 HTTP 200で results の配列(一致がなければ空)。各項目に、rerank_score(0〜3、1.5以上が高品質)、title、url、snippet(短い要約)、summary(長い要約、モデルに読ませる用)、content、site_name、site_icon、date、authority(0〜4、−1は不明、3以上はきわめて権威ある)が入ります。

Fetch(ページ取得)。 1つのURL(最大8192文字。http か https で、ユーザー名やパスワードを含めない)を送ると、title と、Markdownにしたページの内容 content が返ります。公式の例の形は次のとおりです。

curl https://api.deepseek.com/v1/tools/fetch \
  -H "Authorization: Bearer <DeepSeek API Key>" \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://example.com/article"
  }'

手順(この記事の案。動作は確かめていません)

  1. 上のSearchのコマンドで、調べたい言葉を query に入れて送る。count は小さく(例:3)。
  2. 返ってきた results から、url を1つ選び、Fetchに渡して本文を取る。
  3. 取ってきた本文を、場面2の user の content に貼り、要約を頼む(本文が長いときは、貼る量に気をつける)。

公式の注意。

場面7:Harnessに作業を預ける(プレビュー版)

前提。 05のC-2が済んでいる(キーを保存、ワークスペースを選択)。

手順(公式のクイックスタートの順)

  1. 大事なファイルが入っていない、小さな練習用のフォルダを作り、そこで dsh を起動する(フォルダの選び方は、僕らの見立て。公式のクイックスタートは、起動したフォルダを既定の場所にする、と書く)。
  2. Web UIで「选择工作区」から、そのフォルダを選ぶ。
  3. 入力欄に依頼を書く。公式の例は英語の「Summarize this repository and identify its main packages.」(リポジトリを要約し、主なパッケージを挙げて、の意)。この記事の例(日本語。通じるかは未確認):

このフォルダにあるファイルを一覧にして、それぞれが何のためのものかを1行ずつ書いてください。

  1. 承認を求められたら、内容を読んで答える。クイックスタートは、エージェントがファイルの読み書き、コマンドの実行、作業の委任、計画の管理をする、権限の方針が承認を求める操作は、先に聞く、と書いています。
  2. 作業が終わったら、フォルダの中身を、自分の目で確かめる。

モデルを切り替える。 設定でモデルを足したあと、モデルの選択欄で選ぶと、新しい会話の既定になります。すでに送った会話は、その会話のログのモデルのままです(公式のモデル設定ガイド)。思考の強さを選ぶメニュー「推理等级」は、強さを宣言しているモデルにだけ出ます。

リマインダーを頼む。 公式のスケジュールのガイドは、次のように書いています。

  1. 先に、モデルの提供元(DeepSeekのキーなど)を設定しておく。
  2. 会話で、モデルにリマインダーの作成、確認、変更、削除を頼む。公式の例は「每天 Asia/Shanghai 时区 23:00 提醒我查看天气。」(毎日、Asia/Shanghai の時間帯の23時に、天気を見るよう知らせて、の意)。この記事の例(日本語。通じるかは未確認):

毎日 Asia/Tokyo の時間帯で 22:00 に、今日のメモを見直すよう知らせてください。

  1. サイドバーから「Automation」ページを開き、作ったタスクの頻度が毎日になっているか、時間帯が正しく出ているかを確かめる(一度きりの扱いになっていないか。画面の表示の細かい表記は、公式のページに書かれていないため未確認)。
  2. 変更は、タスクを開いて「规则」タブで、名前、指示、時刻を直し、「保存更改」で保存する。「取消」で戻せる。
  3. 削除は、タスクを選んで確認する。今後の配信が止まり、そのタスクと配信の履歴が消えます。会話は消えず、すでにキューにあるメッセージは取り消されません。

公式の制限。 一時停止はできず、実行のたびに新しい会話を始めることはできません。ホストが動いている間だけ動き、終了すると止まり、起動するとまた動きます。配信の記録は、メッセージが会話の受信箱に保存されたことを示すだけで、モデルが作業を終えたことは示しません。配信は、ちょうど1回とは限りません。削除したタスクは戻せません。

画像を入力に使う。 Web UIの設定 → モデルで、提供元の編集 → 「自定义设置」→ モデルの「模型选项」→「输入类型」で「图片」にチェックして保存する、とモデル設定ガイドにあります(自前のモデルの場合)。DeepSeekの経路では、選んだモデルが画像に対応しているかを確かめる、と書かれています(deepseek-v4-pro は画像非対応。02)。

最初の1時間でやる順番(この記事の案)

公式の資料にある順序と、僕らの組み立てを分けて書きます。時間の割り振りは目安で、公式の記載ではありません。

順 やること 参照 目安
1 どの入口を使うか決め、04のデータの置き場所を読む 01、04 10分
2 Web版かアプリで、機密でない質問を3つ送る 場面1 10分
3 APIキーを作り、環境変数に置く。curlで1回呼ぶ 05のB 15分
4 思考の有効・無効を切り替え、応答を見比べる 場面3 10分
5 検索とページ取得を1回ずつ呼ぶ 場面6 10分
6 余裕があれば、Harnessを練習用フォルダで起動する 05のC、場面7 残り

つまずきと直し方

症状 原因(公式の記載、または読み方) 試すこと
curlで401 キーの誤り キーが正しいか確かめる。変数 DEEPSEEK_API_KEY が、同じターミナルの窓で設定されているか確かめる(05のB-3は、その窓の中だけ有効な例)
curlで402 残高不足 チャージのページで入金する(画面の名前は未確認)
思考をオフにしたのに考えた内容が返る 公式の例は、thinking を disabled にする書き方 "thinking": {"type": "disabled"} の綴りと位置を確かめる
temperature を変えても変わらない 思考モードでは効果がない、と公式にある 思考を無効にしてから変える
ツールを使う2回目のリクエストで400 思考モードで、履歴の reasoning_content を返していない 応答のメッセージ全体を messages に足す
Fetchで403 セキュリティポリシーによる拒否 別のURLにする。取得先のポリシーに左右される、とガイドにある
Fetchで404 使えるページ内容を取得できなかった URLを確かめる
Searchが429 100 QPS を超えた 間隔を空けて再試行
Harnessの入力欄が灰色 ワークスペースを選んでいない 「选择工作区」で選ぶ
Harnessのリマインダーが一度きりになる 時間帯や頻度の書き方 Automationページで頻度を確かめ、ルールのタブで直す

気をつけること

出典