使用AI构建全栈简历筛选应用
扫描二维码
随时随地手机看文章
DeepSeek开源AI模型的发布在技术界引起了很多兴奋。它允许开发人员完全在本地构建应用程序,而无需连接到在线AI模型(例如Claude,Chatgpt等)。开源模型在构建与生成AI集成的企业应用程序时为新机会打开了大门。
在本文中,您将学习如何在个人机器上本地运行这样的模型,并构建全栈React和Nodejs驱动的应用程序,而不仅仅是另一个聊天机器人。您将能够使用此应用程序来更快地分析简历并做出更明智的招聘决定。在构建应用程序之前,重要的是要了解开源LLM的好处。
开源大语模型的好处
开源模型与使用专有模型相对于使用专有模型提供了一些关键好处:
具有成本效益且无许可证
开源LLM具有成本效益,不需要特殊许可。例如,截至撰写本文的日期,OpenAI的O1的成本为每百万美元的产出代币,开源DeepSeek R1的价格为2.19美元。
可自定义且可调
开源模型可以轻松地进行微调以满足独特的业务案例 - 允许构建更多特定于领域的用例。这导致企业应用程序中的优化性能。
增强数据安全性和隐私
开源使应用程序更加安全,因为宝贵的个人数据不需要上传到第三方服务器,并且只能停留在本地机器或公司网络上仅留在本地机器或公司网络中。这提供了很高的数据安全性。此外,可以对开源模型进行微调以删除所有数据偏差。
社区驱动,没有供应商锁定
开源模型享有巨大的社区支持,并受益于功能开发的快速发展。另一方面,使用属性模型使应用程序供应商锁定并依赖供应商公司提供功能更新。
借助此信息,您可以使用DeepSeek R1开源模型,Node.js和React构建一个真实的应用程序。
项目和建筑概述
您将构建简历分析仪的应用程序 - 它将帮助您了解上传简历的好处和缺点。 DeepSeek R1 LLM将分析上传的简历并提供反馈。您可以通过下面的插图了解应用程序的体系结构。
建筑图
基于React的用户界面使用REST API与基于NODEJS的后端进行通信。然后,Nodejs后端将用户请求发送到使用Ollama托管的DeepSeek R1。整个技术堆栈可以在单台计算机上运行,就像您在整个文章中所做的那样,也可以在更复杂的用例中托管多个容器。
先决条件
· 要运行该项目,您将需要一台具有一些计算功率的计算机,最好是具有NVIDIA图形卡的计算机。该项目已在NVIDIA 4090RTX基于Windows Machine和M2 MacBook Pro上开发和测试。
· 您需要在计算机上安装NodeJ。该项目已建立在Nodejs版本22.3.0上。您可以使用命令验证nodejs安装node -v。
· 您还需要您选择的编辑来完成代码。 构建应用程序时已经使用了Visual Studio代码,通常建议使用。
在本地设置并运行DeepSeek
要在本地运行DeepSeek R1,请按照以下步骤操作:
1。从其官方网站安装Ollama 。
2。安装完成后,您将能够使用ollama run计算机终端中的命令运行模型。
3。运行您选择的DeepSeek模型。本教程是使用DeepSeek R1 8-Billon参数模型构建的。您可以使用命令来运行它ollama run deepseek-r1:8b。
4。如果您的规范计算机比前提条件部分中提到的机器较低,则7b和1.5b参数模型也将起作用,但是生成的输出质量可能较低。
5。模型可能需要花费一些时间才能下载,因为它们需要下载。模型运行后,您应该能够在终端中提出一个问题并获取输出。您可以参考下面的插图,以查看行动中的DeepSeek R1 8B模型。
Ollama DeepSeek R1
6。DeepSeekR1是一种推理模型,因此,它在给出可以产生的第一个答案之前就考虑了。正如上面插图中强调的那样,它在给我们提示的答案之前就在思考。可以在标签中看到这种想法 。
克隆和运行nodejs后端
Ollama服务也可以通过API访问。您将利用此API并构建基于Nodejs的后端层。该层将从用户中取上上载的PDF并从中提取文本。文本提取后,后端将通过Ollama API将文本馈送到DeepSeek R1模型,并恢复响应。此响应将发送给客户端以显示给用户。
1。使用此URL从GitHub克隆后端项目。理想情况下,您应该分配项目,然后克隆自己的本地副本。
2。克隆后,要运行项目,请使用CD转到项目根目录deepseek-ollama-backend。
3。一旦进入项目根,就通过给出npm install命令来安装依赖项。安装完成后,可以使用命令运行项目npm start。项目的核心是app.js 文件。检查下面提供的代码。
const express = require('express');
const multer = require('multer');
const pdfParse = require('pdf-parse');
const axios = require('axios');
const fs = require('fs');
const cors = require('cors');
const app = express();
app.use(cors());
app.use(express.json());
const upload = multer({
dest: 'uploads/',
fileFilter: (req, file, cb) => {
file.mimetype === 'application/pdf' ? cb(null, true) : cb(new Error('Only PDF files are allowed!'));
}
}).single('pdfFile');
app.post('/analyze-pdf', (req, res) => {
upload(req, res, async function(err) {
if (err) {
return res.status(400).json({ error: 'Upload error', details: err.message });
}
try {
if (!req.file) {
return res.status(400).json({ error: 'No PDF file uploaded' });
}
const dataBuffer = fs.readFileSync(req.file.path);
const data = await pdfParse(dataBuffer);
const pdfText = data.text;
fs.unlinkSync(req.file.path);
const response = await axios.post('http://127.0.0.1:11434/api/generate', {
model: "deepseek-r1:8b",
prompt: `Analyze this resume. Resume text is between two --- given ahead: ---${pdfText}---`,
stream: false
});
res.json({ success: true, message: 'Successfully connected to Ollama', ollamaResponse: response.data });
} catch (error) {
if (req.file && fs.existsSync(req.file.path)) {
fs.unlinkSync(req.file.path);
}
res.status(500).json({ error: 'Error processing PDF', details: error.message });
}
});
});
if (!fs.existsSync('uploads')) {
fs.mkdirSync('uploads');
}
const PORT = process.env.PORT || 3000;
app.listen(PORT, () => {
console.log(`Server is running on port ${PORT}`);
});
4。客户通过调用/analyze-pdf类型的API端点与后端进行交互POST。客户端将用户删除的PDF文件作为有效载荷发送给此API。
5。服务器将该文件uploads临时存储在目录中,并将文本提取在文件中。
6。然后使用Ollama的Localhost API端点提示DeepSeek R1 。
7。DeepSeek R1分析了简历的内容并提供了反馈。然后,使用此分析使用该服务器对客户端响应res.json()。
克隆和运行React用户界面
该项目的用户界面将允许用户上传简历,将此简历发送到后端,然后将DeepSeek R1简历分析的结果显示给用户。它还将显示内部思想链或对DeepSeek R1的思考。
1。要开始,分叉然后从此Github URL中克隆该项目。如果您不打算进行许多自定义,则可以简单地克隆它。
2。克隆项目后,使用命令转到根项目目录cd deepseek-ollama-frontend。
3。在项目根部内,使用npm install命令安装必要的依赖项。安装完成后,使用命令启动项目npm run dev。
4。此React应用的主要组成部分是重新分析仪。在您选择的编辑中打开它并进行分析。
5。此组件提供了一个输入字段供用户上传文件。
6。上传的文件使用API端点发送到服务器。
7.服务器的响应分为两个部分的内部思考和模型的实际响应。
8。该AnalysisSection组件显示模型的响应以及包含ExpandableSection组件,该组件用于显示DeepSeek R1的内部思维。
9。导航到浏览器中的URL加载应用程序。上传您的简历(或任何样本简历),并观察DeepSeek R1收到的分析。
结论
DeepSeek R1提供了一个独特的机会,可以在内部完全 构建Genai-Power应用程序,并根据您的需求对其进行自定义。
在本文中,您了解了使用开源Genai模型的好处。此外,您已经使用DeepSeek R1,Node.js和React设置了一个真实的应用程序。此设置使您可以使用AI完全离线执行简历分析。您可以使用此工具在您的组织中雇用SMART,我建议您继续基于本文获得的知识并探索更多用例和应用程序。