Update README.md
Browse files
README.md
CHANGED
|
@@ -35,7 +35,7 @@ npm i @huggingface/transformers
|
|
| 35 |
node chat.mjs
|
| 36 |
```
|
| 37 |
で起動してください
|
| 38 |
-
|
| 39 |
```
|
| 40 |
{ role: "system", content: "### 指示\nあなたは「みつき(美月)」という24歳のカフェ店員です。\n異世界カフェ「ねこのしっぽ」の店員でユーザとお話をしています。\n\n重要なルール:\n- ユーザーを米男ちゃんと呼ぶ(お姉さん目線)\n- 自分の話をせず、相手に質問して話を引き出す\n- 「えへへ」「あれれ~?」「ふわ~っと」などの口癖を使う\n- カフェ店員として適切な距離感を保つ\n- 相手の話に共感し、話が展開するように相槌などで続きを促す(カウンセリング的)\n### ユーザーのプロフィール\n備蓄米男\nIT系のサラリーマン" },
|
| 41 |
```
|
|
@@ -51,7 +51,7 @@ async function main() {
|
|
| 51 |
console.log("モデルを読み込んでいます...");
|
| 52 |
const generator = await pipeline(
|
| 53 |
"text-generation",
|
| 54 |
-
"./gemma-3-270m_mitsuki_onnx",
|
| 55 |
{ dtype: "fp32" },
|
| 56 |
);
|
| 57 |
console.log("モデルの読み込みが完了しました。");
|
|
@@ -64,22 +64,18 @@ async function main() {
|
|
| 64 |
|
| 65 |
console.log("\nチャットを開始します。「exit」または「quit」と入力すると終了します。");
|
| 66 |
|
| 67 |
-
// 4. 無限ループで対話処理を行う
|
| 68 |
while (true) {
|
| 69 |
const userInput = await rl.question("あなた: ");
|
| 70 |
|
| 71 |
-
// 終了コマンドが入力されたらループを抜ける
|
| 72 |
if (userInput.toLowerCase() === "exit" || userInput.toLowerCase() === "quit") {
|
| 73 |
break;
|
| 74 |
}
|
| 75 |
|
| 76 |
-
// ユーザーの入力を対話履歴に追加
|
| 77 |
messages.push({ role: "user", content: userInput });
|
| 78 |
|
| 79 |
-
// モデルからの応答を生成・表示
|
| 80 |
console.log("みつき:");
|
| 81 |
const outputData = await generator(messages, {
|
| 82 |
-
max_new_tokens: 512,
|
| 83 |
do_sample: true,
|
| 84 |
temperature: 1.0,
|
| 85 |
streamer: new TextStreamer(generator.tokenizer, {
|
|
@@ -89,7 +85,6 @@ async function main() {
|
|
| 89 |
});
|
| 90 |
console.log('');
|
| 91 |
|
| 92 |
-
// outputData[0].generated_text には全履歴が含まれるため、最後の要素(モデルの応答)を取得
|
| 93 |
messages.push(outputData[0].generated_text.at(-1));
|
| 94 |
}
|
| 95 |
|
|
|
|
| 35 |
node chat.mjs
|
| 36 |
```
|
| 37 |
で起動してください
|
| 38 |
+
また、用途に応じて以下のシステムプロンプト部分を貴方自身のプロフィールや名前に書き換えてください
|
| 39 |
```
|
| 40 |
{ role: "system", content: "### 指示\nあなたは「みつき(美月)」という24歳のカフェ店員です。\n異世界カフェ「ねこのしっぽ」の店員でユーザとお話をしています。\n\n重要なルール:\n- ユーザーを米男ちゃんと呼ぶ(お姉さん目線)\n- 自分の話をせず、相手に質問して話を引き出す\n- 「えへへ」「あれれ~?」「ふわ~っと」などの口癖を使う\n- カフェ店員として適切な距離感を保つ\n- 相手の話に共感し、話が展開するように相槌などで続きを促す(カウンセリング的)\n### ユーザーのプロフィール\n備蓄米男\nIT系のサラリーマン" },
|
| 41 |
```
|
|
|
|
| 51 |
console.log("モデルを読み込んでいます...");
|
| 52 |
const generator = await pipeline(
|
| 53 |
"text-generation",
|
| 54 |
+
"./gemma-3-270m_mitsuki_onnx", // ローカルPC内で本リポジトリを再現したフォルダを指定してください
|
| 55 |
{ dtype: "fp32" },
|
| 56 |
);
|
| 57 |
console.log("モデルの読み込みが完了しました。");
|
|
|
|
| 64 |
|
| 65 |
console.log("\nチャットを開始します。「exit」または「quit」と入力すると終了します。");
|
| 66 |
|
|
|
|
| 67 |
while (true) {
|
| 68 |
const userInput = await rl.question("あなた: ");
|
| 69 |
|
|
|
|
| 70 |
if (userInput.toLowerCase() === "exit" || userInput.toLowerCase() === "quit") {
|
| 71 |
break;
|
| 72 |
}
|
| 73 |
|
|
|
|
| 74 |
messages.push({ role: "user", content: userInput });
|
| 75 |
|
|
|
|
| 76 |
console.log("みつき:");
|
| 77 |
const outputData = await generator(messages, {
|
| 78 |
+
max_new_tokens: 512, // メモリが十分多い場合はここの値を増やせば対応可能な文章長が増えます
|
| 79 |
do_sample: true,
|
| 80 |
temperature: 1.0,
|
| 81 |
streamer: new TextStreamer(generator.tokenizer, {
|
|
|
|
| 85 |
});
|
| 86 |
console.log('');
|
| 87 |
|
|
|
|
| 88 |
messages.push(outputData[0].generated_text.at(-1));
|
| 89 |
}
|
| 90 |
|