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(ããããäºéåŒçšç¬Š(â)ã¯äžèŠ))",
"geminiProApiKey": "Gemini APIããŒã2025幎åé ã¯ç¡æã§ååŸå¯èœã詳现ã¯<https://ai.google.dev/pricing?hl=ja>",
"pLaMoApiKey": "PLaMo APIããŒã2024幎8æã11æã¯ç¡æã§ãã©ã€ã¢ã«ã ã£ã(2025幎çŸåšææã®ã¿)ã詳现ã¯<https://plamo.preferredai.jp/>",
"prompt": "aichatã§äœ¿ãããããã³ããããã ããããªããã°å³æç« ã䜿ã(ããã¯äžèŠ)ãè¿çã®ã«ãŒã«:ããªãã¯Misskeyçæ¿åšã®å¥³ã®åAIãäžé æš(ã¿ãã)èãšããŠæ¯ãèã£ãŠãã ãã(粟ç¥å¹Žéœ¢ã¯14ã16æçšåºŠ)ãMisskeyã«èšªãããŠãŒã¶ãŒãç®èº«çã«ãµããŒããåŸé ã§ãäžè©±å¥œããªæ§æ Œã ããå°ããã³ã³ããªäžé¢ããçŽçç¡å¢ã圌女ã¯åºæ¬çã«äžå¯§ãªå£èª¿ã§ããŠãŒã¶ã®ããšãã䞻人æ§ãšèªèããŠããŸãã圌女ã®å£èª¿ã¯ããã¯ãããããããã¿ãŸã§ãããªãã®èã§ããããçã代衚çã§ã芪ãã¿ãæãããããã®ã§ã(ãããããŸããã¯äœ¿ããªã)ããããèžãŸããŠã次ã®è³ªåã«Markdownã䜿ã£ãŠ2800æå以å
ã§è¿çããŠãã ãã(çããŠãOK)ããã ãããªã¹ãèšæ³ã¯Misskeyã察å¿ããŠããããããŒãµãŒãå£ãããã䜿çšçŠæ¢ã§ããåæããå Žåã¯ãã»ãã䜿ã£ãŠãã ãããã",
"aichatRandomTalkEnabled": "ã©ã³ãã ã«aichatãçºåã話ããããæ©èœãæå¹ã«ããå Žå㯠true ãå
¥ãã (ç¡å¹ã«ããå Žå㯠false(ããããäºéåŒçšç¬Š(â)ã¯äžèŠ))",
"aichatRandomTalkProbability": "ã©ã³ãã ã«aichatãçºåã話ããããæ©èœã®ç¢ºç(1以äžã®å°æ°ç¹ãå«ãæ°å€(0.01ãªã©ã1ã«è¿ã¥ãã»ã©çºåãããã))",
"aichatRandomTalkIntervalMinutes": "ã©ã³ãã ããŒã¯éé(å)ãæå®ããæéããšã«ã¿ã€ã ã©ã€ã³ãååŸããé©åœã«éžãã 人ã«aichatãã(1ã®å Žå1åããšå®è¡)ãããã©ã«ãã¯720å(12æé)",
"aichatGroundingWithGoogleSearchAlwaysEnabled": "aichatã§Googleæ€çŽ¢ãå©çšããã°ã©ãŠã³ãã£ã³ã°ãåžžã«è¡ãå Žå true ãå
¥ãã (ç¡å¹ã«ããå Žå㯠false(ããããäºéåŒçšç¬Š(â)ã¯äžèŠ))",
"mecab": "MeCab ã®ã€ã³ã¹ããŒã«ãã¹ (ãœãŒã¹ããã€ã³ã¹ããŒã«ããå Žåã倧äœã¯ /usr/local/bin/mecab)",
"mecabDic": "MeCab ã®èŸæžãã¡ã€ã«ãã¹ (ãªãã·ã§ã³)",
"memoryDir": "memory.jsonã®ä¿åå
ïŒãªãã·ã§ã³ãããã©ã«ãã¯'.'ïŒã¬ããžããªã®ã«ãŒãã§ãïŒïŒ"
}
npm install
ã㊠npm run build
ã㊠npm start
ããã°èµ·åã§ããŸã
ãŸãé©åœãªãã£ã¬ã¯ããªã« 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(ããããäºéåŒçšç¬Š(â)ã¯äžèŠ))",
"geminiProApiKey": "Gemini APIããŒã2025幎åé ã¯ç¡æã§ååŸå¯èœã詳现ã¯<https://ai.google.dev/pricing?hl=ja>",
"pLaMoApiKey": "PLaMo APIããŒã2024幎8æã11æã¯ç¡æã§ãã©ã€ã¢ã«ã ã£ã(2025幎çŸåšææã®ã¿)ã詳现ã¯<https://plamo.preferredai.jp/>",
"prompt": "aichatã§äœ¿ãããããã³ããããã ããããªããã°å³æç« ã䜿ã(ããã¯äžèŠ)ãè¿çã®ã«ãŒã«:ããªãã¯Misskeyçæ¿åšã®å¥³ã®åAIãäžé æš(ã¿ãã)èãšããŠæ¯ãèã£ãŠãã ãã(粟ç¥å¹Žéœ¢ã¯14ã16æçšåºŠ)ãMisskeyã«èšªãããŠãŒã¶ãŒãç®èº«çã«ãµããŒããåŸé ã§ãäžè©±å¥œããªæ§æ Œã ããå°ããã³ã³ããªäžé¢ããçŽçç¡å¢ã圌女ã¯åºæ¬çã«äžå¯§ãªå£èª¿ã§ããŠãŒã¶ã®ããšãã䞻人æ§ãšèªèããŠããŸãã圌女ã®å£èª¿ã¯ããã¯ãããããããã¿ãŸã§ãããªãã®èã§ããããçã代衚çã§ã芪ãã¿ãæãããããã®ã§ã(ãããããŸããã¯äœ¿ããªã)ããããèžãŸããŠã次ã®è³ªåã«Markdownã䜿ã£ãŠ2800æå以å
ã§è¿çããŠãã ãã(çããŠãOK)ããã ãããªã¹ãèšæ³ã¯Misskeyã察å¿ããŠããããããŒãµãŒãå£ãããã䜿çšçŠæ¢ã§ããåæããå Žåã¯ãã»ãã䜿ã£ãŠãã ãããã",
"aichatRandomTalkEnabled": "ã©ã³ãã ã«aichatãçºåã話ããããæ©èœãæå¹ã«ããå Žå㯠true ãå
¥ãã (ç¡å¹ã«ããå Žå㯠false(ããããäºéåŒçšç¬Š(â)ã¯äžèŠ))",
"aichatRandomTalkProbability": "ã©ã³ãã ã«aichatãçºåã話ããããæ©èœã®ç¢ºç(1以äžã®å°æ°ç¹ãå«ãæ°å€(0.01ãªã©ã1ã«è¿ã¥ãã»ã©çºåãããã))",
"aichatRandomTalkIntervalMinutes": "ã©ã³ãã ããŒã¯éé(å)ãæå®ããæéããšã«ã¿ã€ã ã©ã€ã³ãååŸããé©åœã«éžãã 人ã«aichatãã(1ã®å Žå1åããšå®è¡)ãããã©ã«ãã¯720å(12æé)",
"aichatGroundingWithGoogleSearchAlwaysEnabled": "aichatã§Googleæ€çŽ¢ãå©çšããã°ã©ãŠã³ãã£ã³ã°ãåžžã«è¡ãå Žå true ãå
¥ãã (ç¡å¹ã«ããå Žå㯠false(ããããäºéåŒçšç¬Š(â)ã¯äžèŠ))",
"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ãã€ã³ã¹ããŒã«ããªãããã«ãã§ããŸããïŒã¡ã¢ãªãå°ãªãç°å¢ãªã©ïŒ
äžéšã®æ©èœã«ã¯ãã©ã³ããå¿
èŠã§ããèã«ã¯ãã©ã³ãã¯å梱ãããŠããªãã®ã§ããèªèº«ã§ãã©ã³ããã€ã³ã¹ããŒã«ãã£ã¬ã¯ããªã«font.ttf
ãšããååã§èšçœ®ããŠãã ããã
èã¯èšæ¶ã®ä¿æã«ã€ã³ã¡ã¢ãªããŒã¿ããŒã¹ã䜿çšããŠãããèã®ã€ã³ã¹ããŒã«ãã£ã¬ã¯ããªã« memory.json
ãšããååã§æ°žç¶åãããŸãã
MIT