This commit is contained in:
chengxl
2025-07-24 17:09:47 +08:00
parent 409853c31f
commit 77c75a2124

View File

@@ -90,6 +90,30 @@ class OpenAi
"summary" => "针对文章结论生成一个简单总结内容不要和文章概述重复字数150以内",
]
];
//AI审稿提示词
protected $aReviewQuestion = [
'system_message' => '您是一位资深的医学期刊学术评审专家,请负责严谨、客观地评估学术文章。请根据提供的医学论文信息,按照以下严格格式生成结构化[JSON结构]输出[中文]',
'default' => [
"journal_scope" => "结合标题和摘要以及期刊范围来判断文章是否符合目标期刊?",
"attribute" => "内容是否有科学前沿性和创新性?参照维度[研究内容的原创性论文中的研究内容是否与已有的研究重复是否在同样的领域提出了类似的结论但在方法或结果上有所创新如果有作者是否清楚地解释了如何与之前的研究不同或者如何在原有基础上进行扩展或改进如果是综述文章汇总并综合最新的研究成果尤其是近几年内的重要发现展示领域内最新的进展成果。作者可以识别出未被充分讨论的问题或提出新的研究问题而不是简单文献堆砌。文章中的图表创新能否将信息的清晰呈现方便读者理解复杂研究问题。论文方法创新性评估要点是否采用了新的实验模型或创新的实验设计能有效解决当前研究中的难点或空白是否有合理的对照组和多组实验设计确保研究结果的可靠性是否使用了当前前沿的技术如高通量测序、CRISPR基因编辑等提高了实验精度或数据分析能力是否结合了跨学科的方法如生物信息学、人工智能等是否应用了多种验证手段或统计方法确保结果的可信度是否通过细胞实验、动物模型等多重验证确保实验结果的可靠性结论与数据的创新性研究结论是否提出了新观点或新见解是否提供了新的实验数据或观察结果能够突破当前的研究局限例如发现了新的生物标志物或对已知生物通路的作用机制提供了全新的解释]",
"contradiction" => "内容是否前后矛盾或存在逻辑不一致的问题?",
"unreasonable" => "内容是否有明显的不合理之处?",
"ethics" => "内容是否存在伦理号缺失或明显伦理问题?",
"academic" => "内容是否存在学术不端问题如:抄袭\数据作假\图片伪造等?",
"conclusion" => "根据内容判断文章结论的科学性和可靠性?",
"fund_number" => "内容是否有无基金号?请详细说明",
"hotspot" => "内容有哪些符合目标期刊当下的热点话题",
"submit_direction" =>"根据内容总结文章送审方向",
"references_num" =>"根据内容统计文章参考文献的数量",
"references_past_three" =>"统计内容里近3年的参考文献的数量及所占比例",
"references_past_five" =>"统计内容里近5年的参考文献的数量及所占比例",
"references_ratio_JCR1" =>"根据2024JCR最新分区分析文章内容里的文献判断属于JCR1还是JCR2,统计属于JCR 1区的数量及比例",
"references_ratio_JCR2" =>"根据2024JCR最新分区评估文章内容里的文献判断属于JCR1还是JCR2,统计属于JCR 2区的数量及比例",
"registration_assessment" =>"内容是否存在临床注册号和知情同意书?解释说明",
"cite_rate" => "结合内容分析发表后被引用的概率"
]
];
//定义redis连接
private $oQueueRedis;
public function __construct()
@@ -190,59 +214,51 @@ class OpenAi
}
/**
* 构建AI审稿-处理提示词【非重要的一次请求回答】
* 构建AI审稿-处理提示词
*/
public function buildReviewPromptUnimportant($aSearch = [])
public function buildReviewPrompt($aSearch = [])
{
if(empty($aSearch)){
return [];
}
$sSysMessagePrompt = '
你是一位资深的学术评审专家,负责严谨、客观地评估学术文章。请根据提供的信息,对以下问题进行专业评审
```json
{
"ethics": "根据文章内容分析是否存在伦理号缺失或明显伦理问题?",
"academic": "根据文章内容分析是否存在学术不端问题【抄袭、数据作假、图片伪造等】?",
"conclusion": "根据文章内容判断文章结论科学性和可靠性?",
"fund_number":"根据文章内容分析有无基金号?请详细说明",
"hotspot":"根据文章内容分析有哪些符合目标期刊当下的热点话题",
"submit_direction":"根据文章内容总结文章送审方向",
"references_num":"根据文章内容统计文章参考文献的数量",
"references_past_three":"统计文章内容里近3年的参考文献的数量及所占比例",
"references_past_five":"统计文章内容里近5年的参考文献的数量及所占比例",
"references_ratio_JCR1":"根据2024JCR最新分区分析文章内容里的文献判断属于JCR1还是JCR2,统计属于JCR 1区的数量及比例",
"references_ratio_JCR2":"根据2024JCR最新分区评估文章内容里的文献判断属于JCR1还是JCR2,统计属于JCR 2区的数量及比例",
"registration_assessment":"根据文章内容分析是否存在临床注册号和知情同意书?解释说明",
"cite_rate" => "根据文章内容分析文章发表后被引用的概率"
}请针对每个问题提供客观、专业的评估,并给出简要的理由。请返回中文解释!返回格式必须严格遵循以下 JSON 结构:{
"ethics": {
"assessment": "是/否",
"explanation": "请针对文章伦理号及伦理进行分析及说明"
},
"academic": {
"assessment": "是/否",
"explanation": "请进行相似度分析并指出具体可疑部分"
},
"conclusion": {
"assessment": "是/否",
"explanation": "是否基于充分证据得出"
},
"fund_number": "",
"hotspot": "",
"submit_direction": "",
"references_num":"",
"references_past_three": "",
"references_past_five": "",
"references_ratio_JCR1": "",
"references_ratio_JCR2": "",
"registration_assessment":"",
"cite_rate" => ""
}';
$sUserPrompt = '文章内容{content};目标期刊{journal_name}';
$sUserPrompt = str_replace(array_keys($aSearch), array_values($aSearch), $sUserPrompt);
return [
['role' => 'system', 'content' => $sSysMessagePrompt], ['role' => 'user', 'content' => $sUserPrompt]
];
//获取问题
$aQuestion = $this->aReviewQuestion;
$aQuestionLists = empty($aQuestion['default']) ? [] : $aQuestion['default'];
if(empty($aQuestionLists)){
return [];
}
//系统角色
$sSysMessagePrompt = empty($aQuestion['system_message']) ? '' : $aQuestion['system_message'];
if(empty($sSysMessagePrompt)){
return [];
}
//问题处理
$aMessage = [];
foreach($aQuestion as $key => $value){
//修改当前内容
$sInfo = json_encode([$key => $value],JSON_UNESCAPED_UNICODE);
$sSysMessagePromptInfo = $sSysMessagePrompt.$sInfo;
if($key == "title_chinese"){
$sUserPrompt = '{#title_chinese#}';
$sUserPrompt = str_replace(array_keys($aSearch), array_values($aSearch), $sUserPrompt);
}
if($key == "content"){
$sUserPrompt = '{#content#}';
$sUserPrompt = str_replace(array_keys($aSearch), array_values($aSearch), $sUserPrompt);
}
if(!in_array($key,["title_chinese","content"])){
$sUserPrompt = '标题:{#title_chinese#} 摘要: {#abstract#} 内容: {#content#}';
$sUserPrompt = str_replace(array_keys($aSearch), array_values($aSearch), $sUserPrompt);
}
$aMessage[] = [
['role' => 'system', 'content' => $sSysMessagePromptInfo],
['role' => 'user', 'content' => $sUserPrompt]
];
}
return $aMessage;
}
/**