# 炘灏AI - MAUI聊天应用
一个基于 **.NET MAUI** 开发的跨平台 AI 聊天应用,支持 **Android** 和 **iOS** 平台。
## 🌟 功能特性
- 🤖 **AI对话**:基于 Qwen2.5(72B) 大模型的智能对话
- 💬 **对话历史**:支持多会话管理,每个对话以用户第一句话命名
- 🌓 **主题切换**:支持浅色模式和深色模式
- 📱 **跨平台**:支持 Android 和 iOS 平台
- 🎨 **现代UI**:简洁高级的界面设计,带有科技感元素
- ⚡ **实时响应**:流畅的聊天体验
## 🛠 技术栈
| 类别 | 详情 |
|------------|-----------------------------------|
| 框架 | .NET MAUI 9.0 |
| 语言 | C# |
| AI 模型 | Qwen2.5(72B) |
| API | SiliconFlow API |
| UI 架构 | XAML + MVVM 架构 |
## 📁 项目结构
```
MauiApp1/
├── Models/
│ ├── ChatMessage.cs # 聊天消息模型
│ └── ChatSession.cs # 对话会话模型
├── Services/
│ ├── AIService.cs # AI 服务
│ ├── ThemeService.cs # 主题服务
│ └── ChatHistoryService.cs # 历史记录服务
├── ViewModels/
│ └── MainViewModel.cs # 主页面视图模型
├── Converters/
│ ├── BoolToThemeIconConverter.cs
│ ├── MessageTypeToVisibilityConverter.cs
│ └── StringToBoolConverter.cs
├── Resources/
│ ├── AppIcon/ # 应用图标
│ └── Splash/ # 启动画面
└── MainPage.xaml # 主页面
```
### 流式API调用
```csharp
// 使用Server-Sent Events (SSE) 流式响应
public async IAsyncEnumerable GetStreamingResponseAsync(string userMessage)
{
// 配置流式请求
var requestBody = new
{
model = "Qwen/Qwen2.5-72B-Instruct",
messages = new[] { new { role = "user", content = userMessage } },
stream = true // 启用流式输出
};
// 处理流式响应
while (!reader.EndOfStream)
{
var line = await reader.ReadLineAsync();
if (line.StartsWith("data: "))
{
var data = line.Substring(6);
if (data == "[DONE]") break;
var deltaContent = ParseStreamData(data);
if (!string.IsNullOrEmpty(deltaContent))
{
yield return deltaContent; // 逐字返回
}
}
}
}
```
## 🎮 使用体验
### 1. 启动应用
- 欢迎消息立即完整显示
- 无需等待加载动画
### 2. 发送消息
- 用户消息立即显示
- AI开始逐字回复
- 每个字符以50ms间隔出现
### 3. 流式效果
```
用户: 你好,请介绍一下自己
AI: 你[50ms]好[50ms]![50ms]我[50ms]是[50ms]炘[50ms]灏[50ms]AI[50ms]...
```
## 📊 性能优化
### 响应速度
- **首字延迟**: < 500ms
- **字符间隔**: 50ms
- **网络优化**: 流式传输,减少等待时间
### 内存管理
- **增量更新**: 只更新变化的内容
- **实时渲染**: 避免大量文本一次性渲染
- **资源释放**: 及时释放流式连接