DeepSeek R1の推論を使って他のLLMの性能を超絶アップ魔改造!?
今海外の方で話題になっているのですが、
DeepSeek R1の推論部分のみをAPIで取り出すことができるらしくて、
それを他のLLMにプロンプトとして渡して、それを元に回答を生成させることで超絶頭のいいAIにできる!ということらしいです。
ちょっとやってみようと思います。
ひとまず
https://platform.deepseek.com/usage
課金!
ちょっとクレジットカード使うのは怖いので、
PayPal経由で2ドル入れてみました。
そしてAPI keyを作成して準備は完了
まずは簡単なサンプルをそのまま持ってきて
from openai import OpenAI
client = OpenAI(api_key="<DeepSeek API Key>", base_url="https://api.deepseek.com")
response = client.chat.completions.create(
model="deepseek-chat",
messages=[
{"role": "system", "content": "You are a helpful assistant"},
{"role": "user", "content": "Hello"},
],
stream=False,
max_tokens=100
)
print(response.choices[0].message.content)
ちょっといっぱい無駄に出力されたら嫌だからmax_tokensだけ設定して
ちゃんと返ってくるか試してみる!
ふむ、おっけー!
そしたら今度は、推論部分を取得できるように。。
response = client.chat.completions.create(
model="deepseek-reasoner",
messages=[
{"role": "user", "content": "Hello"},
],
stream=False,
max_tokens=1
)
ここがポイントです!
推論部分のみ「取得」することは可能なのですが
ドキュメントにはこのように書かれているため
恐らく出力含めてトークンが計算されて料金がかかるものと思われます。
そのため
max_tokens=1
にして、出力トークンを絞ることで、出力をほぼタダにします!
(多分この解釈で合ってるはず。。)
print(response.choices[0].message.reasoning_content)
そしてreasoning_contentを出力すると
Okay, the user just said "Hello". I should respond in a friendly and welcoming manner. Let me make sure to keep it natural and not too formal. Maybe add a smiley emoji to keep the tone light. Also, I want to prompt them to ask for help if they need anything. Let me put that together.
Hmm, "Hello! How can I assist you today? 😊" That sounds good. It's welcoming, offers help, and the emoji adds a nice touch. I think that's appropriate. Let me double-check for any typos or issues. Nope, looks good. Ready to send.
ふむ、ちゃんと考えてくれています。
あとは、これを添えて、他のLLMに渡せば。。
推論つきでかんがえてもらえる!と
まあ、結局入力トークン数がかなり増えることにはなるので
あまりお高いモデルには投げられないですし、
むしろ性能が低いモデルに対して投げるのが有効だと思います!
最初に紹介してた人は、推論つきでGPT-3.5に投げたらめっちゃ頭良くなった!みたいな感じでした!
ということで、ひとまずさっと試せるように
GPT-4o-miniにChatGPTで聞いてみようと思います。
まだこの問題解けないのか!w
これをやってみます。
response = client.chat.completions.create(
model="deepseek-reasoner",
messages=[
{"role": "system", "content": "think in English, output in Japanese:"},
{"role": "user", "content": "8.11と8.9はどっちが大きいの?"},
],
stream=False,
max_tokens=1
)
print(response.choices[0].message.reasoning_content)
すると
まず、質問者が8.11と8.9のどちらが大きいか尋ねています。英語で考え始めます。まず、両方の数値を小数点以下の桁数を揃えると比較しやすくなります。8.11は小数点以下2桁、8.9は1桁です。8.9を8.90に変換すると、見やすくなります。
次に、整数部分を比較します。どちらも8なので同じです。次に小数部分を見ます。8.11の小数部分は0.11、8.90の小数部分は0.90です。0.90の方が0.11より大きいので、8.90の方が大きいことがわかります。したがって、8.9の方が8.11より大きいです。
ただし、間違いがないか確認します。例えば、8.11を8.1と比較する場合、0.11は0.1より大きいですが、今回は8.9との比較です。小数第二位まで考えると、8.90の方が確かに大きいです。この論理に問題はないと判断し、回答をまとめます。
あれ、英語で推論しろって書いたんだけど、出力は日本語で。。って言ったからかな?日本語で推論してる。。
トークンの節約のためには英語でやってほしいですね。
とりあえずこれを
<think>まず、質問者が8.11と8.9のどちらが大きいか尋ねています。英語で考え始めます。まず、両方の数値を小数点以下の桁数を揃えると比較しやすくなります。8.11は小数点以下2桁、8.9は1桁です。8.9を8.90に変換すると、見やすくなります。
次に、整数部分を比較します。どちらも8なので同じです。次に小数部分を見ます。8.11の小数部分は0.11、8.90の小数部分は0.90です。0.90の方が0.11より大きいので、8.90の方が大きいことがわかります。したがって、8.9の方が8.11より大きいです。
ただし、間違いがないか確認します。例えば、8.11を8.1と比較する場合、0.11は0.1より大きいですが、今回は8.9との比較です。小数第二位まで考えると、8.90の方が確かに大きいです。この論理に問題はないと判断し、回答をまとめます。</think>
8.11と8.9はどっちが大きいの?
<think>がChatGPTで有効かどうかはわかりませんが、
なんかまぁ、推論だろ!って判断はしてくれそうなので入れておきました。
最後に、同じ質問を添えます。
まあ、これはみてわかる通り推論で答え出しちゃってるので。。
ちゃんと正解しました!
<think>が効いているかどうかはわかりませんが、余計なことは言わず
簡潔に答えてくれましたね。
これだと簡単すぎるから、もっと難しいことやらせたいけど。。
何を質問したらいいんだろw
あと、DeepSeekのAPIの使用量ってアレ、トークンでは出せないのかな?
<$0.01じゃ、今どれぐらい使われてるのか全然わからん。。
一応今テストした感じでは
まだ$0.001までもうちょい!って感じみたいなので
まあ。。めちゃめちゃ安いのは間違い無いですね。
しばらくしたらトークンも出てました!やっぱりかなり使用量節約できてる気がする!
ただ、このすぐ上に書いてあるんだけど今って大安売り状態なんですね。2月8日までの価格でDeepSeek-R1に関してはディスカウントされていないっぽいですね!
2月8日からは少しお値段上がる感じみたいなので
その状態でもお安いのかどうか。。
もちろんo1とかと比べたら圧倒的に安いのは間違いないけどw
入力が100万トークンあたり$0.55
出力が100万トークンあたり$2.19
らしいです。
他のLLMってどんな感じだったっけ
o1が入力100万トークンあたり$15.00
出力が100万トークンあたり$60.00
た、高すぎる。。w
o1-miniでも入力が$3.00
出力が$12.00
なるほど、DeepSeek-R1
o1-miniより圧倒的に安いのか。。
流石にgpt-4o-miniは圧倒的に安いですが、
だからこそ。。
DeepSeek-R1に推論だけさせて
出力はこのgpt-4o-miniにさせれば。。
圧倒的低コストで賢いモデルにできる!!
という記事でした。
まあ、max_output=1で推論だけしっかりできちゃうのはもはやバグレベルだと思うので、修正されちゃう気がしますが。。w