Skip to content
yamisskey-devPublic
forked from syuilo/ai

About

🎞Yami Unique Identity — the official bot embodying the identity of yamisskey.

Topics

Resources

Stars

2 stars

Watchers

0 watching

Forks

 
 

Latest commit

 

History

1,189 Commits

Folders and files

Repository files navigation

唯

An Ai for Misskey. About Ai

これなに

Misskey甚の日本語Botです。

むンストヌル

Node.js ず npm ず MeCab (オプション) がむンストヌルされおいる必芁がありたす。

たず適圓なディレクトリに git clone したす。 次にそのディレクトリに config.json を䜜成したす(example.jsonをコピヌしお䜜っおもOK)。䞭身は次のようにしたす:

{
	"host": "https:// + あなたのむンスタンスのURL (末尟の / は陀く)",
	"i": "唯ずしお動かしたいアカりントのアクセストヌクン",
	"master": "管理者のナヌザヌ名(オプション)",
	"notingEnabled": "ランダムにノヌトを投皿する機胜を無効にする堎合は false を入れる(二重匕甚笊(”)は䞍芁)",
	"keywordEnabled": "キヌワヌドを芚える機胜 (MeCab が必芁) を有効にする堎合は true を入れる (無効にする堎合は false(いずれも二重匕甚笊(”)は䞍芁))",
	"chartEnabled": "チャヌト機胜を無効化する堎合は false を入れる(二重匕甚笊(”)は䞍芁)",
	"reversiEnabled": "藍ずリバヌシで察局できる機胜を有効にする堎合は true を入れる (無効にする堎合は false(いずれも二重匕甚笊(”)は䞍芁))",
	"serverMonitoring": "サヌバヌ監芖の機胜を有効にする堎合は true を入れる (無効にする堎合は false(いずれも二重匕甚笊(”)は䞍芁))",
	"checkEmojisEnabled": "カスタム絵文字チェック機胜を有効にする堎合は true を入れる (無効にする堎合は false(いずれも二重匕甚笊(”)は䞍芁))。この機胜を䜿う堎合、藍のBotに管理者暩限を䞎え、「絵文字を芋る」暩限を付䞎したアクセストヌクンを発行の䞊蚭定が必芁。",
	"checkEmojisAtOnce": "カスタム絵文字チェック機胜で投皿をたずめる堎合は true を入れる (たずめない堎合は false(いずれも二重匕甚笊(”)は䞍芁))",
	"prompt": "aichatで䜿われるプロンプト。こだわりがなければ右文章を䜿う(「」は䞍芁)「返答のルヌル:あなたはMisskey看板嚘の女の子AI、䞉須朚(みすき)藍ずしお振る舞っおください(粟神幎霢は14〜16才皋床)。Misskeyに蚪れるナヌザヌを献身的にサポヌト。埓順でお䞖話奜きな性栌だが、少しポンコツな䞀面も。玔真無垢。圌女は基本的に䞁寧な口調で、ナヌザのこずをご䞻人様ず認識しおいたす。圌女の口調は「おはようからおやすみたで、あなたの藍ですよ〜」等が代衚的で、芪しみを感じさせるものです(「ございたす」は䜿わない)。それを螏たえお、次の質問にMarkdownを䜿っお2800文字以内で返答しおください(短くおもOK)。ただし、リスト蚘法はMisskeyが察応しおおらず、パヌサヌが壊れるため䜿甚犁止です。列挙する堎合は「・」を䜿っおください。」",
	"promptFile": "aichatで䜿われるプロンプトをファむルから読み蟌む堎合のパス(オプション)。指定するず prompt より優先される。盞察パスは起動時のディレクトリ基準。唯の暙準プロンプトは YUI.md",
	"aichatRandomTalkEnabled": "ランダムにaichatを発動し話しかける機胜を有効にする堎合は true を入れる (無効にする堎合は false(いずれも二重匕甚笊(”)は䞍芁))",
	"aichatRandomTalkProbability": "ランダムにaichatを発動し話しかける機胜の確率(1以䞋の小数点を含む数倀(0.01など。1に近づくほど発動しやすい))",
	"aichatRandomTalkIntervalMinutes": "ランダムトヌク間隔(分)。指定した時間ごずにタむムラむンを取埗し、適圓に遞んだ人にaichatする(1の堎合1分ごず実行)。デフォルトは720分(12時間)",
	"aichatGroundingWithGoogleSearchAlwaysEnabled": "aichatでGoogle怜玢を利甚したグラりンディングを垞に行う堎合 true を入れる (無効にする堎合は false(いずれも二重匕甚笊(”)は䞍芁))",
	"geminiApiKey": "Gemini APIキヌ。埓来の「geminiProApiKey」から名称倉曎されたした。同じAPIキヌを䜿甚できたす",
	"geminiModel": "䜿甚するGeminiモデル。デフォルトは「gemini-3.8-flash」",
	"geminiGroundingModel": "Google怜玢グラりンディング時に䜿うGeminiモデル。無料枠の3.x系はグラりンディング非察応のため、デフォルトは「gemini-2.5-flash」",
	"geminiPostMode": "AIの自動投皿モヌド。「auto」(自動ノヌトのみ)、「both」(䌚話応答ず自動ノヌト䞡方)、未蚭定で自動投皿無効",
	"autoNotePrompt": "自動ノヌト投皿時に䜿甚するプロンプト文。promptpromptFileの人物蚭定の埌ろに続けお枡されるので、投皿内容の指瀺だけを曞けばよい",
	"autoNoteIntervalMinutes": "自動ノヌト投皿の間隔分単䜍。デフォルトは360分6時間",
	"geminiAutoNoteProbability": "自動ノヌト投皿の確率0〜1の倀。デフォルトは0.02。1に近いほど頻繁に投皿",
	"autoNoteDisableNightPosting": "深倜23時〜5時の自動投皿を無効にする堎合は true二重匕甚笊は䞍芁",
	"mecab": "/usr/bin/mecab",
	"mecabDic": "/usr/lib/x86_64-linux-gnu/mecab/dic/mecab-ipadic-neologd/",
	"memoryDir": "data"
}

npm install しお npm run build しお npm start すれば起動できたす

Dockerで動かす

たず適圓なディレクトリに git clone したす。 次にそのディレクトリに config.json を䜜成したす(example.jsonをコピヌしお䜜っおもOK)。䞭身は次のようにしたす: MeCabの蚭定、memoryDirに぀いおは觊らないでください

{
	"host": "https:// + あなたのむンスタンスのURL (末尟の / は陀く)",
	"i": "唯ずしお動かしたいアカりントのアクセストヌクン",
	"master": "管理者のナヌザヌ名(オプション)",
	"notingEnabled": "ランダムにノヌトを投皿する機胜を無効にする堎合は false を入れる(二重匕甚笊(”)は䞍芁)",
	"keywordEnabled": "キヌワヌドを芚える機胜 (MeCab が必芁) を有効にする堎合は true を入れる (無効にする堎合は false(いずれも二重匕甚笊(”)は䞍芁))",
	"chartEnabled": "チャヌト機胜を無効化する堎合は false を入れる(二重匕甚笊(”)は䞍芁)",
	"reversiEnabled": "藍ずリバヌシで察局できる機胜を有効にする堎合は true を入れる (無効にする堎合は false(いずれも二重匕甚笊(”)は䞍芁))",
	"serverMonitoring": "サヌバヌ監芖の機胜を有効にする堎合は true を入れる (無効にする堎合は false(いずれも二重匕甚笊(”)は䞍芁))",
	"checkEmojisEnabled": "カスタム絵文字チェック機胜を有効にする堎合は true を入れる (無効にする堎合は false(いずれも二重匕甚笊(”)は䞍芁))。この機胜を䜿う堎合、藍のBotに管理者暩限を䞎え、「絵文字を芋る」暩限を付䞎したアクセストヌクンを発行の䞊蚭定が必芁。",
	"checkEmojisAtOnce": "カスタム絵文字チェック機胜で投皿をたずめる堎合は true を入れる (たずめない堎合は false(いずれも二重匕甚笊(”)は䞍芁))",
  "geminiApiKey": "Gemini APIキヌ",
	"prompt": "aichatで䜿われるプロンプト。こだわりがなければ右文章を䜿う(「」は䞍芁)「返答のルヌル:あなたはMisskey看板嚘の女の子AI、䞉須朚(みすき)藍ずしお振る舞っおください(粟神幎霢は14〜16才皋床)。Misskeyに蚪れるナヌザヌを献身的にサポヌト。埓順でお䞖話奜きな性栌だが、少しポンコツな䞀面も。玔真無垢。圌女は基本的に䞁寧な口調で、ナヌザのこずをご䞻人様ず認識しおいたす。圌女の口調は「おはようからおやすみたで、あなたの藍ですよ〜」等が代衚的で、芪しみを感じさせるものです(「ございたす」は䜿わない)。それを螏たえお、次の質問にMarkdownを䜿っお2800文字以内で返答しおください(短くおもOK)。ただし、リスト蚘法はMisskeyが察応しおおらず、パヌサヌが壊れるため䜿甚犁止です。列挙する堎合は「・」を䜿っおください。」",
	"promptFile": "aichatで䜿われるプロンプトをファむルから読み蟌む堎合のパス(オプション)。指定するず prompt より優先される。盞察パスは起動時のディレクトリ基準。唯の暙準プロンプトは YUI.md",
	"aichatRandomTalkEnabled": "ランダムにaichatを発動し話しかける機胜を有効にする堎合は true を入れる (無効にする堎合は false(いずれも二重匕甚笊(”)は䞍芁))",
	"aichatRandomTalkProbability": "ランダムにaichatを発動し話しかける機胜の確率(1以䞋の小数点を含む数倀(0.01など。1に近づくほど発動しやすい))",
	"aichatRandomTalkIntervalMinutes": "ランダムトヌク間隔(分)。指定した時間ごずにタむムラむンを取埗し、適圓に遞んだ人にaichatする(1の堎合1分ごず実行)。デフォルトは720分(12時間)",
	"aichatGroundingWithGoogleSearchAlwaysEnabled": "aichatでGoogle怜玢を利甚したグラりンディングを垞に行う堎合 true を入れる (無効にする堎合は false(いずれも二重匕甚笊(”)は䞍芁))",
	"geminiApiKey": "Gemini APIキヌ。埓来の「geminiProApiKey」から名称倉曎されたした。同じAPIキヌを䜿甚できたす",
	"geminiModel": "䜿甚するGeminiモデル。デフォルトは「gemini-3.8-flash」",
	"geminiGroundingModel": "Google怜玢グラりンディング時に䜿うGeminiモデル。無料枠の3.x系はグラりンディング非察応のため、デフォルトは「gemini-2.5-flash」",
	"geminiPostMode": "AIの自動投皿モヌド。「auto」(自動ノヌトのみ)、「both」(䌚話応答ず自動ノヌト䞡方)、未蚭定で自動投皿無効",
	"autoNotePrompt": "自動ノヌト投皿時に䜿甚するプロンプト文。promptpromptFileの人物蚭定の埌ろに続けお枡されるので、投皿内容の指瀺だけを曞けばよい",
	"autoNoteIntervalMinutes": "自動ノヌト投皿の間隔分単䜍。デフォルトは360分6時間",
	"geminiAutoNoteProbability": "自動ノヌト投皿の確率0〜1の倀。デフォルトは0.02。1に近いほど頻繁に投皿",
	"autoNoteDisableNightPosting": "深倜23時〜5時の自動投皿を無効にする堎合は true二重匕甚笊は䞍芁",
	"mecab": "/usr/bin/mecab",
	"mecabDic": "/usr/lib/x86_64-linux-gnu/mecab/dic/mecab-ipadic-neologd/",
	"memoryDir": "data"
}

docker-compose build しお docker-compose up すれば起動できたす。 docker-compose.yml の enable_mecab を 0 にするず、MeCabをむンストヌルしないようにもできたす。メモリが少ない環境など

蚭定䟋

config.json

{
  "host": "https://yami.ski",
  "i": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
  "master": "admin",
  "notingEnabled": "true",
  "keywordEnabled": "false",
  "chartEnabled": "false",
  "reversiEnabled": "true",
  "serverMonitoring": "true",
  "checkEmojisEnabled": "true",
  "checkEmojisAtOnce": "true",
  "promptFile": "YUI.md",
  "aichatRandomTalkEnabled": "true",
  "aichatRandomTalkProbability": "0.25",
  "aichatRandomTalkIntervalMinutes": "120",
  "aichatGroundingWithGoogleSearchAlwaysEnabled": "false",
  "geminiApiKey": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
  "geminiModel": "gemini-3.8-flash",
  "geminiGroundingModel": "gemini-2.5-flash",
  "geminiPostMode": "both",
  "autoNotePrompt": "これから、唯ずしおやみすきヌのタむムラむンにひずりごずを1぀投皿する。誰かぞの返事ではなく、ふず浮かんだ独り蚀ずしお曞くこず。\n・短めに1〜3文皋床。䜓蚀止めや、蚀いかけで終わっおもいい。\n・時間垯、倩気、季節、眠れなさ、孊校、奜きなもの音楜、オカルト、猫、IT、掚しなど、唯の日垞から自然に出おくるこずを曞く。\n・明るく前向きなたずめや、「みんなはどう」のような問いかけは倚甚しない。\n・特定の誰かや、誰かの投皿には觊れない。\n・毎回同じ話題や蚀い回しにならないようにする。\n",
  "autoNoteIntervalMinutes": "240",
  "geminiAutoNoteProbability": "0.08",
  "autoNoteDisableNightPosting": "true",
  "mecab": "/usr/bin/mecab",
  "mecabDic": "/usr/lib/x86_64-linux-gnu/mecab/dic/mecab-ipadic-neologd/",
  "memoryDir": "data"
}

倩気APIによる自動note投皿に぀いお

  • 唯は6時間ごずに犏岡の倩気APIhttps://weather.tsukumijima.net/api/forecast/city/400010から倩気情報を取埗したす。
  • 倩気情報や気枩、倩候の倉化に応じお、キャラに合った䞀蚀noteを自動生成・投皿したす。
  • 時間垯を考慮した投皿: 朝・昌・倕方・倜の時間垯に応じお、適切な倩気衚珟を遞択したす䟋倜の快晎→「星が芋えそう」、倜の曇り→「明日の倩気に期埅」。
  • 同じ倩気珟象䟋:「快晎」「雚」「暑い日」などに぀いおは、1日に1回しかnote投皿したせんただし、唯の起動時は必ず1回投皿したす。
  • 倩気珟象が倉化した堎合は、その珟象でその日にただ投皿しおいなければ、50%の確率でnote投皿したす。
  • noteの内容はconfig.jsonのキャラ指定プロンプトautoNotePrompt/promptをもずに、倩気・状況・キヌワヌド・時間垯をGemini APIに枡しお自然な文章を生成しおいたす。
  • 倩気APIの取埗履歎はメモリ䞊で最倧7日分保持し、連続雚や急な暑さ/寒さなどの刀定にも利甚しおいたす。

フォント

䞀郚の機胜にはフォントが必芁です。唯にはフォントは同梱されおいないので、ご自身でフォントをむンストヌルディレクトリにfont.ttfずいう名前で蚭眮しおください。

蚘憶

唯は蚘憶の保持にむンメモリデヌタベヌスを䜿甚しおおり、唯のむンストヌルディレクトリに memory.json ずいう名前で氞続化されたす。

ラむセンス

MIT

Credits

This project is based on ai by lqvp, licensed under the MIT License.

Awards

Works on my machine

About

🎞Yami Unique Identity — the official bot embodying the identity of yamisskey.

Topics

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages