vue实现ai对话功能
Vue 实现 AI 对话功能
安装必要依赖
确保项目已集成 axios 或 fetch 用于 HTTP 请求,若需语音交互可添加 Web Speech API 相关库。
npm install axios
前端界面设计
使用 Vue 组件构建聊天界面,包含消息列表和输入框。

<template>
<div class="chat-container">
<div v-for="(msg, index) in messages" :key="index" :class="msg.sender">
{{ msg.text }}
</div>
<input v-model="userInput" @keyup.enter="sendMessage" placeholder="输入消息..."/>
</div>
</template>
对接 AI 接口
调用第三方 API(如 OpenAI 或自定义后端服务)处理用户输入。

methods: {
async sendMessage() {
this.messages.push({ sender: 'user', text: this.userInput });
const response = await axios.post('https://api.openai.com/v1/chat/completions', {
model: "gpt-3.5-turbo",
messages: [{ role: "user", content: this.userInput }]
}, {
headers: { Authorization: `Bearer YOUR_API_KEY` }
});
this.messages.push({ sender: 'ai', text: response.data.choices[0].message.content });
this.userInput = '';
}
}
状态管理
使用 Vuex 或 Pinia 管理对话历史状态(可选)。
// Pinia 示例
import { defineStore } from 'pinia';
export const useChatStore = defineStore('chat', {
state: () => ({ messages: [] })
});
流式响应处理
若需实现逐字打印效果,使用 SSE 或 WebSocket。
const eventSource = new EventSource('your-stream-endpoint');
eventSource.onmessage = (event) => {
this.messages[this.messages.length - 1].text += event.data;
};
注意事项
- 敏感信息(如 API Key)应通过后端转发,避免前端暴露。
- 添加加载状态和错误处理。
- 移动端需考虑输入框被键盘遮挡的问题。






