우리 모두는 다양한 사이트를 방문할 때 챗봇을 접하게 되는데, 그 중 일부는 실제 인간 상호 작용을 기반으로 작동하고 다른 일부는 AI로 구동됩니다.
이 기사에서는 TensorFlow와 JavaScript를 사용하여 간단한 AI 기반 챗봇을 구축하는 방법을 살펴보겠습니다. 챗봇은 사용자 명령을 인식하고 미리 정의된 답변으로 응답합니다.
프로젝트 설정
먼저 프로젝트를 위한 새 디렉토리를 생성하고 npm으로 초기화합니다. 이 단계를 시작하기 전에 시스템에 Node.js가 설치되어 있는지 확인하세요.
mkdir chatbot cd chatbot npm init -y
필요한 패키지 설치
간단한 프로젝트에는 다음 npm 패키지를 사용합니다.
npm install @tensorflow/tfjs @tensorflow-models/universal sentence-encoder
인텐트 생성
intents.js라는 파일을 생성하여 인텐트/명령을 저장합니다. 이는 챗봇이 인식할 사용자 입력 카테고리(예: 인사말, 제품 문의, 주문 상태)입니다.
// intents.js const intents = { greeting: ["hello", "hi", "hey", "good morning", "good evening", "howdy"], goodbye: ["bye", "goodbye", "see you later", "farewell", "catch you later"], thanks: ["thank you", "thanks", "much appreciated", "thank you very much"], product_inquiry: ["tell me about your products", "what do you sell?", "product information", "what can I buy?", "show me your products"], order_status: ["where is my order?", "order status", "track my order", "order tracking", "order update"], shipping_info: ["shipping information", "how do you ship?", "shipping methods", "delivery options", "how long does shipping take?"], return_policy: ["return policy", "how to return?", "return process", "can I return?", "returns"], payment_methods: ["payment options", "how can I pay?", "payment methods", "available payments"], support_contact: ["contact support", "how to contact support?", "customer support contact", "support info", "customer service contact"], business_hours: ["business hours", "working hours", "when are you open?", "opening hours", "store hours"] }; module.exports = { intents }
응답 만들기
response.js라는 이름의 다른 파일을 만들어 미리 정의된 응답을 저장하세요. 이는 인식된 의도에 따라 챗봇이 제공할 사전 정의된 응답입니다.
// responses.js const responses = { greeting: "Hello! How can I help you today?", goodbye: "Goodbye! Have a great day!", thanks: "You're welcome! If you have any other questions, feel free to ask.", product_inquiry: "We offer a variety of products including electronics, books, clothing, and more. How can I assist you further?", order_status: "Please provide your order ID, and I will check the status for you.", shipping_info: "We offer various shipping methods including standard, express, and next-day delivery. Shipping times depend on the method chosen and your location.", return_policy: "Our return policy allows you to return products within 30 days of purchase. Please visit our returns page for detailed instructions.", payment_methods: "We accept multiple payment methods including credit/debit cards, PayPal, and bank transfers. Please choose the method that suits you best at checkout.", support_contact: "You can contact our support team via email at support@example.com or call us at 1-800-123-4567.", business_hours: "Our business hours are Monday to Friday, 9 AM to 5 PM. We are closed on weekends and public holidays." }; module.exports = { responses };
TensorFlow 및 문장 인코더 로드
chatbot.js라는 기본 스크립트 파일을 생성하고 필요한 라이브러리와 모델을 로드합니다. 범용 문장 인코더 모델을 비동기식으로 로드하고 모델이 로드되면 챗봇을 시작합니다.
// chatbot.js const tf = require('@tensorflow/tfjs'); const use = require('@tensorflow-models/universal-sentence-encoder'); const { intents } = require('./intents'); const { responses } = require('./responses'); const readline = require('readline'); // Load the Universal Sentence Encoder model let model; use.load().then((loadedModel) => { model = loadedModel; console.log("Model loaded"); startChatbot(); });
의도 인식 구현
사용자 입력 의도를 인식하는 기능을 추가하고, 범용 인코더를 사용하여 사용자 입력을 고차원 벡터에 삽입한 다음 의도를 기반으로 가장 높은 유사도 점수를 추적합니다.
async function recognizeIntent(userInput) { const userInputEmb = await model.embed([userInput]); let maxScore = -1; let recognizedIntent = null; for (const [intent, examples] of Object.entries(intents)) { // Embedding the example phrases for each intent & Calculating similarity scores between the user input embedding and the example embeddings const examplesEmb = await model.embed(examples); const scores = await tf.matMul(userInputEmb, examplesEmb, false, true).data(); const maxExampleScore = Math.max(...scores); if (maxExampleScore > maxScore) { maxScore = maxExampleScore; recognizedIntent = intent; } } return recognizedIntent; }
응답 생성
인식된 의도를 기반으로 응답을 생성하는 기능을 추가합니다.
async function generateResponse(userInput) { const intent = await recognizeIntent(userInput); if (intent && responses[intent]) { return responses[intent]; } else { return "I'm sorry, I don't understand that. Can you please rephrase?"; } }
챗봇 상호작용 구현
마지막으로 명령줄에서 사용자 입력을 읽고 사용자에게 입력을 요청하고 그에 따라 응답을 생성하기 위한 인터페이스를 설정하여 챗봇과의 상호 작용 루프를 구현합니다.
function startChatbot() { const rl = readline.createInterface({ input: process.stdin, output: process.stdout }); console.log("Welcome to the customer service chatbot! Type 'quit' to exit."); rl.prompt(); rl.on('line', async (line) => { const userInput = line.trim(); if (userInput.toLowerCase() === 'quit') { console.log("Chatbot: Goodbye!"); rl.close(); return; } const response = await generateResponse(userInput); console.log(`Chatbot: ${response}`); rl.prompt(); }); }
chatbot.js의 완성된 코드는 다음과 같습니다.
// chatbot.js const tf = require('@tensorflow/tfjs'); const use = require('@tensorflow-models/universal-sentence-encoder'); const { intents } = require('./intents'); const { responses } = require('./responses'); const readline = require('readline'); // Load the Universal Sentence Encoder model let model; use.load().then((loadedModel) => { model = loadedModel; console.log("Model loaded"); startChatbot(); }); async function recognizeIntent(userInput) { const userInputEmb = await model.embed([userInput]); let maxScore = -1; let recognizedIntent = null; for (const [intent, examples] of Object.entries(intents)) { const examplesEmb = await model.embed(examples); const scores = await tf.matMul(userInputEmb, examplesEmb, false, true).data(); const maxExampleScore = Math.max(...scores); if (maxExampleScore > maxScore) { maxScore = maxExampleScore; recognizedIntent = intent; } } return recognizedIntent; } async function generateResponse(userInput) { const intent = await recognizeIntent(userInput); if (intent && responses[intent]) { return responses[intent]; } else { return "I'm sorry, I don't understand that. Can you please rephrase?"; } } function startChatbot() { const rl = readline.createInterface({ input: process.stdin, output: process.stdout }); console.log("Welcome to the customer service chatbot! Type 'quit' to exit."); rl.prompt(); rl.on('line', async (line) => { const userInput = line.trim(); if (userInput.toLowerCase() === 'quit') { console.log("Chatbot: Goodbye!"); rl.close(); return; } const response = await generateResponse(userInput); console.log(`Chatbot: ${response}`); rl.prompt(); }); }
챗봇을 실행하려면 chatbot.js 파일을 실행하세요:
node chatbot.js
짜잔! 명령 출력에는 챗봇이 실행되어야 합니다.
이 기사에서는 TensorFlow와 JavaScript를 사용하여 간단한 고객 서비스 챗봇을 구축했습니다. 이 구현은 기본적이지만 보다 정교한 챗봇을 구축하기 위한 견고한 기반을 제공합니다. AXIOS를 사용하여 API를 통합하거나 더 많은 인텐트와 응답을 추가하거나 웹 플랫폼에 배포하여 이 프로젝트를 확장할 수 있습니다.
즐거운 코딩하세요!
?? 나에 대해 자세히 알아보세요
?? LinkedIn에 연결
?? 내 블로그 구독
위 내용은 TensorFlow와 JavaScript를 사용하여 기본 챗봇을 구축하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!