深度评测DeepSeek、ChatGPT O1和谷歌Gemini AI应用开发场景 - DeepSeek性能完胜!
下面我会展示我为期一周的实验结果,创作不宜,希望大家关注我,以后多多互3!前一阵我在互联网上看到很多关于DeepSeek R1的讨论,这个开源模型据说可以媲美,甚至优于像OpenAI o1这样的付费模型。
由于我在日常工作中广泛使用这些AI模型(主要在Cursor里使用这些AI),我决定看看哪个最适合代码开发。经过200次的Cursor实验后,我在这里和大家分享这次实验的结果。
实验配置
我从一个AI代码开排行榜 - lmarena中选择了前两名的模型,即Gemini-Exp-1206和OpenAI的o1,以及挑战者——DeepSeek R1作为对比。然后我设计了三个实用的编程场景来测试每个模型的能力:
1. 情绪追踪Web应用
主要功能包括:在日历上进行情绪记录、视觉化追踪情绪、图表数据可视化
2. 随机食谱生成器
主要功能包括集成MealDB API、食谱类别筛选、收藏夹管理
3. “打地鼠”游戏
主要内容有实时动画、添加音效、游戏的难度会递增
我是如何测试每个模型的?
我对所有三个AI开发场景都使用了相同的测试流程:
1. 编写简要需求文档
我列出了每个项目的核心功能,比如“使用日历API库”、“用本地存储保存数据”或“从外部API获取数据”等。
2. 让AI生成完整代码
我将需求文档提供给模型并等待代码生成结束。如果代码有Bug或缺少功能,我会提供具体的反馈(比如“情绪的颜色编码显示错误”),直到模型修正问题并达到可用状态。
3. 评分结果
当应用运行后,我按照提前制定好的评分表进行测试:比如主要功能是否正常?代码是否结构清晰?用户体验是否良好?最终我为每个模型给出了评分。
4. 结果对比
在完成所有三个应用的测试后,我整理了最终数据并统计得分。
代码生成流程
以下是一个我是用的示例PRD(产品需求文档):
---
name: "Mood Tracker"
about: "Modern mood tracking web app with data visualization"
date_created: "2025-01-26"
project_name: "MoodTracker"
tech_stack: ["NextJS 15", "TypeScript", "Shadcn", "Tailwind CSS", "Chart.js", "date-fns"]
version: "1.3"
---
# 🎯 Mood Tracker PRD
A modern web application for logging daily moods and visualizing emotional trends with charts.
---
## 1. **Success Criteria**
1. **Core Functionality**
- [ ] **Clickable Calendar**: Users can select a date to log or edit a mood entry.
- [ ] **Emoji & Note Input**: A modal or dialog with an emoji picker and text field.
- [ ] **Local Data Storage**: Persist mood entries between sessions.
- [ ] **Data Visualization**: At least two Chart.js charts to display weekly, monthly, or overall trends.
- [ ] **Mobile-Responsive**: Layout should adjust for smaller screens without major issues.
2. **Validation Checklist**
- [ ] **Build & Run**: Fresh `npm install && npm run dev` works without errors.
- [ ] **Calendar Interaction**: Clicking a calendar date opens the mood logging UI.
- [ ] **Color Coding**: Each date cell or icon changes based on mood score or emoji.
- [ ] **Chart Page**: A separate page or section to visualize stats (e.g., line chart + pie chart).
- [ ] **Data Persistence**: Entries remain available if the user navigates away and comes back later.
---
## 2. **Tech Stack**
- **NextJS 15** (App Router) for site structure
- **TypeScript** for type safety
- **Shadcn** UI components (dialogs, buttons, forms)
- **Tailwind CSS** for styling
- **Chart.js** for data visualization
- **date-fns** for date operations
- **localforage** (or equivalent) for local data storage
- **@emoji-mart/react** for an emoji picker
### **Why These Choices?**
- **NextJS + TypeScript**: Great for server/client flexibility and type safety
- **Shadcn + Tailwind**: Rapid UI development with consistent design
- **Chart.js**: Straightforward library for rendering charts
- **date-fns**: Lightweight date utilities
---
## 3. **Design & Mood Scores**
| MoodScore | Mood | Tailwind Color | Emoji |
|-----------|------------|----------------|-----------|
| 1 | Angry | `red-500` | 😡 |
| 2 | Sad | `orange-400` | 😞 |
| 3 | Neutral | `yellow-300` | 😐 |
| 4 | Happy | `lime-400` | 😊 |
| 5 | Ecstatic | `emerald-500` | 😄 |
> You can style each date cell background or display an icon to indicate the logged mood.
---
## 4. **User Stories**
1. **Daily Mood Logging**
- **As a user**, I want to quickly log how I feel each day so I can track my emotional journey.
- **Given** I click on a specific date
- **When** I choose an emoji and type a note
- **Then** the date on the calendar updates visually to reflect my mood
2. **Mood Analysis**
- **As a user**, I want to see a higher-level overview of my moods so I can spot trends.
- **Given** I navigate to a “Stats” page
- **When** I select a timeframe (weekly, monthly, etc.)
- **Then** I see at least two types of charts illustrating changes or distributions in my mood data
---
## 5. **Data Structures**
```typescript
export interface MoodEntry {
date: string; // e.g. "2025-01-23"
emoji: string; // e.g. "😊"
note: string;
moodScore: 1 | 2 | 3 | 4 | 5;
}
```
- Store mood entries in `lib/storage.ts` using local data storage (e.g., localforage).
- Components like `MoodCalendar` and `MoodChart` can import these entries to display logs.
### 6. File Structure
```
mood-tracker/
├── app/
│ ├── (dashboard)/
│ │ └── page.tsx # main calendar view
│ ├── stats/
│ │ └── page.tsx # charts & statistics
│ └── layout.tsx # global layout or shared UI
├── components/
│ ├── MoodCalendar.tsx
│ ├── MoodChart.tsx
│ └── EmojiPicker.tsx
├── lib/
│ ├── storage.ts
│ └── mood.ts # data types
└── styles/
└── globals.css
```
### 7. Additional Notes
- **Shadcn**: Ideal for modals (Dialog component), buttons, forms, etc.
- **Chart.js**: Use a line chart, bar chart, pie chart, or any combination to showcase data trends.
- **Optional**: You can add a hover tooltip on each calendar day to preview the note or emoji.
评测结果与分析
在计算性能得分(以获得的总分数占总分数的百分比)后,结果如下:
- DeepSeek R1:77.66%
- OpenAI o1:73.50%
- Gemini 2.0:71.24%
DeepSeek R1最终获得最高分,但是从结果数据中我们也可以看到所有模型的表现都还不错。话虽如此,我并不认为哪个模型是“万能工具”——每个模型都有其优势和劣势,下面我们具体分析。
各模型的优缺点深度解析
DeepSeek R1
优点
- 思考推理型模型(可以进行更深入的推理提升准确度)
- 高质量
- 生成能力强
- 稳定
- 免费
缺点
- 推理速度慢(长时间推理)
- 在Cursor AI中经常超时
- 在调试时有时会过度思考
OpenAI o1
优点
- 与Cursor AI集成良好
- 高质量
- 生成能力强
- 稳定
缺点
- 价格昂贵
- 不是思考推理型模型
- 调试提示词优化结果的能力不如Claude Sonnet
Gemini 2.0
优点
- 严格遵循指令
- 速度极快!
- 免费
缺点
- 生成能力较低
- 在Cursor AI中不支持思考和推理
- 需要非常具体的指令才能表现良好
额外测试的模型Claude Sonnet 3.5
优点
- 调试提示词优化结果的极强
- 运行速度快
- 稳定性好(表现一致,可靠)
缺点
- 生成能力较弱(相比“推理”类模型)
总结
在这次编程场景的测试中,DeepSeek R1以 77.66% 的最高分胜出,但OpenAI o1和Gemini 2.0的表现也并不差。在我们实际使用过程中,模型的选择往往取决于以下具体需求:
- 如果需要速度,Gemini的响应速度非常快。
- 如果需要更好的生成能力或更“拟人化”生成近似人类生成的响应,DeepSeek和o1都是不错的选择。
- 如果调试优化结果是首要任务,Claude Sonnet尽管没有参与本次的测试,但它的调试能力非常出色。
没有哪个模型是“万能神器”,选择合适的工具取决于预算、与大家正使用的IDE(如Cursor AI)的兼容性,还有性能需求。如果大家对这些模型有任何问题或使用经验,欢迎分享共同讨论!