AI灵魂测试:SBTI揭秘真实人格

张开发
2026/4/15 12:08:38 15 分钟阅读

分享文章

AI灵魂测试:SBTI揭秘真实人格
## 项目简介SBTI (Soul-Based Type Indicator) 是一个基于 AI 的人格测试系统使用 Next.js 15 NestJS Gemini 1.5 构建。与传统的 MBTI 不同SBTI通过分析用户的潜意识反应、答题犹豫时长和情绪逻辑生成更真实的人格报告。## 技术架构### 前端技术栈- **Next.js 15** - React 框架使用 App Router- **TypeScript** - 类型安全- **Tailwind CSS** - 原子化 CSS- **shadcn/ui** - 组件库- **next-intl** - 国际化- **Framer Motion** - 动画### 后端技术栈- **NestJS** - Node.js 框架- **Prisma** - ORM- **SQLite** - 数据库- **Google Gemini 1.5** - AI 模型### 部署- **Vercel** - 前端部署- **Railway** - 后端部署## 核心功能实现### 1. 答题时长追踪typescript// 前端实现const [startTime, setStartTime] useStatenumber(Date.now());const handleAnswer (answer: string) {const hesitationTime Date.now() - startTime;// 记录犹豫时长recordHesitation(currentQuestion.id, hesitationTime);// 重置计时器setStartTime(Date.now());};2. Gemini 1.5 集成// 后端实现import { GoogleGenerativeAI } from google/generative-ai;const genAI new GoogleGenerativeAI(process.env.GEMINI_API_KEY);async function analyzePersonality(data: TestData) {const model genAI.getGenerativeModel({model: gemini-1.5-pro});const prompt buildAnalysisPrompt(data);const result await model.generateContent(prompt);const response await result.response;return response.text();}3. 数据库设计// schema.prismamodel User {id String id default(cuid())email String? uniquename String?createdAt DateTime default(now())testResults TestResult[]}model TestResult {id String id default(cuid())userId String?personalityType Stringanswers JsonhesitationData JsonaiAnalysis String db.TextcreatedAt DateTime default(now())user User? relation(fields: [userId], references: [id])}model PersonalityType {id String id default(cuid())code String unique // ATM-er, BOSS, etc.name Stringdescription String db.Texttraits Json}4. API 设计// NestJS ControllerController(test)export class TestController {constructor(private readonly testService: TestService) {}Post(submit)async submitTest(Body() data: TestSubmitDto) {// 1. 验证数据const validated await this.validateTestData(data);// 2. 调用 Gemini 分析const analysis await this.testService.analyzeWithAI(validated);// 3. 保存结果const result await this.testService.saveResult(analysis);// 4. 返回报告return this.testService.generateReport(result);}}AI 分析逻辑分析维度1. 答案内容分析- 选项倾向性- 价值观判断- 行为模式2. 犹豫时长分析- 快速回答 ( 2s) - 本能反应- 正常思考 (2-5s) - 理性判断- 长时间犹豫 ( 5s) - 内心冲突3. 情绪逻辑推理- 前后答案一致性- 矛盾选项分析- 潜意识动机Prompt 工程function buildAnalysisPrompt(data: TestData): string {return 你是一位专业的心理分析师。请基于以下数据分析用户的人格特征## 测试数据- 答案: ${JSON.stringify(data.answers)}- 犹豫时长: ${JSON.stringify(data.hesitationTimes)}- 答题模式: ${data.patterns}## 分析要求1. 从潜意识层、情绪逻辑层、价值观层三个维度分析2. 识别用户的核心动机和恐惧3. 判断最匹配的人格原型27种之一4. 生成 1000 字左右的详细报告## 27种人格原型${PERSONALITY_TYPES.map(t \- ${t.code}: ${t.name}\).join(\n)}请以 JSON 格式返回分析结果。;}27 种人格原型系统定义了 27 种独特的人格原型每种都有详细的特征描述┌────────┬────────┬──────────────────────┐│ 代码 │ 名称 │ 核心特征 │├────────┼────────┼──────────────────────┤│ ATM-er │ 送钱者 │ 为他人付出的慷慨灵魂 │├────────┼────────┼──────────────────────┤│ BOSS │ 领导者 │ 天生的掌控者 │├────────┼────────┼──────────────────────┤│ CTRL │ 拿捏者 │ 精准把握人心 │├────────┼────────┼──────────────────────┤│ DRUNK │ 酒鬼 │ 用酒精逃避现实 │├────────┼────────┼──────────────────────┤│ IMFW │ 废物 │ 接纳自己的不完美 │├────────┼────────┼──────────────────────┤│ JOKE-R │ 小丑 │ 用幽默化解尴尬 │├────────┼────────┼──────────────────────┤│ MALO │ 吗喽 │ 甘愿做配角的人 │├────────┼────────┼──────────────────────┤│ SOLO │ 孤儿 │ 享受孤独的灵魂 │├────────┼────────┼──────────────────────┤│ ... │ ... │ ... │└────────┴────────┴──────────────────────┘性能优化1. 服务端渲染// app/[locale]/page.tsxexport default async function HomePage({params: { locale }}: {params: { locale: string }}) {// 服务端获取数据const data await fetchData();return HomeContent data{data} /;}2. 静态生成// 生成所有人格类型页面export async function generateStaticParams() {const types await prisma.personalityType.findMany();return types.map(type ({slug: type.code.toLowerCase(),}));}3. 图片优化import Image from next/image;Imagesrc/personality-types.pngalt27 Personality Typeswidth{1200}height{630}priority/4. API 缓存// 缓存 Gemini 响应const cache new Mapstring, string();async function getCachedAnalysis(key: string, fn: () Promisestring) {if (cache.has(key)) {return cache.get(key);}const result await fn();cache.set(key, result);return result;}SEO 优化1. 元数据export const metadata: Metadata {title: SBTI 人格测试 - 比 MBTI 更真实的灵魂分析,description: 通过 AI 驱动的深度分析发现你的真实人格,openGraph: {title: SBTI 人格测试,description: 27 种人格原型找到真实的自己,images: [/og-image.png],},};2. 结构化数据const jsonLd {context: https://schema.org,type: WebApplication,name: SBTI 人格测试,description: AI 驱动的人格分析系统,url: https://sbtisoul.com,};3. Sitemap// app/sitemap.tsexport default async function sitemap(): PromiseMetadataRoute.Sitemap {const types await prisma.personalityType.findMany();return [{ url: https://sbtisoul.com, changeFrequency: daily },{ url: https://sbtisoul.com/test, changeFrequency: weekly },...types.map(type ({url: \https://sbtisoul.com/personality/${type.code}\,changeFrequency: monthly,})),];}博客系统已发布 32 篇文章- 5 篇深度技术/产品文章- 27 篇人格类型解读技术实现- Markdown 渲染- 代码高亮- 目录生成- SEO 优化部署流程前端部署Vercel# 1. 安装 Vercel CLInpm i -g vercel# 2. 部署vercel --prod后端部署Railway# 1. 安装 Railway CLInpm i -g railway/cli# 2. 登录railway login# 3. 部署railway up未来计划- 开源代码- 添加更多人格类型- 支持多语言日语、韩语- 移动端 App- 社交分享功能- 人格匹配系统---技术交流如果对实现细节感兴趣欢迎留言讨论。话题标签#人格测试 #AI #Gemini #Next.js #NestJS #全栈开发---

更多文章