AI赋能招聘:FunctionCalling精准匹配岗位简历
13-1 利用提示词工程计算岗位匹配度13-2 Function Calling 业务背景13-3 Function Calling 的工作原理13-4 Function Calling 入门案例13-5 Function Calling 集成简历学历外部接口一、知识点梳理1.什么是Function Calling大模型不能直接操作数据库、调用后端接口。我们预先定义好可供模型调用的函数描述函数名、作用、入参格式大模型根据用户问题自主判断是否需要调用函数、生成函数入参后端收到模型指令后执行接口/函数拿到结果再传给模型整理成自然语言回复用户。我们定好我们需要的物品然后进行表述给大模型 大模型根据我们的询问 判断我们当前问题是否需要我们自己定义的函数 生成需要的函数体 后端接受到模型的指定然后发送请求 大模型将结果返回给用户2. 业务场景招聘平台简历-岗位匹配基础方案纯提示词把岗位要求、候选人简历全部丢进prompt让模型计算匹配分数缺点是数据量大、无法动态读取数据库最新简历。进阶方案Function Calling用户询问「这份简历适合哪些岗位」→ 模型自动调用后端简历查询接口 → 获取学历、工作经历 → 再调用岗位检索接口 → 综合数据输出匹配结果。1. 模拟业务接口简历学历信息接口def get_resume_edu_info(resume_id: str): 根据简历ID获取候选人学历信息 :param resume_id: 简历唯一编号 # 模拟请求梦远学历接口真实环境替换http请求 mock_data { resume_id: resume_id, education: 本科, major: 计算机科学与技术, work_year: 3 } return mock_data def get_match_job_list(education: str, work_year: int): 根据学历、工作年限查询适配岗位 job_list [ {job_name: 后端开发工程师, match_score: 86}, {job_name: AI应用开发, match_score: 92} ] return job_list # 工具清单提供给大模型识别 tool_list [ { type: function, function: { name: get_resume_edu_info, description: 通过简历编号获取候选人学历、专业、工作年限, parameters: { type: object, required: [resume_id], properties: { resume_id: {type: string, description: 简历id} } } } }, { type: function, function: { name: get_match_job_list, description: 根据学历、工作年限查询匹配岗位, parameters: { type: object, required: [education, work_year], properties: { education: {type: string}, work_year: {type: integer} } } } } ]通过调用外部的接口来实现 我们真实的学历信息返回2. 主程序工具调用调度核心逻辑import json from fastapi import FastAPI from openai import OpenAI from tools import tool_list, get_resume_edu_info, get_match_job_list app FastAPI() client OpenAI( base_url你的模型接口地址, api_key你的key ) # 函数映射字符串名称 对应 真实方法 func_map { get_resume_edu_info: get_resume_edu_info, get_match_job_list: get_match_job_list } app.post(/chat/job_match) def chat_with_tools(user_query: str, resume_id: str): messages [{role: user, content: f{user_query}简历编号{resume_id}}] # 第一轮大模型判断是否调用工具 response client.chat.completions.create( modelqwen-turbo, messagesmessages, toolstool_list ) msg response.choices[0].message # 判断触发工具调用 if msg.tool_calls: for call in msg.tool_calls: func_name call.function.name args json.loads(call.function.arguments) # 本地执行函数 result func_map[func_name](**args) # 将工具返回结果追加到对话 messages.append(msg.model_dump()) messages.append({ role: tool, tool_call_id: call.id, content: json.dumps(result, ensure_asciiFalse) }) # 第二轮把工具结果交给模型整理成自然语言 final_resp client.chat.completions.create( modelqwen-turbo, messagesmessages ) return { code: 200, answer: final_resp.choices[0].message.content } # 不需要调用工具直接返回回答 return {code: 200, answer: msg.content}判断我们当前的对话 是否需要调用我们定义的函数如果是我们则调用我们提前编写好的函数 提取用户对话中的关键词入参然后返回给大模型 让大模型用更自然的语言输出即可3.提示词prompt_template 你是招聘HR根据下面【岗位要求】和【候选人简历】输出0~100之间的岗位匹配分数并给出理由。【简历信息】{resume_text}【岗位要求】{job_require}只输出json格式{{score:分数,reason:匹配理由}}可以按照自己的需求 将之际需要什么人去干这个失去的提示词输入给ai ai就会按照这个人物去执行任务———————————————————————————————————————————本文介绍了基于Function Calling技术实现简历与岗位智能匹配的方法。传统纯提示词方案存在数据量大、无法动态更新的缺点而Function Calling通过预定义函数接口使大模型能够自主调用外部数据服务。文章详细展示了业务场景实现当用户查询简历匹配度时模型自动调用简历查询接口获取学历、工作经历再检索匹配岗位最终生成自然语言回复。技术实现包括1)模拟简历学历和岗位检索接口2)定义工具函数清单供模型识别3)开发调度程序处理函数调用逻辑。这种方案有效解决了动态数据访问问题相比纯提示词

相关新闻

Go 的 io.Reader/Writer 组合实战:io.Copy、TeeReader、MultiWriter 优雅处理数据流

Go 的 io.Reader/Writer 组合实战:io.Copy、TeeReader、MultiWriter 优雅处理数据流

Go 的 io.Reader/Writer 组合实战:io.Copy、TeeReader、MultiWriter 优雅处理数据流 写 Go 处理数据的时候,新手容易犯一个习惯病:不管三七二十一先 io.ReadAll 把数据全读进 []byte,再在内存里搓。文件小没事,一旦碰上几百 MB 的上传、下载或日志流,内存直接吃满,OOM 找上门。…

2026/10/10 20:54:30 阅读更多 →
容度原理:一套可以“读取”宇宙任何星体的底层逻辑容度原理的11条原理不是“针对地球物理”或“针对矿物”的特殊规则,它们是自指系统在任意尺度上都必须遵守的普适规律。

容度原理:一套可以“读取”宇宙任何星体的底层逻辑容度原理的11条原理不是“针对地球物理”或“针对矿物”的特殊规则,它们是自指系统在任意尺度上都必须遵守的普适规律。

容度原理:一套可以“读取”宇宙任何星体的底层逻辑容度原理的11条原理不是“针对地球物理”或“针对矿物”的特殊规则,它们是自指系统在任意尺度上都必须遵守的普适规律。基于这个判断,容度原理可以对任何一个天体进行推演——只需要知道它的…

2026/10/11 10:09:42 阅读更多 →
FPGA竞赛全攻略:从零构建硬件项目履历,破解求职与技能提升难题

FPGA竞赛全攻略:从零构建硬件项目履历,破解求职与技能提升难题

如果你是一名电子、通信或计算机专业的学生,或者是一名刚入行的硬件工程师,当听到“FPGA竞赛”这个词时,你的第一反应是什么?是觉得它高不可攀,充满了复杂的时序约束和Verilog代码?还是认为它只是少数“大神…

2026/10/13 8:38:48 阅读更多 →

最新新闻

ponytail插件怎么用?从安装配置到实战踩坑的完整指南

ponytail插件怎么用?从安装配置到实战踩坑的完整指南

1. 从“ponytail”这个热词说起:它到底指什么第一次看到“ponytail”被当成一个技术热词来搜,我其实愣了一下。这个词在英文里的本义是“马尾辫”,一个再日常不过的发型词。但结合“ponytail skill”“ponytail 插件”“插件 ponytail 如何使…

2026/10/14 21:17:56 阅读更多 →
【测试门禁怎么设计?不是所有 Bug,都应该用同一种方式阻断发布】

【测试门禁怎么设计?不是所有 Bug,都应该用同一种方式阻断发布】

在上一篇文章中,我们聊了如何把接口自动化接入 CI/CD。 当自动化测试能够自动执行、生成报告并反馈结果后,下一个问题就出现了: 测试失败了,是否应该阻断发布? 很多团队在刚开始建设自动化测试时,容易采用两…

2026/10/14 21:17:56 阅读更多 →
单调栈用法

单调栈用法

一、什么时候适合用单调栈题目要求"为每个元素找左边/右边第一个比它大(或小)的元素",且暴力 O(N) 会超时 → 用单调栈。这是最核心的信号。看到"第一个更大 / 第一个更小 / 下一个更大 / 下一个更小"这类字眼&#xff0…

2026/10/14 21:17:56 阅读更多 →
智能 PDU 固件升级这件事:版本核对、灰度批次和回滚预案

智能 PDU 固件升级这件事:版本核对、灰度批次和回滚预案

智能 PDU 固件升级这件事:版本核对、灰度批次和回滚预案 固件升级在机房运维里属于「做了没人夸,做砸了整个部门都知道」的活儿。我参与过的项目里,升级本身出事的极少,出事的大多是准备工作没做足——型号搞混、批次一次上太多、…

2026/10/14 21:17:56 阅读更多 →
力扣 hot 100 python

力扣 hot 100 python

3. 无重复字符的最长子串 - 力扣(LeetCode) 题目 给定一个字符串 s ,请你找出其中不含有重复字符的最长子串的长度。 思路 找最长子串,范围为i,j-1 第j个字符不在i,j-1里,就加入,在ij里,i向…

2026/10/14 21:17:56 阅读更多 →
C++类和对象(下)初始化列表、类型转换、static、友元、内部类、匿名对象

C++类和对象(下)初始化列表、类型转换、static、友元、内部类、匿名对象

一.再探构造函数之初始化列表• 之前实现构造函数时,初始化成员变量都是在函数体内赋值,构造函数初始化还有一种方式:初始化列表。初始化列表的使用方式是:在函数定义处的参数列表后(在声明和定义分离时就在真正定义的…

2026/10/14 21:16:56 阅读更多 →

日新闻

AnyPS5通用适配层设计:兼容性与性能的工程取舍

AnyPS5通用适配层设计:兼容性与性能的工程取舍

1. 从"AnyPS5"这个名字说起:它到底想解决什么问题第一次看到"AnyPS5"这个标题,我脑子里冒出来的第一个念头是:这大概率是一个围绕"跨平台运行"或者"通用适配"做文章的项目。名字里的"Any"…

2026/10/14 0:00:41 阅读更多 →
Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

1. 项目概述:Flutter跨平台二手交易应用开发作为一名长期从事移动应用开发的工程师,我最近完成了一个基于Flutter框架的二手物品交易平台项目。这个项目最吸引我的地方在于它完美结合了Flutter的跨平台优势与HarmonyOS的生态特性,实现了"…

2026/10/14 0:00:41 阅读更多 →
DFS算法解决飞机降落调度问题实战

DFS算法解决飞机降落调度问题实战

1. 项目背景与核心思路飞机降落问题是一个经典的调度优化场景,也是算法竞赛和面试中的高频题目。这个题目要求我们合理安排多架飞机的降落顺序和时间,确保所有飞机都能安全着陆而不发生冲突。在实际航空管制中,这类问题直接关系到飞行安全和机…

2026/10/14 0:00:41 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/14 3:30:28 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/14 16:30:29 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/14 3:29:58 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 22:01:27 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 14:57:39 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/14 7:53:34 阅读更多 →