AI审稿
This commit is contained in:
@@ -13,6 +13,12 @@ class OpenAi
|
||||
protected $sError;
|
||||
protected $timeout = 60;
|
||||
|
||||
//JAVA接口
|
||||
protected $sJavaUrl = "http://ts.tmrjournals.com/";
|
||||
//官网文件地址
|
||||
protected $sFileUrl = "https://submission.tmrjournals.com/public/";
|
||||
//官网接口地址
|
||||
protected $sTmrUrl = "http://journalapi.tmrjournals.com/public/index.php";//"http://zmzm.journal.dev.com/";//;
|
||||
/**
|
||||
* CURL 发送请求到 OpenAI
|
||||
* @param $messages 内容
|
||||
@@ -175,7 +181,7 @@ class OpenAi
|
||||
|
||||
}请针对每个问题提供客观、专业的评估,并给出简要的理由。请返回中文解释!返回格式必须严格遵循以下 JSON 结构:{
|
||||
"journal_scope": {
|
||||
"assessment": "是/否/部分符合",
|
||||
"assessment": "符合/不符合/部分符合",
|
||||
"explanation": "请详细说明理由并指出具体相符或不相符的内容"
|
||||
},
|
||||
"attribute": {
|
||||
@@ -183,7 +189,7 @@ class OpenAi
|
||||
"explanation": "请具体指出创新点并评估其在该领域的贡献"
|
||||
},
|
||||
"contradiction": {
|
||||
"assessment": "是/否",
|
||||
"assessment": "矛盾/不矛盾",
|
||||
"explanation": "请引用具体段落说明矛盾之处"
|
||||
},
|
||||
"unreasonable": {
|
||||
@@ -213,7 +219,7 @@ class OpenAi
|
||||
"cite_rate":"",
|
||||
"overall_evaluation": "",
|
||||
}';
|
||||
$sUserPrompt = '关键词: {keywords}摘要: {abstrart} 内容: {content} 目标期刊:{journal_name}';
|
||||
$sUserPrompt = '内容: {content} 目标期刊:{journal_name} 目标期刊内容:{scope}';
|
||||
$sUserPrompt = str_replace(array_keys($aSearch), array_values($aSearch), $sUserPrompt);
|
||||
return [
|
||||
['role' => 'system', 'content' => $sSysMessagePrompt], ['role' => 'user', 'content' => $sUserPrompt]
|
||||
@@ -264,4 +270,137 @@ class OpenAi
|
||||
|
||||
return ['status' => 1,'msg' => 'success','data' => $aData];
|
||||
}
|
||||
|
||||
/**
|
||||
* 构建AI审稿-处理提示词
|
||||
*/
|
||||
public function buildArticlePrompt($aSearch = [])
|
||||
{
|
||||
if(empty($aSearch)){
|
||||
return [];
|
||||
}
|
||||
$sSysMessagePrompt = '
|
||||
你是一位资深的学术评审专家,负责严谨、客观地评估学术文章。请根据提供的文章内容,对以下问题进行专业评审
|
||||
```json
|
||||
{
|
||||
"journal_scope": "文章是否符合目标期刊的范围?",
|
||||
"attribute": "文章是否具有科学前沿性和创新性?",
|
||||
"contradiction": "文章内容是否前后矛盾或存在逻辑不一致的问题?",
|
||||
"unreasonable": "文章是否有明显的不合理之处?",
|
||||
"ethics": "文章是否存在伦理号缺失或明显伦理问题?",
|
||||
"academic": "是否存在学术不端问题【抄袭、数据作假、图片伪造等】?",
|
||||
"conclusion": "结论的科学性和可靠性如何?",
|
||||
"fund_number":"文章有无基金号?请详细说明",
|
||||
"hotspot":"文章热点",
|
||||
"submit_direction":"送审方向",
|
||||
"references_past_three":"根据文章内容统计近三年参考文献的比例?",
|
||||
"references_past_five":"根据文章内容统计近五年参考文献的比例",
|
||||
"references_ratio_JCR1":"根据文章内容统计参考文献JCR 1区的比例",
|
||||
"references_ratio_JCR2":"根据文章内容统计参考文献JCR 2区的比例",
|
||||
"registration_assessment":"根据文章内容对临床注册号和知情同意书进行评估",
|
||||
"cite_rate":"结合以上数据结果分析,文章发表后被引用的概率",
|
||||
"tmr_compare":"与TMR文章近两年文章相比,水平如何?",
|
||||
"tmr_cite_compare":"如果发表在TMR期刊,你认为两年内被引用的概率?",
|
||||
"overall_evaluation":"发表建议"
|
||||
|
||||
|
||||
}请针对每个问题提供客观、专业的评估,并给出简要的理由。请返回中文解释!返回格式必须严格遵循以下 JSON 结构:{
|
||||
"journal_scope": {
|
||||
"assessment": "符合/不符合/部分符合",
|
||||
"explanation": "请详细说明理由并指出具体相符或不相符的内容"
|
||||
},
|
||||
"attribute": {
|
||||
"assessment": "高/中/低",
|
||||
"explanation": "请具体指出创新点并评估其在该领域的贡献"
|
||||
},
|
||||
"contradiction": {
|
||||
"assessment": "矛盾/不矛盾",
|
||||
"explanation": "请引用具体段落说明矛盾之处"
|
||||
},
|
||||
"unreasonable": {
|
||||
"assessment": "是/否",
|
||||
"explanation": "包括实验设计、数据分析、结论推导等方面的问题"
|
||||
},
|
||||
"ethics": {
|
||||
"assessment": "是/否/不适用",
|
||||
"explanation": "详细解释"
|
||||
},
|
||||
"academic": {
|
||||
"assessment": "是/否/无法确定",
|
||||
"explanation": "请进行相似度分析并指出具体可疑部分"
|
||||
},
|
||||
"conclusion": {
|
||||
"assessment": "强/中/弱",
|
||||
"explanation": "是否基于充分证据得出"
|
||||
},
|
||||
"fund_number": "",
|
||||
"hotspot": "",
|
||||
"submit_direction": "",
|
||||
"references_past_three": "",
|
||||
"references_past_five": "",
|
||||
"references_ratio_JCR1": "",
|
||||
"references_ratio_JCR2": "",
|
||||
"registration_assessment":"",
|
||||
"cite_rate":"",
|
||||
"tmr_compare": {
|
||||
"assessment": "A超过TMRB与TMR持平C期是低于TMR",
|
||||
"explanation": "请详细说明理由"
|
||||
},
|
||||
"tmr_cite_compare": {
|
||||
"assessment": "A>=6次B3-5次C<3次",
|
||||
"explanation": "请详细说明理由"
|
||||
}
|
||||
"overall_evaluation": ""
|
||||
}';
|
||||
$sUserPrompt = '内容: {content} 目标期刊:{journal_name} 目标期刊内容:{scope}';
|
||||
$sUserPrompt = str_replace(array_keys($aSearch), array_values($aSearch), $sUserPrompt);
|
||||
return [
|
||||
['role' => 'system', 'content' => $sSysMessagePrompt], ['role' => 'user', 'content' => $sUserPrompt]
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取文件内容
|
||||
*/
|
||||
|
||||
public function getFileContent($aParam = []){
|
||||
|
||||
//判断文章ID
|
||||
$iArticleId = empty($aParam['article_id']) ? [] : $aParam['article_id'];
|
||||
if(empty($iArticleId)){
|
||||
return json_encode(['status' => 2,'msg' => 'Please select an article']);
|
||||
}
|
||||
|
||||
//获取文件内容
|
||||
$aWhere = ['article_id' => $iArticleId,'type_name' => 'manuscirpt'];
|
||||
$aFile = Db::name('article_file')->field('file_url')->where($aWhere)->order('ctime desc')->limit(1)->find();
|
||||
if(empty($aFile['file_url'])){
|
||||
return json_encode(['status' => 2,'msg' => 'No Manuscript']);
|
||||
}
|
||||
|
||||
//接口获取上传文件
|
||||
$sUrl = $this->sJavaUrl."api/typeset/readDocx";
|
||||
$aParam['fileRoute'] = $this->sFileUrl.$aFile['file_url'];
|
||||
$aResult = object_to_array(json_decode(myPost($sUrl,$aParam)));
|
||||
return json_encode($aResult);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取期刊内容
|
||||
*/
|
||||
|
||||
public function getJournalPaperArt($aParam = []){
|
||||
|
||||
//判断文章ID
|
||||
$sIssn = empty($aParam['issn']) ? [] : $aParam['issn'];
|
||||
if(empty($sIssn)){
|
||||
return json_encode(['status' => 2,'msg' => 'Please select an article']);
|
||||
}
|
||||
$sTitle = empty($aParam['title']) ? 'Journal Information' : $aParam['title'];
|
||||
//接口获取期刊内容
|
||||
$sUrl = $this->sTmrUrl."api/Supplementary/getJournalPaperArt";
|
||||
$aParam = ['issn' => $sIssn,'title' => $sTitle];
|
||||
$aResult = object_to_array(json_decode(myPost($sUrl,$aParam),true));
|
||||
return json_encode($aResult);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user