一、需求背景
hr在招聘平臺獲取簡歷后,想整理到簡歷庫,在線管理和維護,及其不方便,所以用dify搭建一個簡歷上傳助手,并且能保存到線上表格,方便維護和查看。
先看下最終的效果
我們的工作流即可自動獲取文件中的信息,手機號,姓名,學歷,工作經驗,自動分析數據,然后上傳到飛書多維表格中,Dify工作流總覽圖如下:

- `手機`(電話)
- `性別`(性別,允許“男”“女”“未提及”)
- `年齡`(年齡)
- `學歷`(學歷,字符串,格式:最高學歷+畢業院校+專業,如“本科 北京大學 計算機科學與技術”)
- `簡歷信息`(原始文本數據,不需要精簡,保證原始數據)要求:
在收集完所有信息后,機器人需將信息整理為 JSON 格式并輸出,確保鍵值對完整且準確,如果沒有收集到某個信息,請以空字符串作為值。文本內容:[{{#1753949451106.text#}}]
模型我用的是 qwen2.5-7b
可以看下大模型這塊是怎么處理的,格式最好是json,方便后續的保存
然后就是代碼直接,梳理需要的數據,保存到飛書或釘釘等ai表格,
這個地方一定要注意,返回到格式,如果格式不是設置的,會報錯 。這是我py處理數據格式的代碼。
def main(text: str) -> dict:import re, jsonfrom json.decoder import JSONDecodeError# 匹配 ```json```包裹的內容pattern = r'```json\n(.*?)\n```'match = re.search(pattern, text, re.DOTALL)if match:json_str = match.group(1).strip()# 清理可能影響解析的特殊字符json_str = json_str.replace('\r', '')json_str = re.sub(r'[\x00-\x1F\x7F]', '', json_str)try:json_data = json.loads(json_str)# 確保數據是列表格式if not isinstance(json_data, list):json_data = [json_data]# 完整提取所有字段,完整保留原始內容formatted_data = []for item in json_data:if isinstance(item, dict):formatted_item = {"姓名": item.get("姓名", ""),"手機號": item.get("手機", ""),"性別": item.get("性別", ""),"年齡": item.get("年齡", ""),"學歷": item.get("學歷", ""),"簡歷信息": item.get("簡歷信息", "") # 完整保留原始簡歷信息}formatted_data.append(formatted_item)return {"result": json.dumps(formatted_data, ensure_ascii=False)}except JSONDecodeError as e:print(f"JSON解析錯誤: 行 {e.lineno}, 列 {e.colno} - {e.msg}")return {"result": ""}except Exception as e:print(f"處理錯誤: {str(e)}")return {"result": ""}else:print("未找到有效的JSON數據")return {"result": ""}
后面就是對接飛書ai表格,飛書ai表格這個需要,創建飛書應用,找到對應的授權信息。
圖片
這個添加的地方。有一些坑,我需要說下,這個記錄列表是字符串類型,需要在py代碼中提取轉換好。不然會報錯。
導入成功以后,添加條件判斷是否成功,成功在把數據轉換下,輸出導入我數據信息,
代碼轉換如下:
import json
def main(data: list) -> dict:try:names = []# 遍歷外層數據for outer_item in data:# 獲取records列表(處理可能的非列表情況)records = outer_item.get("records", [])if not isinstance(records, list):continue# 遍歷每條記錄for record in records:# 解析fields中的JSONfields_str = record.get("fields", "{}")fields = json.loads(fields_str)# 提取姓名(去重)name = fields.get("姓名", "").strip() # 去除可能的空格if name and name not in names:names.append(name)# 用逗號分隔所有姓名names_str = ",".join(names)return {"names": names_str}except Exception as e:return {"names": ""}
然后回復信息,結束工作流。
這樣hr可以直接處理,記錄數據,后續更新面試相關的工作流。
如果感覺不錯,可以點贊收藏。