gemma-multi-avatar / src /aiTopicPatch.js
bep40's picture
Add AI topic patch to gemma-multi-avatar (#8)
f3b0f00
Raw
History Blame
4.54 kB
const AI_TOPIC_PATCH_VERSION = "1.0.0";
function normalizeAiText(text) {
return (text || "")
.toLowerCase()
.replace(/\bai\b/g, " ai ")
.replace(/\ba\.i\b/g, " ai ")
.replace(/a i/g, " ai ")
.replace(/\bllm\b/g, " llm ")
.replace(/\bllms\b/g, " llms ")
.replace(/\bml\b/g, " ml ")
.replace(/\bdl\b/g, " dl ")
.replace(/\bgpt\b/g, " gpt ")
.replace(/\bgemini\b/g, " gemini ")
.replace(/\bqwen\b/g, " qwen ")
.replace(/\bclaude\b/g, " claude ")
.replace(/\bopenai\b/g, " openai ")
.replace(/\bchatgpt\b/g, " chatgpt ")
.replace(/\bdeep learning\b/g, " deep learning ")
.replace(/\bmachine learning\b/g, " machine learning ")
.replace(/\bgenerative ai\b/g, " generative ai ")
.replace(/\bgen ai\b/g, " gen ai ")
.replace(/\bcomputer vision\b/g, " computer vision ")
.replace(/\bnatural language processing\b/g, " natural language processing ")
.replace(/\bnlp\b/g, " nlp ")
.replace(/\brobotics\b/g, " robotics ")
.replace(/\brobot\b/g, " robot ")
.replace(/\bchatbot\b/g, " chatbot ")
.replace(/\bchat bot\b/g, " chatbot ")
.replace(/\btrí tuệ nhân tạo\b/g, " trí tuệ nhân tạo ")
.replace(/\bkhí cụ nhân tạo\b/g, " trí tuệ nhân tạo ")
.replace(/\bthông minh nhân tạo\b/g, " trí tuệ nhân tạo ")
.replace(/\bứng dụng ai\b/g, " ứng dụng ai ")
.replace(/\bdạy học ai\b/g, " dạy học ai ")
.replace(/\btạo ảnh bằng ai\b/g, " tạo ảnh bằng ai ")
.replace(/\btạo video bằng ai\b/g, " tạo video bằng ai ")
.replace(/\bchatbot ai\b/g, " chatbot ai ")
.replace(/\bAI\b/g, " ai ")
.replace(/\bLLM\b/g, " llm ")
.replace(/\bGPT\b/g, " gpt ")
.replace(/\bQwen\b/g, " qwen ")
.replace(/\bClaude\b/g, " claude ")
.replace(/\bOpenAI\b/g, " openai ")
.replace(/\bChatGPT\b/g, " chatgpt ")
.replace(/\bGemini\b/g, " gemini ")
.replace(/\bGenK\b/g, " genk ")
.replace(/\bKimi\b/g, " kimi ")
.replace(/\bKimi K3\b/g, " kimi k3 ")
.replace(/\bKimi k3\b/g, " kimi k3 ");
}
function detectAiTopic(text) {
const t = normalizeAiText(text);
const aiTerms = [
" trí tuệ nhân tạo ", " ai ", " artificial intelligence ", " machine learning ", " deep learning ",
" generative ai ", " gen ai ", " llm ", " llms ", " chatbot ", " chatgpt ", " openai ", " gpt ",
" gemini ", " qwen ", " claude ", " kimi ", " kimi k3 ", " nlp ", " natural language processing ",
" computer vision ", " robotics ", " robot ", " chatbot ai ", " ứng dụng ai ", " dạy học ai ",
" tạo ảnh bằng ai ", " tạo video bằng ai "
];
return aiTerms.some((term) => t.includes(term));
}
function escapeHtml(text) {
return String(text || "")
.replace(/&/g, "&")
.replace(/</g, "&lt;")
.replace(/>/g, "&gt;")
.replace(/"/g, "&quot;")
.replace(/'/g, "&#039;");
}
function renderAiTopicChip() {
if (document.getElementById("ai-topic-inline")) return;
const chatMessages = document.getElementById("chat-messages");
if (!chatMessages) return;
const wrap = document.createElement("div");
wrap.className = "topic-tags";
wrap.id = "ai-topic-inline";
const chip = document.createElement("button");
chip.type = "button";
chip.className = "topic-chip ai-topic-chip";
chip.textContent = "# AI";
chip.title = "Mở tin tức AI / trí tuệ nhân tạo";
chip.addEventListener("click", () => {
const chatInput = document.getElementById("chat-input");
if (chatInput) chatInput.value = "Tin tức AI, trí tuệ nhân tạo mới nhất";
const btn = document.getElementById("chat-send-btn");
if (btn) btn.click();
});
wrap.appendChild(chip);
chatMessages.appendChild(wrap);
chatMessages.scrollTop = chatMessages.scrollHeight;
}
function injectAiTopicIntoSearchContext(text) {
const original = text || "";
if (!detectAiTopic(original)) return original;
const aiText = `Chủ đề AI cần ưu tiên: tin tức AI, trí tuệ nhân tạo, machine learning, deep learning, chatbot, generative AI, LLM, Kimi, Qwen, Gemini, GPT, OpenAI, Claude, ứng dụng AI, tạo ảnh bằng AI, tạo video bằng AI.`;
if (original.includes(aiText)) return original;
return `${original}\n\n${aiText}`;
}
window.AiTopicPatch = {
version: AI_TOPIC_PATCH_VERSION,
detectAiTopic,
injectAiTopicIntoSearchContext,
renderAiTopicChip,
};
document.addEventListener("DOMContentLoaded", () => {
window.AiTopicPatch.renderAiTopicChip();
});