AI 生成器逻辑完善
This commit is contained in:
@@ -0,0 +1,22 @@
|
||||
package com.vetti.hotake.domain.dto;
|
||||
|
||||
import com.vetti.hotake.domain.dto.VcDto.VcExperienceDescriptionDto;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 工作经验生成器 返回对象
|
||||
*
|
||||
* @author wangxiangshun
|
||||
* @date 2025-11-30
|
||||
*/
|
||||
@Data
|
||||
@Accessors(chain = true)
|
||||
public class HotakeWorkExperienceGeneratorDto {
|
||||
|
||||
@ApiModelProperty("描述集合")
|
||||
private List<VcExperienceDescriptionDto> description;
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
package com.vetti.hotake.domain.vo;
|
||||
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
/**
|
||||
* 岗位链接信息分析 请求对象
|
||||
*
|
||||
* @author ID
|
||||
* @date 2025-09-06
|
||||
*/
|
||||
@Data
|
||||
@Accessors(chain = true)
|
||||
public class HotakeRoleLinkAnalysisVo {
|
||||
|
||||
@ApiModelProperty("岗位网站地址")
|
||||
private String roleUrl;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,34 @@
|
||||
package com.vetti.hotake.domain.vo;
|
||||
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
/**
|
||||
* 工作经验生成器 请求对象
|
||||
*
|
||||
* @author ID
|
||||
* @date 2025-09-06
|
||||
*/
|
||||
@Data
|
||||
@Accessors(chain = true)
|
||||
public class HotakeWorkExperienceGeneratorVo {
|
||||
|
||||
@ApiModelProperty("标题")
|
||||
private String title;
|
||||
|
||||
@ApiModelProperty("公司")
|
||||
private String company;
|
||||
|
||||
@ApiModelProperty("地点")
|
||||
private String location;
|
||||
|
||||
@ApiModelProperty("开始时间")
|
||||
private String durationStart;
|
||||
|
||||
@ApiModelProperty("结束时间")
|
||||
private String durationEnd;
|
||||
|
||||
|
||||
|
||||
}
|
||||
@@ -2,10 +2,7 @@ package com.vetti.hotake.service;
|
||||
|
||||
import com.vetti.hotake.domain.HotakeAiInterviewQuestionsInfo;
|
||||
import com.vetti.hotake.domain.HotakeInitialScreeningQuestionsInfo;
|
||||
import com.vetti.hotake.domain.dto.HotakeCvOptimizeDto;
|
||||
import com.vetti.hotake.domain.dto.HotakeInitialQuestionEliminationScoreDto;
|
||||
import com.vetti.hotake.domain.dto.HotakeJobDescriptionGeneratorDto;
|
||||
import com.vetti.hotake.domain.dto.HotakePersonalProfileGeneratorDto;
|
||||
import com.vetti.hotake.domain.dto.*;
|
||||
import com.vetti.hotake.domain.vo.*;
|
||||
|
||||
import java.util.List;
|
||||
@@ -98,4 +95,20 @@ public interface IHotakeAiCommonToolsService {
|
||||
public HotakePersonalProfileGeneratorDto getPersonalProfileGenerator(HotakePersonalProfileGeneratorVo personalProfileGeneratorVo);
|
||||
|
||||
|
||||
/**
|
||||
* 工作经验生成器
|
||||
* @param workExperienceGeneratorVo 工作信息
|
||||
* @return
|
||||
*/
|
||||
public HotakeWorkExperienceGeneratorDto getWorkExperienceGenerator(HotakeWorkExperienceGeneratorVo workExperienceGeneratorVo);
|
||||
|
||||
|
||||
/**
|
||||
* 招聘链接信息分析补全
|
||||
* @param roleLinkAnalysisVo 岗位链接对象
|
||||
* @return
|
||||
*/
|
||||
public String getRoleLinkAnalysis(HotakeRoleLinkAnalysisVo roleLinkAnalysisVo);
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -674,7 +674,7 @@ public class HotakeAiCommonToolsServiceImpl extends BaseServiceImpl implements I
|
||||
mapUserEntity.put("content",userPrompt);
|
||||
list.add(mapUserEntity);
|
||||
String promptJson = JSONUtil.toJsonStr(list);
|
||||
String resultStr = chatGPTClient.handleAiChat(promptJson,"WEBAITQ");
|
||||
String resultStr = chatGPTClient.handleAiChat(promptJson,"PPG");
|
||||
String resultJson = resultStr.replaceAll("```json","").replaceAll("```","");
|
||||
log.info("个人简介生成器:{}",resultJson);
|
||||
|
||||
@@ -686,5 +686,98 @@ public class HotakeAiCommonToolsServiceImpl extends BaseServiceImpl implements I
|
||||
return generatorDto;
|
||||
}
|
||||
|
||||
/**
|
||||
* 工作经验生成器
|
||||
* @param workExperienceGeneratorVo 工作信息
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public HotakeWorkExperienceGeneratorDto getWorkExperienceGenerator(HotakeWorkExperienceGeneratorVo workExperienceGeneratorVo) {
|
||||
String prompt = AiCommonPromptConstants.initializationWorkExperienceGeneratorPrompt();
|
||||
|
||||
String candidateText = " Job Title: "+workExperienceGeneratorVo.getTitle()+" Company Name: "+workExperienceGeneratorVo.getCompany()+" Work Period: "+workExperienceGeneratorVo.getDurationStart()+"-"+workExperienceGeneratorVo.getDurationEnd()
|
||||
+"Additional Info: ";
|
||||
|
||||
String userPrompt = "Please generate a professional work experience description based on the following information:\\n\\n"+candidateText;
|
||||
List<Map<String, String>> list = new LinkedList();
|
||||
Map<String, String> mapEntity = new HashMap<>();
|
||||
mapEntity.put("role", "system");
|
||||
mapEntity.put("content",prompt);
|
||||
list.add(mapEntity);
|
||||
Map<String, String> mapUserEntity = new HashMap<>();
|
||||
mapUserEntity.put("role", "user");
|
||||
mapUserEntity.put("content",userPrompt);
|
||||
list.add(mapUserEntity);
|
||||
String promptJson = JSONUtil.toJsonStr(list);
|
||||
String resultStr = chatGPTClient.handleAiChat(promptJson,"PPG");
|
||||
String resultJson = resultStr.replaceAll("```json","").replaceAll("```","");
|
||||
log.info("工作经验生成器:{}",resultJson);
|
||||
|
||||
Map dataMap = JSONUtil.toBean(resultJson,Map.class);
|
||||
HotakeWorkExperienceGeneratorDto generatorDto = new HotakeWorkExperienceGeneratorDto();
|
||||
List<VcExperienceDescriptionDto> description = new ArrayList<>();
|
||||
|
||||
Map workExperienceMap = (Map)dataMap.get("work_experience");
|
||||
|
||||
VcExperienceDescriptionDto descriptionDto = new VcExperienceDescriptionDto();
|
||||
descriptionDto.setContent(workExperienceMap.get("position_summary").toString());
|
||||
description.add(descriptionDto);
|
||||
|
||||
List<String> keyResponsibilitiesList = (List<String>)workExperienceMap.get("key_responsibilities");
|
||||
if(CollectionUtil.isNotEmpty(keyResponsibilitiesList)){
|
||||
for (String Str : keyResponsibilitiesList){
|
||||
VcExperienceDescriptionDto descriptionDto1 = new VcExperienceDescriptionDto();
|
||||
descriptionDto1.setContent(Str);
|
||||
description.add(descriptionDto1);
|
||||
}
|
||||
}
|
||||
generatorDto.setDescription(description);
|
||||
return generatorDto;
|
||||
}
|
||||
|
||||
/**
|
||||
* 招聘链接信息分析补全
|
||||
* @param roleLinkAnalysisVo 岗位链接对象
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public String getRoleLinkAnalysis(HotakeRoleLinkAnalysisVo roleLinkAnalysisVo) {
|
||||
//获取
|
||||
String webContent = handleWebContentScraping(roleLinkAnalysisVo.getRoleUrl());
|
||||
|
||||
String prompt = AiCommonPromptConstants.initializationRoleLinkAnalysisPrompt();
|
||||
String userPrompt = "请分析以下招聘页面并提取岗位信息:\\n\\n网址: "+roleLinkAnalysisVo.getRoleUrl()+"\\n\\n内容:\\n" +webContent;
|
||||
List<Map<String, String>> list = new LinkedList();
|
||||
Map<String, String> mapEntity = new HashMap<>();
|
||||
mapEntity.put("role", "system");
|
||||
mapEntity.put("content",prompt);
|
||||
list.add(mapEntity);
|
||||
Map<String, String> mapUserEntity = new HashMap<>();
|
||||
mapUserEntity.put("role", "user");
|
||||
mapUserEntity.put("content",userPrompt);
|
||||
list.add(mapUserEntity);
|
||||
String promptJson = JSONUtil.toJsonStr(list);
|
||||
String resultStr = chatGPTClient.handleAiChat(promptJson,"RLINKAL");
|
||||
String resultJson = resultStr.replaceAll("```json","").replaceAll("```","");
|
||||
log.info("招聘链接信息提取:{}",resultJson);
|
||||
//处理岗位信息补充
|
||||
String userPrompt_1 = "请根据以下提取的岗位信息生成完整的API格式数据:\\n\\n" +resultJson;
|
||||
List<Map<String, String>> listOne = new LinkedList();
|
||||
Map<String, String> mapEntityOne = new HashMap<>();
|
||||
mapEntityOne.put("role", "system");
|
||||
mapEntityOne.put("content",prompt);
|
||||
listOne.add(mapEntityOne);
|
||||
Map<String, String> mapUserEntityOne = new HashMap<>();
|
||||
mapUserEntityOne.put("role", "user");
|
||||
mapUserEntityOne.put("content",userPrompt_1);
|
||||
listOne.add(mapUserEntityOne);
|
||||
String promptJsonOne = JSONUtil.toJsonStr(listOne);
|
||||
String resultStrOne = chatGPTClient.handleAiChat(promptJsonOne,"RLINKAL");
|
||||
String resultJsonOne = resultStrOne.replaceAll("```json","").replaceAll("```","");
|
||||
log.info("招聘链接信息补全:{}",resultJsonOne);
|
||||
|
||||
return resultJsonOne;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user