aunali0412-lang/Code-Alpha-AI-Chatbot
GitHub: aunali0412-lang/Code-Alpha-AI-Chatbot
基于 React + Express 构建的双层智能聊天机器人,通过 TF-IDF 本地 FAQ 匹配与 Gemini AI 回退实现自动问答。
Stars: 0 | Forks: 0
# CodeAlpha AI 聊天机器人
专为 **CodeAlpha 实习**计划打造的专业 AI 聊天机器人。提供类 ChatGPT 界面,支持基于 NLP 的常见问题解答 (FAQ) 匹配,并集成了 Google Gemini AI。
## 功能
- **类 ChatGPT 界面** — 深色/浅色主题、聊天气泡、头像、输入动画、自动滚动
- **侧边栏** — 按日期分组的聊天历史记录、清除/删除、折叠功能
- **NLP FAQ 匹配** — TF-IDF 向量化 + 余弦相似度(无需外部 ML 库)
- **Gemini AI** — 未匹配到 FAQ 时,自动回退调用 Gemini 2.5 Flash
- **流式响应** — 实时 SSE 流式传输,带打字效果
- **语音输入** — Web Speech API(麦克风输入)
- **文本转语音** — 使用浏览器语音合成功能朗读机器人回复
- **导出** — 将聊天记录下载为文本文件
- **响应式设计** — 兼容移动端和桌面端布局
## NLP 流水线
```
User Query
↓
Tokenization (split into words)
↓
Lowercase Conversion
↓
Stop-Word Removal (150+ stop words)
↓
TF-IDF Vectorization (per query + all FAQs)
↓
Cosine Similarity (query vs. each FAQ)
↓
Best Match (score ≥ 0.18 threshold)
↓
FAQ Answer ──OR── Gemini AI Fallback
```
## 项目结构
```
├── artifacts/
│ ├── api-server/ # Node.js/TypeScript backend (Express)
│ │ └── src/
│ │ ├── routes/
│ │ │ ├── gemini/ # Conversation + message endpoints
│ │ │ └── faq/ # NLP FAQ matching endpoint
│ │ └── lib/
│ │ ├── nlp.ts # TF-IDF cosine similarity engine
│ │ └── faqs.ts # FAQ dataset (40 entries)
│ └── chatbot/ # React + Vite frontend
│ └── src/
│ ├── components/ # Sidebar, MessageBubble, ChatInput, ChatArea
│ ├── hooks/ # useChat, useTheme
│ └── lib/ # utils (markdown parser, formatters)
├── java-src/ # Java source files (internship reference)
│ └── src/main/java/com/codealpha/chatbot/
│ ├── model/ # Message, Conversation, FaqEntry
│ ├── nlp/ # NlpEngine, FaqMatcher (TF-IDF)
│ ├── service/ # ChatService, GeminiService
│ └── controller/ # ChatController (MVC)
└── lib/
├── api-spec/ # OpenAPI specification
├── api-client-react/ # Generated React Query hooks
├── api-zod/ # Generated Zod validation schemas
└── db/ # Drizzle ORM schema (PostgreSQL)
```
## 在 Replit 上设置
1. 将您的 Gemini API key 添加到 Replit Secrets 中,命名为 `GEMINI_API_KEY`
2. 应用程序将通过配置好的工作流自动启动
3. 访问预览 URL 即可使用聊天机器人
## 技术栈
| 层级 | 技术 |
|-------|-----------|
| 前端 | React 19, Vite, TypeScript, Tailwind CSS |
| 后端 | Node.js 24, Express 5, TypeScript |
| 数据库 | PostgreSQL + Drizzle ORM |
| AI | Google Gemini 2.5 Flash (流式 SSE) |
| NLP | 自定义 TF-IDF + 余弦相似度 |
| API | OpenAPI 3.1 + Orval codegen |
| Java 参考 | Spring Boot 3, Java 17 (见 java-src/) |
## Java 参考实现
`java-src/` 目录包含用于实习评估的等效 Java 实现:
- `NlpEngine.java` — 分词、停用词移除、TF-IDF、余弦相似度
- `FaqMatcher.java` — 基于 TF-IDF 并带有阈值的 FAQ 匹配
- `GeminiService.java` — 使用 Java HttpClient 调用 Gemini API 并支持 SSE 流式传输
- `ChatService.java` — 协调 NLP + Gemini 的业务逻辑
- `ChatController.java` — MVC REST controller
## API Endpoints
| 方法 | Endpoint | 描述 |
|--------|----------|-------------|
| GET | `/api/gemini/conversations` | 列出所有对话 |
| POST | `/api/gemini/conversations` | 创建新对话 |
| GET | `/api/gemini/conversations/:id` | 获取对话及消息 |
| DELETE | `/api/gemini/conversations/:id` | 删除对话 |
| POST | `/api/gemini/conversations/:id/messages` | 发送消息 (SSE 流) |
| POST | `/api/faq/match` | NLP FAQ 匹配 |
| GET | `/api/faq/list` | 列出所有 FAQ |
标签:Gemini AI, JS文件枚举, MITM代理, React, Syscalls, TF-IDF, Web前端, 后端开发, 测试用例