--- title: "00-api" created: 2026-04-02 tags: - 项目 aliases: - api --- # api > 这是一个非常典型的**AI驱动的招聘数据抓取、解析与结构化处理系统**。工作流涵盖了从非结构化数据(图片、长文本)输入,到通过多种大语言模型(LLMs)进行信息抽取与标准化,最后将数据同步至云端数据库的完整闭环。 ### 一、 核心大模型(LLM)解析模块 系统集成了多家大模型API,这通常是为了高可用性(容灾)、成本控制或针对不同任务利用不同模型的优势。 - [[02-doubao_api|doubao_api]] **/** [[03-doubao_api_new|doubao_api_new]] **(字节跳动豆包)**:这是目前看起来最核心、业务逻辑最重的模块。 - **应用场景**:处理具体的“职位信息”(Corporate Job / `cjob`),提取多达20-30个维度的精细字段(如是否蓝领、是否需要穿防护服、每周实习天数等)。 - **技术亮点 (**`doubao_api_new.py`**)**:引入了**Prompt Caching(提示词缓存)**机制。由于提取指令非常长(包含庞大的“职位类别表”和复杂的提取规则),将这部分作为System Prompt进行缓存(过期时间设为70小时),能够极大地降低Token消耗和API延迟。同时,代码中还对Token使用量进行了精细化统计(区分了`input`、`caching`、`output`和`thinking`)。 - [[06-openai4o_api|openai4o_api]] **/** [[07-openai4o_api_0|openai4o_api_0]] **(Azure OpenAI)**: - **应用场景**:处理“招聘公告”(Announcement / `ann`)这种篇幅较长、结构相对松散的宏观信息。用于提取公司基本信息、网申时间、招聘岗位列表以及简历投递规则等。 - **版本控制**:保留了旧版(依赖 `openai==0.28`)和新版(`AzureOpenAI` 客户端),说明系统经历过SDK的重构升级。 - [[09-qwen_api|qwen_api]] **(阿里通义千问) &** [[01-deepseek_api|deepseek_api]] **(深度求索)**:目前看似作为备用模型或实验性接口存在,使用了 OpenAI 兼容的调用方式。 ### 二、 图像识别(OCR)模块 - [[05-ocr_api|ocr_api]]:利用 `PaddleOCR` 处理长图、海报或PDF扫描件中的文字。 - **技术亮点**:为了解决超长图片直接OCR识别率下降和内存溢出的问题,开发者手写了一个非常精妙的**智能切图算法 (**`img_cut`**)**。它通过 OpenCV 的 `connectedComponents`(连通组件检测)来判断切片边缘是否切到了文字,如果切到了文字,切线会智能上移,确保文字的完整性。同时,还加入了针对 GIF 动图转取第一帧(或PNG格式)的处理逻辑。 ### 三、 存储与中间件模块 - [[04-hwcloud_api|hwcloud_api]] **(华为云 OBS)**:用于处理多媒体文件的持久化存储。招聘海报、公司Logo或相关文档通过该模块上传至华为云对象存储 (`quanfile` 桶) 中,并返回公共可访问的 URL。 ### 四、 数据同步与业务检验模块 - [[08-quanzhi_api|quanzhi_api]]:负责将经过 LLM 结构化后的 JSON 数据入库,并与内部核心业务系统交互。 - **数据清洗**:在上传前,会对日期格式进行二次校验和修复 (`fix_upload_cloud`,如 `OnlineStartDate`, `CutDate` 等)。 - **重复与风控检测**:提供 `check_cloud` 等接口,利用内部系统的返回码(如 `301` 公告过期、`302` 包含黑名单、`303` 全文重复、`304` 链接重复)在数据入库前进行拦截,极大地减轻了数据库的脏数据压力。 --- ### 总结与建议 这是一个架构清晰、高度定制化的RPA/数据管道应用。Prompt Engineering 做得很扎实(包含了中文数字转阿拉伯数字、薪资范围最大最小值合并等标准化规则)。 **潜在的优化空间**: 1. **异常重试机制**:目前大部分 API 遇到异常只是打印日志和发邮件,缺乏自动的重试机制(Retry机制,比如遇到并发限流时的退避重试)。 2. **异步化处理**:无论是 OCR 还是调用大模型,都属于高耗时 IO 操作。如果在爬虫抓取后直接同步调用这些接口,效率会很低。建议引入如 Celery 或 Kafka 这样的消息队列进行异步解耦处理。 --- **项目分区导航**:[[05-picc_data_proc_api|picc_data_proc_api]] ⬅️ | 00-api | ➡️ [[01-deepseek_api|deepseek_api]]