GPTのOSS版が出ましたね〜
OpenAIさんはモデルをオープンにしないイメージでしたけどまた流れが変わりそう
gpt-oss
GPTのOSS版って感じです。
GPT2以来のオープンウェイト言語モデルらしいです。GPT2の時代知らなかったけどオープンだったんですね。
OpenAIは新しいオープンウェイト言語モデル「gpt-oss-120b」と「gpt-oss-20b」を発表しました。
これらはApache 2.0ライセンスで公開され、既存のオープンモデルより高性能・高効率で、推論やツール利用など実用的な機能も強化されています。
gpt-oss-120bは80GBのGPUで動作し、OpenAIの有料モデルに匹敵する性能を持ちます。gpt-oss-20bは16GBで動作し、エッジデバイス向きです。
安全性にも配慮され、広範な用途で無料・自由に利用やカスタマイズが可能です。
Hugging Faceなど主要なプラットフォームで配布され、個人から企業まで幅広い利用が想定されています。
さすがの@youtoyさん早い。
プレイグラウンドで触ると結構爆速です。
npakaさんのまとめも爆速
120bと20bが出てますね
Ollamaで試す
Ollamaだとすぐ試せます。
20bだと13GBくらいの容量で120bだと61GBくらいです。快適に動くかは別としてノートパソコンにも入れられる。
CLIだとollama runでいけます。
$ ollama run gpt-oss
OllamaにNode.jsからアクセスして利用
OpenAIのSDKが互換APIは動くのでこんな感じで動かせます。
$ npm i openai
APIキーにnot-neededって書いてますが何かは入れないと怒られたので入れておきます。
import { OpenAI } from "openai";
const client = new OpenAI({
baseURL: "http://localhost:11434/v1",
apiKey: "not-needed"
});
const chatCompletion = await client.chat.completions.create({
model: "gpt-oss:20b",
messages: [
{
role: "user",
content: "なぜ空は青いのですか?",
},
],
});
console.log(chatCompletion.choices[0].message);
ただこれだと僕の環境だと反応なさすぎるので以下のコードに変えました。
import { OpenAI } from "openai";
const client = new OpenAI({
baseURL: "http://localhost:11434/v1",
apiKey: "not-needed",
});
const streamChat = async (question) => {
console.log("🤔 考え中...\n");
const stream = await client.chat.completions.create({
model: "gpt-oss:20b",
messages: [
{ role: "user", content: question }
],
stream: true, // ストリーミング有効
temperature: 0.7,
});
// リアルタイム出力
for await (const chunk of stream) {
const content = chunk.choices[0]?.delta?.content;
if (content) {
process.stdout.write(content); // 改行なしで追加
}
}
console.log('\n\n✅ 完了!');
};
// 使用例
streamChat("プロトアウトスタジオについて詳しく教えて");
$ node app.mjs
ゆったり
Hugging FaceのAPIでNode.jsから触る
ローカルだと僕のマシンは全然使い物にならん感じだったので、Hugging FaceのAPIで利用しようと思います。
OllamaもHugging FaceのAPIを使うことでNode.jsから触ってみたいと思います。
Inference Providers
というルーター役割をしてくれるAPIエンドポイントが使えます。
import { OpenAI } from "openai";
const client = new OpenAI({
baseURL: "https://router.huggingface.co/v1",
apiKey: `Hugging FaceのAPIキー`,
});
const chatCompletion = await client.chat.completions.create({
model: "openai/gpt-oss-120b:novita",
messages: [
{
role: "user",
content: "なぜ空は青いの?",
},
],
});
console.log(chatCompletion.choices[0].message);
ローカル実行だとマシンスペック的に遅くなってしまうけどこのやり方だと早いですね。
まとめ
さっくり触ってみました。
頭の良さはo4-miniやo3-miniくらい。これがローカルで動くのはすごいですね。
チューニングとかもしやすそうなので色々試してみたいと思います。