This commit is contained in:
chengxl
2025-07-02 15:04:25 +08:00
parent 209bbfe6cf
commit da865015f8

View File

@@ -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);
}
}