当前位置: 首页 > java >正文

【agent】简历信息提取智能体

简历信息提取系统,使用Pydantic模型定义数据结构,并通过大语言模型(如GPT)从非结构化的简历文本中提取结构化信息。以下是详细解析:


核心功能

  1. 数据建模:用Pydantic的Resume类严格定义简历字段和校验规则。

  2. 格式转换:自动统一日期格式(如1990-05-1505-15-1990)。

  3. 大模型交互:通过Prompt工程让AI提取信息并返回标准JSON。


核心代码

from datetime import datetime, date
from typing import List, Optional
from pydantic import BaseModel, Field, field_validator, EmailStr, model_validator# 定义这个pydantic模型是关键的关键
class Resume(BaseModel):name: Optional[str] = Field(None, description="求职者姓名,如果没找到就置为空字符串")city: Optional[str] = Field(None, description="求职者居住地,如果没找到就置为空字符串")birthday: Optional[str] = Field(None, description="求职者生日,如果没找到就置为空字符串")phone: Optional[str] = Field(None, description="求职者手机号,如果没找到就置为空字符串")email: Optional[str] = Field(None, description="求职者邮箱,如果没找到就置为空字符串")education: Optional[List[str]] = Field(None, description="求职者教育背景")experience: Optional[List[str]] = Field(None, description="求职者工作或实习经历,如果没找到就置为空字符串")project: Optional[List[str]] = Field(None, description="求职者项目经历,如果没找到就置为空字符串")certificates: Optional[List[str]] = Field(None, description="求职者资格证书,如果没找到就置为空字符串")@field_validator("birthday", mode="before")def validate_and_convert_date(cls, raw_date):if raw_date is None:return Noneif isinstance(raw_date, str):# List of acceptable date formatsdate_formats = ['%d-%m-%Y', '%Y-%m-%d', '%d/%m/%Y', '%m-%d-%Y']for fmt in date_formats:try:# Attempt to parse the date string with the current formatparsed_date = datetime.strptime(raw_date, fmt).date()# Return the date in MM-DD-YYYY format as a stringreturn parsed_date.strftime('%m-%d-%Y')except ValueError:continue  # Try the next format# If none of the formats match, raise an errorraise ValueError(f"Invalid date format for 'consultation_date'. Expected one of: {', '.join(date_formats)}.")if isinstance(raw_date, date):# Convert date object to MM-DD-YYYY formatreturn raw_date.strftime('%m-%d-%Y')raise ValueError("Invalid type for 'consultation_date'. Must be a string or a date object.")class ResumeOpenAI:def __init__(self):self.resume_profile = Resume()self.output_schema = self.resume_profile.model_json_schema()self.template = """You are an expert in analyzing resumes. Use the following JSON schema to extract relevant information:```json{output_schema}```jsonExtract the information from the following document and provide a structured JSON response strictly adhering to the schema above. Please remove any ```json ``` characters from the output. Do not make up any information. If a field cannot be extracted, mark it as `n/a`.Document:----------------{resume_content}----------------"""def create_prompt(self, output_schema, resume_content):return self.template.format(output_schema=output_schema,resume_content=resume_content)def run(self, resume_content):try:response = client.chat.completions.create(model=chat_model,# 不是所有模型都支持response_format,要看一下调用的模型是否支持这个参数# 千问、智谱的模型一般支持response_format={ "type": "json_object" },messages=[{"role": "system", "content": "你是一位专业的简历信息提取专家。"},{"role": "user", "content": self.create_prompt(self.output_schema, resume_content)}],)result = response.choices[0].message.contentexcept Exception as e:print(f"Error occurred: {e}")return resultresume_openai = ResumeOpenAI()

http://www.xdnf.cn/news/8414.html

相关文章:

  • AGV(自动导引车)通信协议及通信链路性能需求分析
  • 力扣HOT100之图论:994. 腐烂的橘子
  • 二、详细解释OpenGL图形管线中顶点处理阶段的工作原理
  • day57—快速(选择/排序)—数组中的第 K 个最大元素(LeetCode-215)
  • 国家网络身份认证公共服务管理办法
  • nginx配置跨域请求,后台不用配置啦,完美
  • vue 水印组件
  • 【Dv3Admin】插件 dv3admin_chatgpt 优化支持多种启动方式实现SSE效果
  • QT之巧用对象充当信号接收者
  • Linux进程 线程 进程间通信 IPC——管道
  • 全国青少年信息素养大赛-python编程—省赛真题—卡牌游戏
  • Redis配置文件详解
  • 树 Part 10
  • JFace中MVC的表的单元格编辑功能的实现
  • Datawhale_PyPOTS_task6
  • 【安全攻防与漏洞​】​​HTTPS中的常见攻击与防御​​
  • 机器人强化学习入门学习笔记(三)
  • 洛谷 P1800 software(DP+二分)【提高+/省选−】
  • 三步快速部署一个本地Windows/Linux大语言模型ChatGLM(环境配置+权重下载+运行)
  • AI架构分层原则
  • Stack主题遇到的问题
  • C# WinForm应用程序多语言实现全面指南
  • deepseek组合使用
  • 测试关键点
  • 【Kafka】编写消费者开发模式时遇到‘未解析的引用‘SIGUSR1’’
  • 掌握递归:编程中的优雅艺术
  • 精益数据分析(79/126):从黏性到爆发——病毒性增长的三种形态与核心指标解析
  • Swagger、Springfox、Springdoc-openapi 到底是什么关系
  • 使用 GPUStack 纳管摩尔线程 GPU 进行大语言模型和文生图模型的推理
  • ASPICE认证 vs. 其他标准:汽车软件开发的最优选择