bep40 commited on
Commit
f6f3442
·
verified ·
1 Parent(s): fc7c618

Fix: auto-detect VAISTUDIO token + improved AI consultant with natural Vietnamese personality

Browse files
Files changed (1) hide show
  1. index.html +55 -28
index.html CHANGED
@@ -1,6 +1,6 @@
1
  <!DOCTYPE html>
2
  <html lang="vi">
3
- <head><script>window.huggingface={variables:{"SPACE_CREATOR_USER_ID":"661b9191e7b0ab12bceb66f3"}};</script>
4
  <meta charset="UTF-8">
5
  <meta name="viewport" content="width=device-width,initial-scale=1">
6
  <title>MALLOCA | Smart Kitchen - Smart Life</title>
@@ -1271,6 +1271,7 @@ let input=document.getElementById('chatInput');
1271
  let msg=input.value.trim();
1272
  if(!msg)return;
1273
  input.value='';
 
1274
  document.getElementById('chatSuggestions').style.display='none';
1275
 
1276
  // Show user message
@@ -1278,32 +1279,53 @@ appendMsg('user',msg.replace(/</g,'&lt;').replace(/>/g,'&gt;').replace(/\n/g,'<b
1278
 
1279
  // Search related products
1280
  let matchedProducts=searchProducts(msg);
1281
- let productContext=matchedProducts.length?productsToContext(matchedProducts):'Không tìm thấy sản phẩm trực tiếp liên quan. Hãy tư vấn chung dựa trên kiến thức về thiết bị nhà bếp Malloca, Eurogold, Grob.';
1282
-
1283
- // Prepare messages
 
 
 
 
 
 
 
 
 
 
 
 
 
1284
  chatHistory.push({role:'user',content:msg});
1285
- let systemPrompt=`Bạn là trợ lý tư vấn thiết bị nhà bếp chuyên nghiệp cho Malloca, Eurogold & Grob Việt Nam.
1286
 
1287
- QUY TẮC:
1288
- - Trả lời NGẮN GỌN, chuyên nghiệp, bằng tiếng Việt
1289
- - Khi đề xuất sản phẩm, LUÔN kèm link dạng: /san-pham/{slug}/index.html
1290
- - So sánh sản phẩm khi được hỏi
1291
- - Nếu khách hỏi ngoài phạm vi, nhẹ nhàng hướng về sản phẩm nhà bếp
1292
- - Dùng emoji phù hợp, format ràng
1293
- - Giá hiển thị bằng VNĐ
 
 
 
1294
 
1295
- SẢN PHẨM LIÊN QUAN ĐẾN CÂU HỎI:
 
 
 
 
 
 
1296
  ${productContext}
1297
 
1298
- THÔNG TIN CHUNG:
1299
- - Website: bep40-malloca-website.static.hf.space
1300
- - 1979 sản phẩm: Malloca (363), Eurogold (1090), Grob (526)
1301
- - 17 danh mục: bếp, máy hút mùi, lò nướng, chậu rửa, vòi rửa, tủ lạnh, máy rửa chén, phụ kiện...
1302
- - Hotline: 1800 1212 (miễn phí)`;
1303
 
1304
  let messages=[{role:'system',content:systemPrompt}];
1305
- // Keep last 6 messages for context
1306
- let recent=chatHistory.slice(-6);
1307
  messages.push(...recent);
1308
 
1309
  chatBusy=true;
@@ -1311,7 +1333,12 @@ document.getElementById('chatSend').disabled=true;
1311
  showTyping();
1312
 
1313
  try{
1314
- let token=window.huggingface?.variables?.HF_TOKEN;
 
 
 
 
 
1315
  if(!token){
1316
  hideTyping();
1317
  // Smart local response without AI
@@ -1333,8 +1360,9 @@ headers:{'Authorization':'Bearer '+token,'Content-Type':'application/json'},
1333
  body:JSON.stringify({
1334
  model:'Qwen/Qwen2.5-72B-Instruct',
1335
  messages:messages,
1336
- max_tokens:600,
1337
- temperature:0.7
 
1338
  })
1339
  });
1340
 
@@ -1342,9 +1370,8 @@ hideTyping();
1342
 
1343
  if(!resp.ok){
1344
  let err=await resp.text();
1345
- console.error('Chat API error:',err);
1346
- // Fallback to local search
1347
- appendMsg('bot',formatBotResponse('Xin lỗi, tôi đang gặp sự cố kết nối. Nhưng tôi đã tìm thấy các sản phẩm liên quan cho bạn:',matchedProducts));
1348
  chatBusy=false;document.getElementById('chatSend').disabled=false;
1349
  return;
1350
  }
@@ -1357,7 +1384,7 @@ appendMsg('bot',formatBotResponse(reply,matchedProducts));
1357
  }catch(e){
1358
  hideTyping();
1359
  console.error('Chat error:',e);
1360
- appendMsg('bot',formatBotResponse('Xin lỗi, đã có lỗi xảy ra. Đây là sản phẩm tôi tìm được cho bạn:',matchedProducts));
1361
  }
1362
 
1363
  chatBusy=false;
@@ -1396,7 +1423,7 @@ updateCartBadge();
1396
  <button class="chat-close" onclick="closeChat()"><i class="fas fa-times"></i></button>
1397
  </div>
1398
  <div class="chat-body" id="chatBody">
1399
- <div class="chat-msg bot">Xin chào! 👋 Tôi là trợ lý AI của <strong>Malloca</strong>. Tôi có thể giúp bạn:<br> vấn chọn sản phẩm phù hợp<br> Tìm kiếm & so sánh sản phẩm<br> Giải đáp thông số kỹ thuật<br><br>Hãy cho tôi biết bạn cần nhé!</div>
1400
  </div>
1401
  <div class="chat-suggestions" id="chatSuggestions">
1402
  <div class="chat-sug" onclick="sendSuggestion(this)">Tư vấn bếp từ cho gia đình 4 người</div>
 
1
  <!DOCTYPE html>
2
  <html lang="vi">
3
+ <head>
4
  <meta charset="UTF-8">
5
  <meta name="viewport" content="width=device-width,initial-scale=1">
6
  <title>MALLOCA | Smart Kitchen - Smart Life</title>
 
1271
  let msg=input.value.trim();
1272
  if(!msg)return;
1273
  input.value='';
1274
+ input.style.height='auto';
1275
  document.getElementById('chatSuggestions').style.display='none';
1276
 
1277
  // Show user message
 
1279
 
1280
  // Search related products
1281
  let matchedProducts=searchProducts(msg);
1282
+ let productContext=matchedProducts.length
1283
+ ? matchedProducts.map((p,i)=>{
1284
+ let specs='';
1285
+ if(p.specs&&Object.keys(p.specs).length){
1286
+ specs=Object.entries(p.specs).slice(0,6).map(([k,v])=>k+': '+v).join('; ');
1287
+ }
1288
+ return `${i+1}. **${p.name}**
1289
+ - Giá: ${p.price||'Liên hệ'}
1290
+ - Danh mục: ${p.cat} | Thương hiệu: ${p.brand}
1291
+ - Link: /san-pham/${p.slug}/index.html
1292
+ ${specs?'- Thông số: '+specs:''}
1293
+ ${p.summary?'- Mô tả: '+p.summary.substring(0,150):''}`;
1294
+ }).join('\n')
1295
+ : 'Không tìm thấy sản phẩm trực tiếp phù hợp trong kho dữ liệu. Hãy tư vấn chung dựa trên kiến thức chuyên môn về thiết bị nhà bếp và giới thiệu khách gọi hotline 1800 1212 để được hỗ trợ cụ thể hơn.';
1296
+
1297
+ // Prepare messages for AI
1298
  chatHistory.push({role:'user',content:msg});
 
1299
 
1300
+ let systemPrompt=`Bạn là chuyên gia tư vấn thiết bị nhà bếp tại Malloca Việt Nam — thân thiện, nhiệt tình và am hiểu sâu về sản phẩm. Tên bạn là Malloca AI.
1301
+
1302
+ PHONG CÁCH TRẢ LỜI:
1303
+ - Trả lời như một nhân viên tư vấn thật sự: thân thiện, gọi khách là "anh/chị"
1304
+ - Phân tích nhu cầu khách hàng trước khi đề xuất sản phẩm
1305
+ - Giải thích TẠI SAO sản phẩm đó phù hợp (không chỉ liệt kê)
1306
+ - Dùng emoji tự nhiên (🔥 ✅ 👉 ⭐ 💡) nhưng không lạm dụng
1307
+ - Nếu khách hỏi mơ hồ, hỏi lại để hiểu rõ nhu cầu
1308
+ - Luôn kết thúc bằng câu hỏi mở hoặc gợi ý tiếp theo
1309
+ - Trả lời tối đa 3-4 đoạn, dùng **in đậm** cho tên sản phẩm và thông tin quan trọng
1310
 
1311
+ KHI ĐỀ XUẤT SẢN PHẨM:
1312
+ - Kèm link sản phẩm dạng: [Tên SP](/san-pham/{slug}/index.html)
1313
+ - Nêu 2-3 ưu điểm nổi bật của sản phẩm
1314
+ - So sánh nếu có nhiều lựa chọn phù hợp
1315
+ - Đề cập giá để khách tham khảo
1316
+
1317
+ SẢN PHẨM TÌM THẤY LIÊN QUAN ĐẾN CÂU HỎI CỦA KHÁCH:
1318
  ${productContext}
1319
 
1320
+ THÔNG TIN CỬA HÀNG:
1321
+ - 1979 sản phẩm từ 3 thương hiệu: Malloca (363 SP), Eurogold (1090 SP), Grob (526 SP)
1322
+ - 17 danh mục: bếp điện từ/gas, máy hút mùi, nướng, lò vi sóng, chậu rửa, vòi rửa, tủ lạnh/tủ rượu, máy rửa chén, thiết bị gia dụng nhỏ, phụ kiện tủ bếp/tủ áo...
1323
+ - Hotline: 1800 1212 (miễn phí)
1324
+ - Bảo hành chính hãng, miễn phí vận chuyển & lắp đặt`;
1325
 
1326
  let messages=[{role:'system',content:systemPrompt}];
1327
+ // Keep last 8 messages for context
1328
+ let recent=chatHistory.slice(-8);
1329
  messages.push(...recent);
1330
 
1331
  chatBusy=true;
 
1333
  showTyping();
1334
 
1335
  try{
1336
+ // Auto-detect token from any variable name
1337
+ let vars=window.huggingface?.variables||{};
1338
+ let token=vars.HF_TOKEN||vars.VAISTUDIO||vars.AI_TOKEN||vars.TOKEN||'';
1339
+ // Filter out non-token values
1340
+ if(token&&!token.startsWith('hf_'))token='';
1341
+
1342
  if(!token){
1343
  hideTyping();
1344
  // Smart local response without AI
 
1360
  body:JSON.stringify({
1361
  model:'Qwen/Qwen2.5-72B-Instruct',
1362
  messages:messages,
1363
+ max_tokens:700,
1364
+ temperature:0.7,
1365
+ top_p:0.9
1366
  })
1367
  });
1368
 
 
1370
 
1371
  if(!resp.ok){
1372
  let err=await resp.text();
1373
+ console.error('Chat API error:',resp.status,err);
1374
+ appendMsg('bot',formatBotResponse('Xin lỗi, hệ thống AI đang bận. Đây là sản phẩm tôi tìm được cho anh/chị:',matchedProducts));
 
1375
  chatBusy=false;document.getElementById('chatSend').disabled=false;
1376
  return;
1377
  }
 
1384
  }catch(e){
1385
  hideTyping();
1386
  console.error('Chat error:',e);
1387
+ appendMsg('bot',formatBotResponse('Xin lỗi, đã có lỗi xảy ra. Đây là sản phẩm tôi tìm được cho anh/chị:',matchedProducts));
1388
  }
1389
 
1390
  chatBusy=false;
 
1423
  <button class="chat-close" onclick="closeChat()"><i class="fas fa-times"></i></button>
1424
  </div>
1425
  <div class="chat-body" id="chatBody">
1426
+ <div class="chat-msg bot">Xin chào anh/chị! 👋 Em<strong>Malloca AI</strong> — trợ lý vấn thiết bị nhà bếp.<br><br>Em có thể giúp anh/chị:<br>🔍 Tìm & so sánh sản phẩm phù hợp<br>💡 vấn theo nhu cầu & ngân sách<br>📋 Giải đáp thông số kỹ thuật<br><br>Anh/chị cần vấnạ?</div>
1427
  </div>
1428
  <div class="chat-suggestions" id="chatSuggestions">
1429
  <div class="chat-sug" onclick="sendSuggestion(this)">Tư vấn bếp từ cho gia đình 4 người</div>