前言
最近这几年,个人投资者对智能化、个性化的投资顾问服务需求日益增长。传统的投资顾问服务存在门槛高、成本大、效率低等问题,无法满足普通投资者的需求。同时,人工智能技术的进步为金融服务提供了新的可能性,可以通过智能算法和大数据分析为用户提供便捷、专业的投资建议。
本文将聚焦 DevUI 的 MateChat 前端智能化场景UI库,结合其在证券智能投顾系统中的实际应用,从功能完整性、开发体验、性能表现及扩展性等维度,对其进行全面测评。
为什么选择 MateChat?
在构建具备 AI 对话能力的智能投顾系统时,开发者面临两大核心挑战:
- 快速搭建专业、美观的聊天界面
- 无缝集成流式 AI 接口(如 DeepSeek、OpenAI)
传统方案往往需要自行实现消息气泡、输入框、滚动定位、加载状态等基础功能,开发成本高且易出错。而MateChat 作为 DevUI生态中专为 AI 聊天场景设计的组件库,恰好解决了上述痛点。
核心优势概览:
- 开箱即用的聊天布局(McLayout、McHeader、McLayoutSender)
- 支持用户/模型双角色消息展示(McBubble)
- 内置引导提示(McPrompt)与欢迎页(McIntroduction)
- 与 Vue 3 + TypeScript 高度兼容
- 轻量、无冗余依赖,易于定制

技术方案与架构设计
技术栈选择
|----------------|-----------------------|-------------------|--------|
| 技术/框架 | 版本 | 用途 | 来源 |
| Vue.js | 3.5.24 | 前端框架 | |
| TypeScript | 5.9.3 | 类型安全的JavaScript超集 | |
| Vite | 7.2.2 (rolldown-vite) | 构建工具 | |
| vue-devui | 1.6.34 | UI组件库 | |
| @matechat/core | 1.10.0 | 聊天功能支持 | |
| OpenAI API | - | AI对话功能 | |
| DeepSeek API | - | 流式响应处理 | |
系统架构
系统采用前端单页应用(SPA)架构,基于Vue 3的Composition API和TypeScript构建。整体架构清晰,分为以下几个层次:
- 展示层:使用Vue 3的单文件组件(SFC)实现用户界面
- 组件层:包含智能咨询、股票分析、投资组合管理、风险评估等核心功能组件
- 数据层:使用Vue的响应式系统管理应用状态
- API交互层:与外部AI服务(OpenAI/DeepSeek)进行通信
项目结构
项目采用典型的Vue 3 + TypeScript + Vite项目结构,核心功能组件位于src/components目录下:
├── src/
│ ├── components/ # 功能组件
│ │ ├── PortfolioManagement.vue # 投资组合管理
│ │ ├── RiskAssessment.vue # 风险评估
│ │ └── StockAnalysisChart.vue # 股票分析
│ ├── App.vue # 应用主组件
│ └── main.ts # 应用入口
├── package.json # 项目配置和依赖
├── vite.config.ts # Vite配置
└── tsconfig.json # TypeScript配置
CLI创建项目
可通过如下命令创建一个应用:
// npm
npm create matechat@latest
// pnpm
pnpm create matechat@latest
这一指令会安装并执行create-matechat,你将会看到一些创建提示:
Please input the project name: matechat-project
Please select the template: Vue Starter
应用创建完成后通过以下命令安装依赖并启动开发:
cd <your-project-name>
npm i
npm run dev
默认情况下,应用内容如下:

功能模块与实现细节
智能咨询模块
功能概述
智能咨询模块是系统的核心功能,基于MateChat实现,通过AI提供专业的投资建议和市场分析。用户可以通过聊天界面与AI进行交互,获取个性化的投资咨询服务。
技术实现
- MateChat集成 :系统集成了
@matechat/core库,提供完整的聊天功能支持 - 聊天界面实现 :使用
McLayout构建整体布局,McBubble组件展示聊天消息,McLayoutSender提供布局组件,使用McInput提供输入框界面。 - AI接口集成 :
- 使用DeepSeek API处理流式响应,提供实时交互体验
- API配置从环境变量读取,保障安全性
- 流式响应处理:实现JSON解析、内容累积和错误处理,确保用户体验流畅
- 对话管理:支持创建新对话,重置聊天历史
- 提示词工程:精心设计的提示词确保AI回复符合证券投顾系统的专业性和合规性要求
核心代码实现
1. MateChat集成配置
首先在项目入口文件main.ts中集成MateChat:
import { createApp } from 'vue';
import App from './App.vue';
import MateChat from '@matechat/core';
import DevUI from 'vue-devui';
import 'vue-devui/style.css';
import '@devui-design/icons/icomoon/devui-icon.css';
createApp(App).use(MateChat).use(DevUI).mount('#app');
2. 聊天界面组件实现
在App.vue中实现聊天界面布局和交互组件:
<template>
<McLayout class="container">
<McHeader :title="'证券智能投顾'" :logoImg="''">
<template #operationArea>
<div class="operations">
<i class="icon-helping"></i>
</div>
</template>
</McHeader>
<!-- 导航菜单 -->
<div class="navigation-tabs">
<div
class="tab-item"
:class="{ active: currentTab === 'chat' }"
@click="switchTab('chat')"
>
<i class="icon-chat-line"></i>
<span>智能咨询</span>
</div>
<!-- 其他导航标签 -->
</div>
<!-- 内容区域 -->
<McLayoutContent class="content-container">
<!-- 聊天界面 -->
<template v-if="currentTab === 'chat'">
<div v-if="startPage" style="display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 12px; padding: 20px;">
<McIntroduction
:logoImg="''"
:title="'证券智能投顾'"
:subTitle="'您好,欢迎使用证券智能投顾服务'"
:description="description"
></McIntroduction>
<McPrompt
:list="introPrompt.list"
:direction="introPrompt.direction"
class="intro-prompt"
@itemClick="onSubmit($event.label)"
></McPrompt>
</div>
<div v-else>
<template v-for="(msg, idx) in messages" :key="idx">
<McBubble
v-if="msg.from === 'user'"
:content="msg.content"
:align="'right'"
:avatarConfig="{ imgSrc: 'https://via.placeholder.com/40x40?text=User' }"
>
</McBubble>
<McBubble v-else :content="msg.content" :avatarConfig="{ imgSrc: 'https://via.placeholder.com/40x40?text=Advisor' }" :loading="msg.loading"> </McBubble>
</template>
</div>
</template>
</McLayoutContent>
<!-- 聊天输入区域 -->
<div v-if="currentTab === 'chat'" class="chat-input-area">
<McLayoutSender>
<McInput :value="inputValue" :maxLength="2000" @change="(e: string) => (inputValue = e)" @submit="onSubmit">
<!-- 输入框附加内容 -->
</McInput>
</McLayoutSender>
</div>
</McLayout>
</template>
3. 消息发送与处理逻辑
const onSubmit = (evt: Event) => {
evt.preventDefault();
if (!inputValue.value.trim()) return;
const userMessage = inputValue.value.trim();
inputValue.value = '';
startPage.value = false;
messages.value.push({
from: 'user',
content: userMessage,
avatarConfig: { name: 'user' },
});
fetchData(userMessage);
};
// 创建新对话
const newConversation = () => {
startPage.value = true;
messages.value = [];
}
4. DeepSeek API集成与流式响应处理
const fetchData = async (ques: string) => {
messages.value.push({
from: 'model',
content: '',
avatarConfig: { name: 'model' },
id: '',
loading: true,
});
try {
// 使用fetch API直接调用DeepSeek API,避免OpenAI SDK版本兼容性问题
const response = await fetch(import.meta.env.VITE_DEEPSEEK_BASE_URL + '/chat/completions', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': `Bearer ${import.meta.env.VITE_DEEPSEEK_API_KEY}`
},
body: JSON.stringify({
model: 'deepseek-reasoner',
messages: [
{
role: 'system',
content: '你是一名专业的证券智能投顾,负责为投资者提供股票分析、投资组合管理、市场趋势分析、风险评估等证券投资咨询服务。请使用专业、客观的语言回答客户问题,提供有价值的投资参考信息。请务必在回答中包含风险提示:"投资有风险,入市需谨慎"。如果遇到不确定的问题或超出能力范围的问题,请明确告知用户并建议其咨询专业的证券顾问。'
},
{ role: 'user', content: ques }
],
stream: true
})
});
if (!response.ok) {
throw new Error(`HTTP error! status: ${response.status}`);
}
messages.value[messages.value.length - 1].loading = false;
// 处理流式响应
const reader = response.body?.getReader();
if (!reader) {
throw new Error('No response body');
}
const decoder = new TextDecoder('utf-8');
let accumulatedContent = '';
let chatId = '';
while (true) {
const { done, value } = await reader.read();
if (done) break;
const chunk = decoder.decode(value, { stream: true });
const lines = chunk.split('\n').filter(line => line.trim() !== '');
for (const line of lines) {
if (line.startsWith('data: ')) {
const data = line.substring(6);
if (data === '[DONE]') {
break;
}
try {
const json = JSON.parse(data);
if (json.id) {
chatId = json.id;
messages.value[messages.value.length - 1].id = chatId;
}
if (json.choices && json.choices.length > 0) {
const delta = json.choices[0].delta;
if (delta && delta.content) {
accumulatedContent += delta.content;
messages.value[messages.value.length - 1].content = accumulatedContent;
}
}
} catch (e) {
console.error('解析流式数据错误:', e);
}
}
}
}
} catch (error) {
console.error('DeepSeek API调用错误:', error);
messages.value[messages.value.length - 1].content = '抱歉,模型调用失败,请稍后重试。';
messages.value[messages.value.length - 1].loading = false;
}
};
5. 提示词配置与预设问题
// 系统介绍描述
const description = [
'证券智能投顾可以为您提供股票分析、投资组合管理、市场趋势分析、风险评估等证券投资咨询服务。',
'作为智能投顾,我们将竭诚为您提供专业、高效的投资建议,但请注意投资有风险,入市需谨慎。',
];
// 引导提示词
const introPrompt = {
direction: 'horizontal',
list: [
{
value: 'stockAnalysis',
label: '股票分析方法',
iconConfig: { name: 'icon-info-o', color: '#5e7ce0' },
desc: '如何分析股票基本面和技术面',
},
{
value: 'portfolioManagement',
label: '投资组合管理',
iconConfig: { name: 'icon-star', color: 'rgb(255, 215, 0)' },
desc: '如何构建和优化投资组合',
},
{
value: 'riskAssessment',
label: '风险评估方法',
iconConfig: { name: 'icon-priority', color: '#3ac295' },
desc: '投资风险评估和管理策略',
},
],
};
通过以上代码实现,可以看到MateChat在智能咨询模块中起到了核心作用,提供了完整的聊天界面和交互体验,同时DeepSeek API的流式响应处理实现了实时的AI对话效果。系统设计充分考虑了用户体验、安全性和功能完整性,确保了智能投顾服务的专业性和可用性。
股票分析模块
功能概述
股票分析模块提供股票搜索、数据展示和趋势分析功能,帮助用户快速了解股票行情和市场走势。
技术实现
- 股票搜索功能:实现模糊搜索和结果展示,支持代码和名称搜索
- 数据可视化:使用简化的柱状图展示历史价格走势
- 智能分析功能:提供趋势分析、股票对比和相关新闻功能入口
- 模拟数据生成:实现历史数据生成算法,确保数据的真实性和可用性
核心数据结构
interface StockData {
name: string;
code: string;
currentPrice: number;
openPrice: number;
highPrice: number;
lowPrice: number;
change: number;
changePercent: number;
volume: number;
historyData: { date: string; open: number; close: number; high: number; low: number; volume: number }[];
}
投资组合管理模块
功能概述
投资组合管理模块帮助用户记录和管理个人投资组合,包括持仓管理、资产配置分析和收益计算功能。
技术实现
- 投资组合概览:展示总市值、日收益等关键指标
- 持仓明细管理:支持添加、编辑、删除和搜索持仓
- 资产配置分析:可视化展示不同资产类别的配置比例
- 盈亏计算:自动计算各持仓和整体组合的盈亏情况
- 数据持久化:模拟数据存储和导出功能
核心功能实现
// 更新投资组合汇总数据
const updatePortfolioSummary = () => {
const totalValue = portfolio.value.holdings.reduce((sum, stock) => sum + stock.marketValue, 0);
const previousValue = totalValue - portfolio.value.totalChange;
portfolio.value.totalValue = Number(totalValue.toFixed(2));
portfolio.value.totalChange = Number((totalValue - previousValue * 0.97).toFixed(2));
portfolio.value.totalChangePercent = Number((portfolio.value.totalChange / previousValue * 100).toFixed(2));
};
// 保存持仓
const saveHolding = () => {
// 验证表单
// 计算市场价值和盈亏
// 更新或添加持仓
// 更新汇总数据
};
风险评估模块
功能概述
风险评估模块通过问卷调查形式评估用户的风险承受能力,根据评分结果提供相应的投资建议和资产配置策略。
技术实现
- 问卷设计:包含年龄段、投资经验、风险承受能力、投资目标和投资期限5个维度的问题
- 评分机制:采用1-5分的评分标准,根据总分划分风险等级
- 风险等级:将用户分为保守型、稳健型、平衡型、成长型和进取型5个等级
- 个性化建议:根据风险等级提供针对性的投资策略和资产配置建议
- 风险提示:包含合规的风险提示信息
核心评分逻辑
// 风险等级计算
const riskLevelText = computed(() => {
if (totalScore.value <= 5) return '保守型';
if (totalScore.value <= 10) return '稳健型';
if (totalScore.value <= 15) return '平衡型';
if (totalScore.value <= 20) return '成长型';
return '进取型';
});
// 投资建议生成
const riskRecommendations = computed(() => {
switch (riskLevelText.value) {
case '保守型':
return [
'建议配置70%以上的低风险产品,如国债、货币基金等',
'少量配置蓝筹股和高评级债券',
'避免投资高风险的股票和衍生品',
'定期定额投资,分散风险'
];
// 其他风险等级的建议...
}
});
落地效果与性能表现
功能实现效果
- 智能咨询功能:成功集成OpenAI和DeepSeek API,实现了流畅的AI对话体验,能够提供专业的投资建议

- 股票分析功能:实现了股票搜索、数据展示和可视化分析功能,用户可以快速了解股票行情

- 投资组合管理:提供了完整的持仓管理和资产配置分析功能,满足用户日常投资管理需求

- 风险评估系统:通过多维度问卷评估用户风险偏好,提供个性化的投资建议

性能测试结果
- 开发环境运行 :
- 开发服务器启动时间:约218毫秒
- 访问地址:http://localhost:5173/
- 浏览器兼容性:在主流浏览器中运行正常,无明显错误
- 构建性能 :
- 类型检查:Vue-tsc类型检查通过,无TypeScript错误
- 生产构建:构建过程中存在问题,需要进一步优化
总结
DevUI MateChat 是一款面向 AI 对话场景高度优化的前端组件库。它在保持轻量的同时,提供了专业、完整且易于集成的聊天界面解决方案,特别适合以下场景:
- 智能客服 / 智能投顾 / 教育助手等 AI 应用
- 需要快速原型验证的 MVP 项目
- 追求开发效率与一致 UX 的中后台产品
尽管在富交互和国际化方面仍有提升空间,但其当前版本已能显著降低 AI 应用的前端开发门槛。对于正在构建下一代人机对话界面的团队而言,MateChat 无疑是一个值得优先考虑的技术选型。
完整项目已上传GitCodehttps://gitcode.com/weixin_50843918/DevUI3
欢迎大家体验