作者 zhl

添加指令

... ... @@ -409,6 +409,7 @@ class UpdateSeoTdk extends Command
}
public function getPrompt($project_id, $prompt, $table, $data){
// topic
if(strpos($prompt, '{topic}') !== false){
$topic = $data[$this->topic_fields[$table]] ?? '';
if(!$topic){
... ... @@ -417,6 +418,7 @@ class UpdateSeoTdk extends Command
}
$prompt = str_replace('{topic}', $topic, $prompt);
}
// keyword
if(strpos($prompt, '{keyword}') !== false) {
$keyword = $this->mainKeywords($project_id, 1);
if(!$keyword){
... ... @@ -425,6 +427,7 @@ class UpdateSeoTdk extends Command
}
$prompt = str_replace('{keyword}', $keyword, $prompt);
}
// company name
if(strpos($prompt, '{company name}') !== false) {
$company_name = $this->companyName($project_id);
if(!$company_name){
... ... @@ -433,17 +436,71 @@ class UpdateSeoTdk extends Command
}
$prompt = str_replace('{company name}', $company_name, $prompt);
}
// company detail
if(strpos($prompt, '{company detail}') !== false) {
$company_detail = $this->companyName($project_id, 'company_detail');
if(!$company_detail){
echo '公司英文描述为空 跳过' . PHP_EOL;
return false;
}
$prompt = str_replace('{company detail}', $company_detail, $prompt);
}
// 前缀关键词
if(preg_match_all("/\{qz_(\d+)\}/", $prompt, $matches)) {
foreach ($matches[0] as $key=>$val) {
$keyword = $this->getPrefixKeyword($project_id, 'prefix', $matches[1][$key]);
if(!$keyword){
echo '前缀关键词为空 跳过' . PHP_EOL;
return false;
}
$prompt = str_replace($val, $keyword, $prompt);
}
}
// 后缀关键词
if(preg_match_all("/\{hz_(\d+)\}/", $prompt, $matches)) {
foreach ($matches[0] as $key=>$val) {
$keyword = $this->getPrefixKeyword($project_id, 'suffix', $matches[1][$key]);
if(!$keyword){
echo '前缀关键词为空 跳过' . PHP_EOL;
return false;
}
$prompt = str_replace($val, $keyword, $prompt);
}
}
$prompt .= '.Please answer in ' . $this->getLang();
return $prompt;
}
/**
* 获取前后缀
* @param $project_id
* @param $type
* @param $num
* @return string
*/
public function getPrefixKeyword($project_id, $type, $num)
{
$str = '';
$info = $this->getDeployOptimize($project_id);
if (!empty($info['keyword_' . $type])) {
$fix_keyword = explode(",", $info['keyword_' . $type]);
//随机取
shuffle($fix_keyword);
if (count($fix_keyword) < $num)
return $str;
$keyword = array_slice($fix_keyword, 0, $num);
$str = implode(", ", $keyword);
}
return $str;
}
public function getDeployOptimize($project_id){
$cache_key = 'project_deploy_optimize_info_' . $project_id;
$info = Cache::get($cache_key);
if(!$info){
$projectOptimizeModel = new DeployOptimize();
$info = $projectOptimizeModel->read(['project_id' => $project_id], ['id', 'company_en_name', 'company_en_description']);
$info = $projectOptimizeModel->read(['project_id' => $project_id], ['id', 'company_en_name', 'company_en_description', 'keyword_prefix', 'keyword_suffix']);
$projectKeywordModel = new ProjectKeyword();
$keywordInfo = $projectKeywordModel->read(['project_id'=>$project_id]);
$info['main_keyword'] = '';
... ... @@ -466,6 +523,7 @@ class UpdateSeoTdk extends Command
{
$data = [
'product_long_description',
'company_detail'
];
$info = $this->getDeployOptimize($project_id);
if (in_array($key, $data)) {
... ...
... ... @@ -56,6 +56,10 @@ class AiCommandLogic extends BaseLogic
$prompt = '';
}
}
if(strpos($prompt, '{company detail}') !== false) {
$company_introduction = $this->getDeployOptimize('company_en_description');
$prompt = str_replace('{company detail}', $company_introduction, $prompt);
}
if(trim($ai_command->ai) == '{core keywords 8}'){
$ai_send = false;
... ... @@ -100,7 +104,7 @@ class AiCommandLogic extends BaseLogic
$info = Cache::get($cache_key);
if(!$info){
$projectOptimizeModel = new DeployOptimize();
$info = $projectOptimizeModel->read(['project_id' => $project_id], ['id', 'company_en_name', 'company_en_description']);
$info = $projectOptimizeModel->read(['project_id' => $project_id], ['id', 'company_en_name', 'company_en_description', 'keyword_prefix', 'keyword_suffix']);
$projectKeywordModel = new ProjectKeyword();
$keywordInfo = $projectKeywordModel->read(['project_id'=>$project_id]);
$info['main_keyword'] = '';
... ...