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)は読めていないので、画面の説明は書けません。「返ってくる内容」は、公式が応答の形を書いている範囲だけを書き、中身の質や速さは書きません。
先に結論
- 場面ごとの入口。 質問だけなら Web版かアプリ(画面は未確認)。プログラムから呼ぶなら API。ファイルの出入りを伴う作業は Harness。この順で、場面1〜7を書きます。
- APIの最初の一歩は、05のcurlです。 そこから、思考モードの切り替え、ストリーム、ツール呼び出し、検索、の順に足していくのが、公式のガイドの並べ方に沿った順です。
- ツールを使う会話は、履歴の持ち方に決まりがあります。 前の応答のメッセージ(
content、reasoning_content、tool_callsを含む)をそのまま履歴に足す、と公式の例にあります。 - Harnessは、小さな練習用のフォルダから。 公式の規約は、エージェントの行為を利用者自身の行為として責任を負う、と書いています(02)。
- 日本語での質問が、画面でどう扱われるかは確認できていません。 公式サイトの言語の切り替えは中国語と英語だけでした(01)。この記事の例は日本語で書きましたが、日本語で通じるかは、公式の資料では確認できていません。
前提:用語をそろえる
- プロンプト(指示文):AIに送る文章です。
- system と user:APIのメッセージには役割があります。
systemは前提の指示、userは利用者の発言です。公式の最初の例に両方が出てきます。 - ストリーム(stream):答えを少しずつ受け取る形です。公式の例は
"stream": false(まとめて受け取る)で、trueにするとストリームになる、と書かれています。 - 思考モード(thinking):答える前に考える動作です。既定は有効。
reasoning_contentに、考えた内容が入ります。 - ツール呼び出し(tool calls):モデルが「この関数を呼んで」と返し、自分のプログラムが実行して結果を返す仕組みです。モデルが関数を実行するのではありません。
- QPS:1秒あたりのリクエスト数です。検索とページ取得の上限に使われます。
- Automation(オートメーション)ページ:Harnessで、会話の中で作った定時のリマインダーを一覧・編集する画面です(公式のスケジュールのガイド)。
たとえ話:相談相手に「メモ用紙」と「電話」を渡す
DeepSeekを、頭の回転が速い相談相手だと考えます。ふつうの質問は立ち話。思考モードは「メモ用紙を広げて考えてもらう」こと。ツール呼び出しは、相手が「天気を調べてきて」とメモを渡し、こちらが調べて答えを返す、という「電話の取り次ぎ」です。検索は図書館への問い合わせ。ただし、相手が何を書いたかは自分で確かめる必要があります。これは僕らのたとえで、公式の表現ではありません。
場面1:Web版・アプリで、最初の質問をする
公式で確認できていること。 公式の発表は、最新のモデルに chat.deepseek.com か公式アプリで話せる、と書いています(01・02)。画面の構成は、確認できていません。
手順(画面の名前は未確認)
- 05のA-1またはA-2でサインインする。
- 入力欄に、機密でない質問を入れて送る。この記事の例(用語の説明):
「トークン」という言葉を、AIの文脈で小学生にもわかるように、3行で説明してください。
- 返事を読み、わからないところを、同じ会話の続きで質問する。この記事の例:
いまの説明の2行目を、身近なたとえで言い直してください。
- 画面に、思考やファイルの添付などのボタンがあれば、1つずつ試す。どんなボタンがあるか、公式の資料では確認できていません。
気をつけること。 04のとおり、公式のポリシーは、入力した内容は中華人民共和国で保存される、と書いています。最初は、機密でない質問で。会話を「共有リンク」にすると、公開された会話は第三者に見られうる、と公式が注意しています(01)。
場面2:APIで質問を送り、返ってきたものを読む
前提。 05のB-3でキーを環境変数に置き、B-4のcurlが通ること。
手順
- 05のB-4のcurlを、ターミナルで実行する。
messagesの最後のuserのcontentが、質問の部分です。 - 返ってきたJSONのどこを読むか。公式のツール呼び出しのコードは、応答の
choices[0].messageを、メッセージとして扱っています(response.choices[0].message)。つまり、答えの文章は、そのcontentの中、考えた内容はreasoning_content、ツールの呼び出しはtool_calls、と読めます(思考モードのガイドの記載と合わせた読み方)。 - 質問を変えるには、
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か所を変えただけで、動作は確かめていません)
- 05のB-4のコマンドをコピーする。
"thinking": {"type": "enabled"}を、"thinking": {"type": "disabled"}に書き換える。- 実行して、応答に
reasoning_contentが入るかどうかを、有効のときと見比べる。
公式の補足。
- 強さの別名は、
minimalとlowが low、medium・high・xhighが high、maxとultraが max に対応します。 - 思考モードでは、
temperature、presence_penalty、frequency_penaltyを指定してもエラーにならず、効果もありません。 - Anthropic形式では
thinkingのbudget_tokensは無視され、output_configはeffortだけ使えます(07)。 - 思考の強さが、速さや費用にどう効くかは、公式のガイドでは数字で示されていませんでした。04の料金表は、トークン数に応じた課金です。
場面4:答えを少しずつ受け取る(ストリーム)
公式の最初のページに、「例は非ストリームで、stream を true にするとストリームの出力になる」と書かれています。
- 05のB-4のコマンドの
"stream": falseを"stream": trueに書き換える。 - 実行する。
期待される結果。 応答が、一度に1つのJSONではなく、細かく分かれて届く。その細かい形式は、読んだページには書かれていませんでした。 SDKを使う場合の書き方も、読んだページでは確認できていません。
場面5:ツール呼び出し(自分の関数をモデルに呼ばせる)
公式のツール呼び出しのガイドの、天気の例です。流れは次の4ステップです。
- 利用者が「杭州の天気は?」と聞く。
- モデルが
get_weather({location: 'Hangzhou'})の呼び出しを返す。 - 自分のコードが
get_weatherを実行し、結果をtoolメッセージとしてモデルに返す。 - モデルが、その結果を使って文章で答える。
公式の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}")
読むときの注意(公式のページの内容から)。
- 例は、思考を無効にしています(
extra_body)。ガイドは、思考モードでのツール呼び出しは DeepSeek-V3.2 から対応で、詳細は思考モードのページ、と書いています。 - 思考モードで
toolsを使うとき、履歴のreasoning_contentを、ツール呼び出しがなかったターンも含めて、以降のリクエストで毎回返さないと、400エラーになります(思考モードのガイド)。例のように、応答のメッセージ全体をmessagesに足せば、content、reasoning_content、tool_callsが一緒に入る、と書かれています。 - 例の
get_weatherの結果24℃は決め打ちです。実際のアプリでは、天気のサービスなどを呼びます。例はtool_calls[0]だけを扱い、複数の呼び出しの繰り返しは扱っていません(取得時の指摘)。 - Chat Completions形式では、会話の途中にツール呼び出しのメッセージを挿入できず、その場合はAnthropic形式かResponses APIを使う、とガイドにあります。
- ストリクトモード(Beta)は、
base_urlをhttps://api.deepseek.com/betaにして、すべての関数に"strict": trueを付けます(詳細は公式のガイド)。
場面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"
}'
手順(この記事の案。動作は確かめていません)
- 上のSearchのコマンドで、調べたい言葉を
queryに入れて送る。countは小さく(例:3)。 - 返ってきた
resultsから、urlを1つ選び、Fetchに渡して本文を取る。 - 取ってきた本文を、場面2の
userのcontentに貼り、要約を頼む(本文が長いときは、貼る量に気をつける)。
公式の注意。
- 料金は、Search、Fetchとも、成功したリクエスト1,000件あたり5元(確認日 2026-10-25)。結果が空のもの、失敗、タイムアウトは課金されません。
countを変えても料金は変わりません。 - 上限は、アカウント単位で、Searchが100 QPS、Fetchが25 QPSとドメインごとの上限。超えると429です。
- エラー: 403は、Fetchがセキュリティポリシーで拒否されたとき。404は、Fetchが使えるページ内容を取れなかったとき。402は残高不足。
- 再試行は、408、429、5xxなら待ってから。402はチャージしてから。ほかの4xxは、リクエストを変えない限り再試行しない、と書かれています。
- 渡るデータ。 Searchは
query、ori_question、localization(IPアドレス)、need_content。Fetchは送ったURL。保管期間は、ガイドに書かれていませんでした。 - Harness、Claude Code、Codexから使う検索は、2026年11月1日の北京時間0時までは課金されず、以降は1回ごとに課金される、とガイドと料金ページにあります。
場面7:Harnessに作業を預ける(プレビュー版)
前提。 05のC-2が済んでいる(キーを保存、ワークスペースを選択)。
手順(公式のクイックスタートの順)
- 大事なファイルが入っていない、小さな練習用のフォルダを作り、そこで
dshを起動する(フォルダの選び方は、僕らの見立て。公式のクイックスタートは、起動したフォルダを既定の場所にする、と書く)。 - Web UIで「选择工作区」から、そのフォルダを選ぶ。
- 入力欄に依頼を書く。公式の例は英語の「Summarize this repository and identify its main packages.」(リポジトリを要約し、主なパッケージを挙げて、の意)。この記事の例(日本語。通じるかは未確認):
このフォルダにあるファイルを一覧にして、それぞれが何のためのものかを1行ずつ書いてください。
- 承認を求められたら、内容を読んで答える。クイックスタートは、エージェントがファイルの読み書き、コマンドの実行、作業の委任、計画の管理をする、権限の方針が承認を求める操作は、先に聞く、と書いています。
- 作業が終わったら、フォルダの中身を、自分の目で確かめる。
モデルを切り替える。 設定でモデルを足したあと、モデルの選択欄で選ぶと、新しい会話の既定になります。すでに送った会話は、その会話のログのモデルのままです(公式のモデル設定ガイド)。思考の強さを選ぶメニュー「推理等级」は、強さを宣言しているモデルにだけ出ます。
リマインダーを頼む。 公式のスケジュールのガイドは、次のように書いています。
- 先に、モデルの提供元(DeepSeekのキーなど)を設定しておく。
- 会話で、モデルにリマインダーの作成、確認、変更、削除を頼む。公式の例は「每天 Asia/Shanghai 时区 23:00 提醒我查看天气。」(毎日、Asia/Shanghai の時間帯の23時に、天気を見るよう知らせて、の意)。この記事の例(日本語。通じるかは未確認):
毎日 Asia/Tokyo の時間帯で 22:00 に、今日のメモを見直すよう知らせてください。
- サイドバーから「Automation」ページを開き、作ったタスクの頻度が毎日になっているか、時間帯が正しく出ているかを確かめる(一度きりの扱いになっていないか。画面の表示の細かい表記は、公式のページに書かれていないため未確認)。
- 変更は、タスクを開いて「规则」タブで、名前、指示、時刻を直し、「保存更改」で保存する。「取消」で戻せる。
- 削除は、タスクを選んで確認する。今後の配信が止まり、そのタスクと配信の履歴が消えます。会話は消えず、すでにキューにあるメッセージは取り消されません。
公式の制限。 一時停止はできず、実行のたびに新しい会話を始めることはできません。ホストが動いている間だけ動き、終了すると止まり、起動するとまた動きます。配信の記録は、メッセージが会話の受信箱に保存されたことを示すだけで、モデルが作業を終えたことは示しません。配信は、ちょうど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ページで頻度を確かめ、ルールのタブで直す |
気をつけること
- この記事は、実際に使って確かめた記録ではありません。運営者は DeepSeek を入れていますが、使い心地はこの記事には書いていません。コマンド、コード、手順は、公式のドキュメントの写しか、公式の記載に合わせてこの記事で組んだ案で、動作は確かめていません。
- 読めなかったページ。 Web版(chat.deepseek.com)、API開放プラットフォーム(platform.deepseek.com)、Harnessの利用者ガイドの目次は取得できませんでした。そのため、場面1の画面の説明は書けていません。公式のPython・Node.jsの最初の呼び出しの例(最初のページのタブ)も、取得した内容に入っていませんでした。
- 公式のページは要約の形で取得しています。コードの行末の空白や、記号の欠けがありうるので、実際に使う前に公式ページの原文を見て写してください。
- ツール呼び出しのガイドの例は、公式ページ自体の指摘(
$defと$defsの違い、例が自分のルールに合わない点)が取得時に挙がっていました。ストリクトモードを使うときは、公式のページの原文で確かめてください。 - Harnessは、公式が「プレビュー版」と書き、互換性を壊す変更がありうるとしています。エージェントの行為の責任は利用者にある、と規約にあります(02)。
- 出力は間違えうる、と公式が繰り返し書いています。重要な点は、自分で原文に当たってください。
- 画面の表記は変わります。手元の画面と照らして読んでください。
出典
- 首次调用 API(DeepSeek API Docs、確認日 2026-10-25)
- 思考模式 Thinking Mode(DeepSeek API Docs、確認日 2026-10-25)
- Tool Calls(DeepSeek API Docs、確認日 2026-10-25)
- 网页搜索与抓取 Search/Fetch(DeepSeek API Docs、確認日 2026-10-25)
- 模型与定价(DeepSeek API Docs、確認日 2026-10-25)
- 错误码 Error Codes(DeepSeek API Docs、確認日 2026-10-25)
- 使用 Anthropic API(DeepSeek API Docs、確認日 2026-10-25)
- Harness クイックスタート(DeepSeek Harness docs、確認日 2026-10-25)
- 配置模型与提供商(DeepSeek Harness docs、確認日 2026-10-25)
- 会话内提醒 Schedule(DeepSeek Harness docs、確認日 2026-10-25)
- 01〜04(この site 内の既存記事。公式のプライバシーポリシー、利用規約、Harnessの規約などは、そこで読んだ内容による)