在 Vue 项目中引入通义千问(Qwen)AI 大模型,通常不是直接将大模型运行在前端(如浏览器端),因为大模型体积庞大、计算资源消耗高。实际做法是通过调用后端 API 接口与通义大模型进行交互。
下面是一个完整的集成方案:
一、整体架构设计
Vue 前端 <-> 后端服务 <-> 通义千问 API / 部署模型
- Vue 前端:发送请求给后端服务。
- 后端服务:作为中间层,接收前端请求,调用通义千问 API 或本地部署的大模型服务。
- 通义千问 API:阿里云百炼平台提供或自行部署的 Qwen 模型服务。
二、具体实现步骤
1. 获取通义千问 API 接入权限
前往 阿里云百炼平台 或 通义千问开源模型页面,获取以下信息:
- API Key
- Endpoint(API 地址)
- Model ID(如
qwen-max
,qwen-plus
等)
2. 后端接口开发(Node.js 示例)
创建一个 /api/ai
接口,用于调用通义千问:
js
// server.js
const express = require('express');
const axios = require('axios');
const app = express();
app.use(express.json());
app.post('/api/ai', async (req, res) => {
const { prompt } = req.body;
try {
const response = await axios.post(
'https://dashscope.aliyuncs.com/api/v1/services/aigc/text-generation/generation',
{
model: 'qwen-max',
input: {
prompt
}
},
{
headers: {
Authorization: `Bearer YOUR_API_KEY`,
'Content-Type': 'application/json'
}
}
);
res.json(response.data);
} catch (error) {
console.error(error);
res.status(500).json({ error: '调用 AI 模型失败' });
}
});
app.listen(3000, () => {
console.log('Server running on port 3000');
});
3. Vue 前端调用 AI 接口(组合式 API)
vue
<template>
<div>
<input v-model="question" placeholder="输入你的问题..." />
<button @click="askAI">提问</button>
<div v-if="response">{{ response }}</div>
</div>
</template>
<script setup>
import { ref } from 'vue';
import axios from 'axios';
const question = ref('');
const response = ref('');
async function askAI() {
if (!question.value) return;
try {
const res = await axios.post('/api/ai', { prompt: question.value });
response.value = res.data.output.text;
} catch (err) {
alert('调用失败,请重试');
}
}
</script>
三、安全建议
- 不要将 API Key 直接暴露在前端代码中,必须通过后端代理。
- 可对用户请求频率进行限制,防止滥用。
- 使用 HTTPS 加密通信。
四、可选:使用 Web Worker 或 SSE 实现流式响应
如果你希望实现"逐字输出"效果(类似 ChatGPT 的流式回复),可以使用 Server-Sent Events(SSE)协议,并结合 Vue 中的 EventSource
或 fetch + ReadableStream
实现。
五、部署建议
- 将后端部署在阿里云 ECS 或函数计算 FC 上,便于与 DashScope 对接。
- Vue 前端可通过 Nginx 或 CDN 部署。