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前端, 后端开发, 测试用例