diff --git a/application/api/controller/Aiarticle.php b/application/api/controller/Aiarticle.php index 7c0df52..17d9034 100644 --- a/application/api/controller/Aiarticle.php +++ b/application/api/controller/Aiarticle.php @@ -32,7 +32,7 @@ class Aiarticle extends Base /**OPENAI相关配置----------end**/ //数据表必填字段[ai_article] - protected $aAiFileds = ['article_id','title_english','title_chinese','journal_issn','covered','digest','research_result','content','highlights','discussion','prospect','research_background',]; + protected $aAiFileds = ['article_id','title_english','title_chinese','journal_issn','covered','digest','research_result','content','highlights','discussion','prospect','research_background','discussion_results','research_method']; //期刊接口地址 protected $sJournalUrl = 'http://journalapi.tmrjournals.com/public/index.php';//'http://zmzm.journal.dev.com'; // 'http://zmzm.journal.dev.com'; // 'http://journalapi.tmrjournals.com/public/index.php';//'http://zmzm.journal.dev.com'; // @@ -41,31 +41,19 @@ class Aiarticle extends Base //投稿系统 protected $sSubmissionUrl = 'https://submission.tmrjournals.com/'; protected $aOpenAiAsk = [ - 1 => '"将以下内容翻译为中文,仅返回翻译结果,不要解释:\n {#content#}"', + 1 => '"将以下内容翻译为中文,仅返回翻译结果,不要解释:\n {#content#}"', 2 => ' **核心要求** 1️ 内容涵盖哪些学科及方法请罗列 - 2 结构化摘要生成【四要素模版】 - 3 研究背景提炼【三段式结构】 - 发病率+当前治疗缺口(如5年OS<20%) - 引用2-3篇高被引论文的矛盾结论(如Nature vs Cell观点分歧) - 基于团队前期工作(如预实验发现X调控Y) - 4 针对稿件内容进行结论撰写 - 与TOP3高被引文献的对比(用"与A研究的X结论不同..."句式) 机制解释的3级证据链(如:基因敲除→通路抑制→表型逆转) 临床转化的可行性路径(如:基于RECIST标准的ORR提升)研究局限性(分方法学/样本量/随访维度) - 5 针对稿件内容进行展望撰写 - 现有方法的可扩展性(如空间组学升级计划) - 6 按点总结归纳研究结果并做简要阐述【3点以上】 + 2 学术规范翻译并提炼摘要,更强调逻辑性、科学术语准确性和表达的严谨性,并且不需要分点展示,字数小于200字,以便更方便读者阅读 + 3 研究背景提炼,大于500字 + 4 针对文章简单总结讨论和结果, 大于450字 + 5 简单总结文章的研究方法, 大于300字 + 6 针对稿件内容进行展望撰写 7 总结归纳亮点【3点以上】 - 8 禁用清单 - 直接复制讨论部分的原文 - 未达到统计学显著性的趋势描述 - 稿件内未提及的内容一定不要总结归纳出来 - "可能""或许"等不确定性词汇 - 单纯古籍原文翻译(需结合现代数据解读) - 未经验证的因果断言(如"证明XX药治愈癌症") - 9 请将标题翻译成中文 + 8 你是一名资深医学翻译专家,请将标题翻译成中文【内容需自然流畅、口语化、连贯性、学术性】 {#title_chinese#} - 10 请将稿件内容翻译成中文 + 9.你是一名资深医学翻译专家,请将文章内容翻译成中文【内容需自然流畅、口语化、连贯性、学术性】 {#content#} **稿件关键信息** - 稿件简介:{#abstract#} @@ -73,7 +61,7 @@ class Aiarticle extends Base **输出格式** 中文格式[英文简写忽略首字母大写] 格式内容 - ```json{ "title_chinese": "", "content": "", "covered": "【总字数<=100】", "digest": "【总字数<=500】", "research_background": "", "research_result": "", "highlights": "", "prospect": "", "discussion": ""}' + ```json{"covered": "【总字数<=100】", "digest": "【总字数<=500】", "research_background": "【总字数>200】", "discussion_results": "【总字数>450】","research_method" => "【总字数>300】", "prospect": "", "highlights": "", "title_chinese": "", "content": "", }' ]; //文章图片icon地址 @@ -115,7 +103,8 @@ class Aiarticle extends Base $data = [ 'model' => $model, 'messages' => $messages, - 'temperature' => 0.7 + 'temperature' => 0, + 'top_p' => 1, ]; $oCurl = curl_init(); @@ -168,7 +157,7 @@ class Aiarticle extends Base ] ]; //请求接口 - $sModel = $aParam['api_model'] ?? 'gpt-4o'; + $sModel = empty($aParam['api_model']) ? 'gpt-4o' : $aParam['api_model']; $result = $this->curlOpenAI($messages,$sModel); if($result == FALSE){ return json_encode(array('status' => 2,'msg' => 'Interface request failed'.$this->sError)); @@ -1116,7 +1105,7 @@ class Aiarticle extends Base //数据处理-标题 $sTitle = empty($aAiArticle['title']) ? '' : $aAiArticle['title']; $sTitle = mb_convert_encoding($sTitle, 'UTF-8', 'auto'); - $aAiArticle['title'] = $this->truncateByBytes($sTitle, 64); + $aAiArticle['title'] = $this->truncateByBytes($sTitle); //数据处理-摘要 $sDigest = empty($aAiArticle['digest']) ? '' : $aAiArticle['digest']; $sDigest = mb_convert_encoding($sDigest, 'UTF-8', 'auto'); @@ -1165,24 +1154,12 @@ class Aiarticle extends Base * 字符串处理 * @param article_id 文章ID */ - private function truncateByBytes($str, $maxBytes) { - $len = 0; - $result = ''; - $i = 0; - - while ($i < mb_strlen($str, 'UTF-8')) { - $char = mb_substr($str, $i, 1, 'UTF-8'); - $charBytes = strlen($char); // UTF-8 下实际字节数 - - if ($len + $charBytes > $maxBytes) { - break; - } - - $result .= $char; - $len += $charBytes; - $i++; + private function truncateByBytes($str, $maxLength = 64) { + $totalChars = mb_strlen($str, 'UTF-8'); + if($totalChars >= $maxLength){ + return mb_substr($str,0,$maxLength); } - return $result; + return $str; } /** @@ -1533,4 +1510,5 @@ class Aiarticle extends Base $oMaterial = new Material; return $oMaterial->uploadMaterial($aUpload); } + }