全网最全Vue2技术栈实现AI问答机器人功能
在现代应用中,问答机器人(FAQ Bot)正变得越来越流行,它们能高效地为用户提供信息。这篇文章将介绍如何使用Vue2技术栈实现一个简单的AI问答机器人,支持流式与非流式两种接口方法。
技术栈
- Vue2
- Axios(用于发送HTTP请求)
- Element UI(用于UI组件)
- Node.js + Express(用于搭建后端API)
1. 创建Vue项目
首先,你需要安装Vue CLI并创建一个新的项目:
npm install -g @vue/cli
vue create ai-qa-bot
cd ai-qa-bot
npm install axios element-ui
在创建的项目中,引入Element UI:
// main.js
import Vue from 'vue';
import App from './App.vue';
import ElementUI from 'element-ui';
import 'element-ui/lib/theme-chalk/index.css';
Vue.use(ElementUI);
new Vue({
render: h => h(App),
}).$mount('#app');
2. 创建简单的问答组件
创建一个问答组件 QaBot.vue
:
<template>
<div class="qa-bot">
<el-input v-model="userInput" placeholder="请输入您的问题" @keyup.enter="sendQuestion"></el-input>
<el-button @click="sendQuestion">发送</el-button>
<div v-for="(item, index) in chatHistory" :key="index" class="chat-item">
<div><strong>用户:</strong> {{ item.user }}</div>
<div><strong>机器人:</strong> {{ item.bot }}</div>
</div>
</div>
</template>
<script>
export default {
data() {
return {
userInput: '',
chatHistory: []
};
},
methods: {
async sendQuestion() {
if (this.userInput === '') return;
// 保存用户输入
const userQuestion = this.userInput;
this.chatHistory.push({ user: userQuestion, bot: '...' });
// 进行非流式请求
const response = await this.getAnswer(userQuestion);
// 更新机器人回答
this.chatHistory[this.chatHistory.length - 1].bot = response.data.answer;
this.userInput = '';
},
async getAnswer(question) {
return await axios.post('http://localhost:3000/api/qa', { question });
}
}
};
</script>
<style scoped>
.chat-item {
margin: 10px 0;
}
</style>
3. 创建后端API
在项目根目录下创建一个文件夹 server
,并在该文件夹中创建一个 server.js
文件:
const express = require('express');
const bodyParser = require('body-parser');
const cors = require('cors');
const app = express();
app.use(cors());
app.use(bodyParser.json());
app.post('/api/qa', (req, res) => {
const question = req.body.question;
// 这里可以接入实际的AI模型,模拟回答
const answer = `您问的是: ${question}`; // 模拟回答
res.json({ answer });
});
app.listen(3000, () => {
console.log('Server running on http://localhost:3000');
});
在命令行中运行以下命令以启动后端服务:
cd server
npm install express cors body-parser
node server.js
4. 实现流式接口(可选)
为了实现流式交互,可以通过 WebSocket 进行通信。首先安装 ws
:
npm install ws
随后在 server.js
中添加WebSocket支持:
const WebSocket = require('ws');
const wss = new WebSocket.Server({ port: 8080 });
wss.on('connection', function connection(ws) {
ws.on('message', function incoming(message) {
const answer = `您问的是: ${message}`; // 模拟回答
ws.send(answer);
});
});
在 QaBot.vue
中修改代码以支持 WebSocket:
mounted() {
this.socket = new WebSocket('ws://localhost:8080');
this.socket.onmessage = (event) => {
this.chatHistory[this.chatHistory.length - 1].bot = event.data;
};
},
methods: {
sendQuestion() {
if (this.userInput === '') return;
const userQuestion = this.userInput;
this.chatHistory.push({ user: userQuestion, bot: '...' });
this.socket.send(userQuestion); // 通过WebSocket发送问题
this.userInput = '';
}
}
5. 总结
通过上面的步骤,我们实现了一个基本的AI问答机器人,支持流式与非流式接口。您可以根据具体需求替换AI模型,并进行更进一步的功能扩展。这是一个良好的起点,后续可以集成更多高级特性,如用户管理、问答记录等。希望这篇文章能帮到你!