AI对接
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user