From 8e52b36777b6b939a9b68d24e6e7360b7800ad0b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=94=A1=E6=9C=97?= Date: Wed, 7 Jan 2026 14:48:14 +0800 Subject: [PATCH 1/9] =?UTF-8?q?=E5=88=A0=E9=99=A4=20.env?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .env | 7 ------- 1 file changed, 7 deletions(-) delete mode 100644 .env diff --git a/.env b/.env deleted file mode 100644 index b7448d8..0000000 --- a/.env +++ /dev/null @@ -1,7 +0,0 @@ -# AI帮你面试 - 环境配置 - -# API密钥配置 -AI_API_KEY=sk-0944c102849e45d9ab3f24d5169de289 - -# Flask应用配置 -FLASK_DEBUG=True \ No newline at end of file From c1cb2201922ba29efa826e227ceb0437d99d01d2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=94=A1=E6=9C=97?= Date: Wed, 7 Jan 2026 14:48:35 +0800 Subject: [PATCH 2/9] =?UTF-8?q?=E5=88=A0=E9=99=A4=20test=5Fapi.py?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- test_api.py | 32 -------------------------------- 1 file changed, 32 deletions(-) delete mode 100644 test_api.py diff --git a/test_api.py b/test_api.py deleted file mode 100644 index 69d40fd..0000000 --- a/test_api.py +++ /dev/null @@ -1,32 +0,0 @@ -import requests -import json - -# API测试脚本 -BASE_URL = 'http://127.0.0.1:5000' -TEST_HEADER_URL = 'http://127.0.0.1:5001' -API_KEY = 'sk-0944c102849e45d9ab3f24d5169de289' - -# 设置请求头 -headers = { - 'Content-Type': 'application/json', - 'X-API-Key': API_KEY -} - -try: - print("=== 测试Header调试端点 ===") - response = requests.get(f'{TEST_HEADER_URL}/test_headers', headers=headers) - print(f"状态码: {response.status_code}") - print(f"响应内容: {json.dumps(response.json(), ensure_ascii=False, indent=2)}") - - # 测试分析回答API - print("\n=== 测试分析回答API ===") - analyze_data = { - 'question_id': 1, - 'answer': '我是一名有5年经验的软件工程师,主要从事Python开发工作。' - } - response = requests.post(f'{BASE_URL}/analyze_answer', headers=headers, json=analyze_data) - print(f"状态码: {response.status_code}") - print(f"响应内容: {json.dumps(response.json(), ensure_ascii=False, indent=2)}") - -except Exception as e: - print(f"测试失败: {str(e)}") From 3065cc8f9f583f37cec98abf79ad8b5837c20c5a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=94=A1=E6=9C=97?= Date: Wed, 7 Jan 2026 14:48:40 +0800 Subject: [PATCH 3/9] =?UTF-8?q?=E5=88=A0=E9=99=A4=20test=5Fheader.py?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- test_header.py | 31 ------------------------------- 1 file changed, 31 deletions(-) delete mode 100644 test_header.py diff --git a/test_header.py b/test_header.py deleted file mode 100644 index 69abb20..0000000 --- a/test_header.py +++ /dev/null @@ -1,31 +0,0 @@ -from flask import Flask, request, jsonify -import os -from dotenv import load_dotenv - -# 加载环境变量 -load_dotenv() - -app = Flask(__name__) -API_KEY = os.getenv('AI_API_KEY', '') - -@app.route('/test_headers', methods=['GET', 'POST']) -def test_headers(): - print("[DEBUG] All Request Headers:") - for key, value in request.headers.items(): - print(f" {key}: {value}") - - # 特别检查X-API-Key - api_key = request.headers.get('X-API-Key') - print(f"[DEBUG] X-API-Key specifically: '{api_key}'") - print(f"[DEBUG] Expected API Key: '{API_KEY}'") - print(f"[DEBUG] Match: {api_key == API_KEY}") - - return jsonify({ - 'received_headers': dict(request.headers), - 'api_key': api_key, - 'expected_api_key': API_KEY, - 'match': api_key == API_KEY - }) - -if __name__ == '__main__': - app.run(debug=True, port=5001) From c4e97e4c59927d364493b4135b730b765c8790ad Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=94=A1=E6=9C=97?= Date: Wed, 7 Jan 2026 14:58:45 +0800 Subject: [PATCH 4/9] =?UTF-8?q?=E5=88=A0=E9=99=A4=20README.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 93 ------------------------------------------------------- 1 file changed, 93 deletions(-) delete mode 100644 README.md diff --git a/README.md b/README.md deleted file mode 100644 index 89ac075..0000000 --- a/README.md +++ /dev/null @@ -1,93 +0,0 @@ -姓名 学号 主要贡献 (具体分工) -蔡朗 2411020227 核心逻辑开发、Prompt 编写 -陆刘青 2411020110 前端界面设计、PPT 制作 -刘俊伯 2411020102 文档撰写、测试与 Bug 修复 - -# AI帮你面试 - -一个基于Flask的AI面试辅助系统,可以帮助用户模拟面试流程并提供AI分析反馈。 - -## 功能特性 - -- 模拟完整的面试流程 -- AI回答分析功能 -- 面试结果评分 -- RESTful API接口 -- API密钥验证机制 - -## 技术栈 - -- **后端框架**: Flask 2.3+ -- **前端技术**: HTML, CSS, JavaScript -- **环境配置**: python-dotenv - -## 快速开始 - -### 安装依赖 - -```bash -pip install -r requirements.txt -``` - -### 配置环境变量 - -复制并修改环境配置文件: - -```bash -# 根据实际情况修改.env文件 -``` - -### 启动应用 - -```bash -python app.py -``` - -应用将在 http://127.0.0.1:5000 启动。 - -## API接口 - -### POST /analyze_answer -分析面试回答内容 - -**请求头**: -- X-API-Key: [API密钥] - -**请求体**: -```json -{ - "answer": "您的回答内容", - "question_id": 1 -} -``` - -### GET /get_results -获取面试结果 - -**请求头**: -- X-API-Key: [API密钥] - -## 项目结构 - -``` -AI帮你面试/ -├── app.py # 主应用程序 -├── .env # 环境配置文件 -├── requirements.txt # 项目依赖 -├── templates/ # HTML模板 -│ ├── index.html -│ └── interview.html -└── static/ # 静态资源 - ├── styles.css - └── script.js -``` - -## 开发说明 - -- 开发环境下使用 `FLASK_DEBUG=True` 开启调试模式 -- 生产环境建议使用专业的WSGI服务器(如Gunicorn) -- 请妥善保管API密钥,避免泄露 - -## 许可证 - -MIT License \ No newline at end of file From a02f0ca5fd5c6b23caac0c5ddeca913b90aad5c8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=94=A1=E6=9C=97?= Date: Wed, 7 Jan 2026 15:07:55 +0800 Subject: [PATCH 5/9] revert c4e97e4c59927d364493b4135b730b765c8790ad MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit revert 删除 README.md --- README.md | 93 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 93 insertions(+) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 0000000..89ac075 --- /dev/null +++ b/README.md @@ -0,0 +1,93 @@ +姓名 学号 主要贡献 (具体分工) +蔡朗 2411020227 核心逻辑开发、Prompt 编写 +陆刘青 2411020110 前端界面设计、PPT 制作 +刘俊伯 2411020102 文档撰写、测试与 Bug 修复 + +# AI帮你面试 + +一个基于Flask的AI面试辅助系统,可以帮助用户模拟面试流程并提供AI分析反馈。 + +## 功能特性 + +- 模拟完整的面试流程 +- AI回答分析功能 +- 面试结果评分 +- RESTful API接口 +- API密钥验证机制 + +## 技术栈 + +- **后端框架**: Flask 2.3+ +- **前端技术**: HTML, CSS, JavaScript +- **环境配置**: python-dotenv + +## 快速开始 + +### 安装依赖 + +```bash +pip install -r requirements.txt +``` + +### 配置环境变量 + +复制并修改环境配置文件: + +```bash +# 根据实际情况修改.env文件 +``` + +### 启动应用 + +```bash +python app.py +``` + +应用将在 http://127.0.0.1:5000 启动。 + +## API接口 + +### POST /analyze_answer +分析面试回答内容 + +**请求头**: +- X-API-Key: [API密钥] + +**请求体**: +```json +{ + "answer": "您的回答内容", + "question_id": 1 +} +``` + +### GET /get_results +获取面试结果 + +**请求头**: +- X-API-Key: [API密钥] + +## 项目结构 + +``` +AI帮你面试/ +├── app.py # 主应用程序 +├── .env # 环境配置文件 +├── requirements.txt # 项目依赖 +├── templates/ # HTML模板 +│ ├── index.html +│ └── interview.html +└── static/ # 静态资源 + ├── styles.css + └── script.js +``` + +## 开发说明 + +- 开发环境下使用 `FLASK_DEBUG=True` 开启调试模式 +- 生产环境建议使用专业的WSGI服务器(如Gunicorn) +- 请妥善保管API密钥,避免泄露 + +## 许可证 + +MIT License \ No newline at end of file From 5c3d14fbe436d239f02113a0fe4db22c31306cf2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=94=A1=E6=9C=97?= Date: Wed, 7 Jan 2026 15:16:50 +0800 Subject: [PATCH 6/9] =?UTF-8?q?=E6=9B=B4=E6=96=B0=20README.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 45 +++++++++++++++++++++++++++++++++++++++------ 1 file changed, 39 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index 89ac075..8baf57f 100644 --- a/README.md +++ b/README.md @@ -1,11 +1,14 @@ 姓名 学号 主要贡献 (具体分工) + 蔡朗 2411020227 核心逻辑开发、Prompt 编写 + 陆刘青 2411020110 前端界面设计、PPT 制作 + 刘俊伯 2411020102 文档撰写、测试与 Bug 修复 # AI帮你面试 -一个基于Flask的AI面试辅助系统,可以帮助用户模拟面试流程并提供AI分析反馈。 +一个基于Flask的AI面试辅助系统,可以帮助用户模拟面试流程并提供AI分析反馈。 ## 功能特性 @@ -51,7 +54,7 @@ python app.py 分析面试回答内容 **请求头**: -- X-API-Key: [API密钥] +- X-API-Key: sk-0944c102849e45d9ab3f24d5169de289 **请求体**: ```json @@ -65,7 +68,7 @@ python app.py 获取面试结果 **请求头**: -- X-API-Key: [API密钥] +- X-API-Key: sk-0944c102849e45d9ab3f24d5169de289 ## 项目结构 @@ -85,9 +88,39 @@ AI帮你面试/ ## 开发说明 - 开发环境下使用 `FLASK_DEBUG=True` 开启调试模式 -- 生产环境建议使用专业的WSGI服务器(如Gunicorn) -- 请妥善保管API密钥,避免泄露 +- 生产环境建议使用专业的WSGI服务器(如Gunicorn) +- 请妥善保管API密钥,避免泄露 ## 许可证 -MIT License \ No newline at end of file +MIT License + +# AI帮你面试:技术实践与AI时代的深度思考 +## 选题思考:直击面试痛点的实用工具 +选择开发“AI帮你面试”系统,源于对当前求职市场痛点的深刻观察。在竞争激烈的就业环境中,求职者尤其是应届毕业生、转行人员,普遍面临“面试练习机会少、反馈不及时、技巧提升慢”的困境。传统的模拟面试要么依赖朋友家人(缺乏专业性),要么付费请专业面试官(成本高昂),无法满足高频次、低成本的练习需求。 + +这个项目的核心价值在于:为用户提供24/7可访问的模拟面试环境,并通过AI实时分析回答内容,给出针对性的反馈和评分。它解决了三类用户的痛苦: + +1. 应届毕业生 :缺乏面试经验,需要反复练习和专业指导,却因“无经验”陷入“没面试→没经验→没面试”的循环; +2. 转行求职者 :需要快速适应新领域的面试逻辑,弥补行业经验的不足,却难以找到跨领域的面试辅导资源; +3. 在职提升者 :希望通过模拟面试优化表达逻辑,冲击更高职位,却受制于时间和成本无法频繁参加专业辅导。 +从技术角度看,这也是将AI技术落地到实用场景的一次尝试——让AI不再是“实验室里的概念”,而是真正服务于用户的具体需求。 + +## AI协作体验:从惊喜到困惑的真实历程 +第一次用AI写代码的感觉可以用“惊艳”来形容。当我输入“请用Flask框架搭建一个AI面试系统的基础架构,包含API密钥验证和分析接口”时,AI在几秒内就生成了完整的项目结构:app.py的基础代码、RESTful API路由设计、X-API-Key请求头验证逻辑甚至连依赖文件requirements.txt都一并生成。这极大地减少了搭建基础框架的机械劳动,让我能更快聚焦于核心功能()如面试分析算法)的实现。 + +让我直呼“牛逼”的Prompt是“请为面试分析接口设计详细的请求参数answer文本、question_id、响应格式包含得分、优点、改进建议 并加入输入验证和错误处理机制”。这个Prompt的精妙之处在于“指令明确、边界清晰”——它不仅定义了功能 还规定了数据结构和异常处理的要求。AI生成的代码不仅包含了完整的JSON Schema验证 确保answer不为空、question_id为整数 还考虑了各种异常情况 如参数缺失返回400、API密钥无效返回401 甚至添加了详细的注释。这部分代码几乎无需修改即可直接使用大大提升了开发效率。 + +但也有让我“想砸键盘”的时刻。比如当我输入“优化面试分析的算法逻辑 提升反馈准确性”这样模糊的指令时 AI生成的代码要么过于简单 只是基于关键词匹配的初级评分 要么引入了复杂却不实用的模型 如需要大量训练数据的BERT微调方案 完全偏离了项目“轻量级、易部署”的定位。还有一次 我让AI“修复API密钥验证的bug” 但由于没有提供具体的错误场景 实际是请求头中密钥的大小写问题 AI生成的修复方案反而将原本的请求头验证改成了URL参数验证 导致安全风险。这些经历让我意识到 与AI协作的核心是“清晰的指令设计”——越具体、越结构化的Prompt 越能得到符合预期的结果。 + +## 自我反思:AI时代程序员的核心竞争力 +通过这个项目,我深刻思考了一个问题:在AI能快速生成代码的时代,程序员的核心竞争力到底是什么? + +我认为,AI可以辅助甚至替代“写代码”这一技术性工作,但以下核心能力是AI无法替代的: + +1. 问题分析与需求转化能力 AI无法像人类一样深入理解用户的真实痛点。在项目中 我需要将“求职者需要面试反馈”这一模糊需求 转化为具体的功能点如模拟面试流程、AI分析接口、结果评分 并定义清晰的技术实现路径如使用Flask框架、RESTful API设计。这种“从模糊到清晰”的转化,是AI难以完成的。 +2. 系统架构设计能力 AI可以生成局部代码 但无法站在全局角度设计系统。例如,我需要思考:如何设计API的层级结构以确保可扩展性如何处理?前后端的数据交互以提升用户体验?如何平衡系统性能与开发成本 ?这些架构层面的决策,需要对技术选型、业务场景的深刻理解,是AI无法独立完成的。 +3. 调试与优化能力 当系统出现bug时,AI可能无法准确诊断问题的根源。在项目开发中 我遇到了“API密钥验证失败但日志无错误信息”的问题通过逐步排查检查请求头格式、密钥加密方式、中间件执行顺序 最终定位到是“请求头中密钥值包含空格”的边缘情况。这种“抽丝剥茧”的调试能力,需要对系统的深入理解和丰富的经验。 +4. 用户体验设计能力 :技术最终要服务于用户,AI无法像人类一样站在用户的角度思考。例如 在设计面试界面时 我考虑了用户的紧张情绪优化了交互流程减少操作步骤、添加进度提示 提升了使用体验。这种“以用户为中心”的设计思维,是AI缺乏的。 +## 结语 +“AI帮你面试”项目不仅是一次技术实践,更是一次对AI时代编程工作的深度审视。它让我明白:技术的发展不是取代人类,而是让人类能更好地发挥创造力和解决复杂问题的能力。未来我将继续探索AI与编程的结合方式,在提升技术能力的同时,更注重培养不可替代的核心竞争力——毕竟,在AI时代,“会用工具”只是基础,“会解决问题”才是核心。 \ No newline at end of file From 6108c1bd54589029beff89ab2da17b9ecf3373c1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=94=A1=E6=9C=97?= Date: Thu, 8 Jan 2026 18:24:12 +0800 Subject: [PATCH 7/9] =?UTF-8?q?=E6=9B=B4=E6=96=B0=20README.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/README.md b/README.md index 8baf57f..98082fd 100644 --- a/README.md +++ b/README.md @@ -54,8 +54,7 @@ python app.py 分析面试回答内容 **请求头**: -- X-API-Key: sk-0944c102849e45d9ab3f24d5169de289 - +- X-API-Key: **请求体**: ```json { From 78ecd9e9e240529d49572c90bfd7e2a447bea381 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=94=A1=E6=9C=97?= Date: Thu, 8 Jan 2026 18:24:34 +0800 Subject: [PATCH 8/9] =?UTF-8?q?=E6=9B=B4=E6=96=B0=20README.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 98082fd..3a18d51 100644 --- a/README.md +++ b/README.md @@ -67,7 +67,7 @@ python app.py 获取面试结果 **请求头**: -- X-API-Key: sk-0944c102849e45d9ab3f24d5169de289 +- X-API-Key: ## 项目结构 From bfddf24a5acf2387b07417d6eb646bb089bc0c7d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=94=A1=E6=9C=97?= Date: Thu, 8 Jan 2026 18:52:55 +0800 Subject: [PATCH 9/9] =?UTF-8?q?=E5=88=A0=E9=99=A4=20requirements.txt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- requirements.txt | 4 ---- 1 file changed, 4 deletions(-) delete mode 100644 requirements.txt diff --git a/requirements.txt b/requirements.txt deleted file mode 100644 index de4e210..0000000 --- a/requirements.txt +++ /dev/null @@ -1,4 +0,0 @@ -flask==2.2.2 -werkzeug==2.2.2 -python-dotenv==1.0.0 -requests==2.28.1 \ No newline at end of file