admin管理员组文章数量:1566602
用 NodeJS 10分钟快速实现基于 ChatGPT 的简历智能解析 Agent
ReAct 及其局限性
AutoGPT 和 LangChain 都是通过 ReAct(ReAct: Synergizing Reasoning and Acting in Language Models)来实现让大语言模型进行行动规划(例如让语言模型调用外部的工具或数据就是一种典型行动)的能力。
无论是对于工具(外部数据源、API 或函数)的功能描述还是对于语言模型整体输出内容的结构性描述都是使用自然语言进行的,因此很难保证可靠性,会有概率出现不符合预期的输出。
整个过程还涉及到与语言模型的多个轮次的交互,且语言模型还会把完整的用自然语言表述的思考过程也一并输出,因此需要占用大量的 Token。无论是从对模型的最大 Token Window 的限制来看,还是从大多数 MaaS 形态的模型按 Token 计费的商业模式来看都是极其不经济的。
关于 Flappy
Flappy 受到了 ReWOO 论文( Binfeng Xu, Zhiyuan Peng, Bowen Lei, Subhabrata Mukherjee, Yuchen Liu, & Dongkuan Xu. (2023). ReWOO: Decoupling Reasoning from Observations for Efficient Augmented Language Models.) 的启发,将行动计划的规划阶段和执行阶段拆开来实现。
例如同样的场景下,Flappy 可以语言模型生成 1 个执行计划(这个执行计划里已经一次性规划好了,每一步需要执行的操作)。 接着 Flappy 会根据每一步的具体需求调用对应的外部接口或语言模型来完成计划的执行。从而减少了每个步骤都需要语言模型参与的局限性。
另一方面,这样的设计还有 1 个好处是,可以使用不同能力的模型来分别进行任何规划和落地执行。 例如在任务规划阶段使用 GPT-4,具体的数据结构化任务的执行则可以交给 7B 的开源模型来做。从而最优化生产环境下的成本问题。
GitHub 仓库:https://github/pleisto/flappy
文档地址:https://flappy.pleisto/
Node.js 案例
现在我们尝试用 Flappy 来做一个简历筛选的 Node.js 应用,帮助 HR 快速筛选和整理简历信息。
需求分析
筛选简历的关键,在于提炼简历信息。有了结构化的简历信息后,我们只需提供合适的筛选方法供使用者调用即可。
因此应用需要做的事情包括:
- 读取所有简历文件。
- 分析每一份简历文件,生成结构化的简历数据集。
- 提供便于使用者调用的简历筛选方法。
现在假设我们的数据库中有几份不同格式的简历,我们希望能提取出简历中的关键数据,包括:
- 应聘者名称(name)
- 职位(profession)
- 工作年限(experienceYears)
- 工作技能(skills)
- 教育程度(education)
- 学位(degree)
- 专业(fieldOfStudy)
- 大学(university)
- 毕业年份(year)
筛选目的则是:获取所有工作年限大于7年的应聘者简历。
那我们就朝这个目标开始吧。
新建项目
下面我将创建一个 TypeScript Node.js 项目来完成这个案例。我将把完整的创建过程用到的命令和代码都贴在文章中,你也可以按照相同的方式来玩一下。
# 新建项目
mkdir resume-assistant
cd resuem-assistant
# yarn 或者 npm 初始化项目
yarn init
yarn add typescript ts-node --dev
# 初始化 typescript 项目配置
yarn tsc --init
# 添加 node-flappy 依赖
yarn add @pleisto/node-flappy@next
# 创建入口文件
touch index.ts
创建 Flappy 实例
import {
createFlappyAgent,
ChatGPT,
} from '@pleisto/node-flappy'
const gpt35 = new ChatGPT(
new OpenAI({
apiKey: process.env.OPENAI_API_KEY!,
baseURL: process.env.OPENAI_API_BASE!
}),
'gpt-3.5-turbo'
)
const resumeAssistant = createFlappyAgent({
llm: gpt35,
functions: [
]
})
创建实例时,需要提供一个 LLM 模块给 flappy agent 使用。flappy 内置了对 ChatGPT,以及 Baichuan 的支持。这里以 ChatGPT 为例,当然我们建议不要将 apiKey 直接暴露在代码里,此处是通过环境变量引入。至于 functions
变量,将在下文做详细介绍。
运行文件,如果一切配置正常,将不会报错。
export OPENAI_API_KEY=xxx
export OPENAI_API_BASE=xxx
<
版权声明:本文标题:用 NodeJS 10分钟快速实现基于 ChatGPT 的简历智能解析 Agent 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://www.elefans.com/xitong/1726838241a1086486.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论