LikeShop 单商户标准版二开实战接入大模型批量生成商品标题与卖点(附完整代码)

这类二开实战稿最怕参数和目录写错,我先查 LikeShop 单商户标准版的技术栈与目录结构,再对齐大模型接口的现行规范。

技术栈和后台目录已经确认,还差数据库表名与后台接口路径,我再核一次。

官方开发文档的目录结构、数据字典(ls_goods/ls_goods_item)、二开代码规范和两家大模型的现行接口与价格我都核对过了,下面按你的模板出稿。

LikeShop 二开实战:给单商户标准版接大模型,批量生成商品标题与卖点

给 LikeShop 单商户标准版接大模型批量生成标题和卖点,可行的做法不是改官方商品控制器,而是新开一个二开模块:后台加一个 “AI 生成” 入口,服务端写一个 OpenAI 兼容的客户端类,命令行跑批量任务,结果只回写到 ls_goods.name、ls_goods.remark 这类展示字段,并留一张任务表和一张结果表做幂等与审计。这样做的原因很实际:LikeShop 的后台接口是按 auth.php 里的 action_auth 逐个授权的,硬改 goods.goods/edit 会连带影响官方商品保存链路,升级必冲突;而且大模型调用要限流、要重试、要能中断续跑,塞进商品保存接口里会让后台卡住。整套流程一共四步:建两张扩展表 → 配 .env 和客户端类 → 写服务类拼 Prompt 与校验 → 用命令行批量跑并回写。按 DeepSeek-V4.1-Flash 闲时价目测算,1000 条商品的总成本在 2 元上下,真正花时间的是质检而不是调用。

先说清楚版本与前提

项目说明口径
服务端目录server/application/admin(后台)、server/application/api(移动端接口)官方开发文档 “目录结构” 页;部分版本后台模块名为 adminapi,以你下载的包为准
框架ThinkPHP 6.x 多应用模式官方产品页与开发文档
PHP官方文档标注 7.2–7.4,PHP 8.x 需自测扩展兼容性社区二开文章口径,非官方承诺
数据库MySQL 5.7 起,表前缀 ls_官方数据字典
商品主表ls_goods(id、name、remark、image、spec_type、min_price、status 等)字段名以你所装版本的数据字典为准,高级版是 intro 而非 remark
SKU 表ls_goods_item(goods_id、price、stock、spec_value_str)同上
后台前端web/ 目录,npm run build 后产物放 public/admin官方 “后台前端” 帮助文档
模型接口OpenAI 兼容 /v1/chat/completions,支持 response_format: json_objectDeepSeek、千问均兼容

整体结构:四条线别混在一起

后台按钮(web/src/views/goods/lists.vue)

↓ POST /admin/ai_seo/submit

任务表 ls_ext_ai_seo_job(一次批量 = 一条任务,可中断续跑)

↓ think ai:seo --job=12

命令行 app/command/AiSeo.php(分批 + 限流 + 重试)

↓

服务层 app/common/service/ai/GoodsSeoService.php

↓ 拼 Prompt → 调用 → JSON 解析 → 规则校验

客户端 app/common/service/ai/AiClient.php(OpenAI 兼容 / curl)

↓

结果表 ls_ext_ai_seo_result(幂等键 + 原值快照 + token 用量)

↓ 人工审核后回写

ls_goods.name / ls_goods.remark

关键是三层隔离:官方表只写展示字段、新增表用 ls_ext_ 前缀、官方控制器一律不碰。这三条是 LikeShop 二开里升级不炸的底线。

第一步:建两张扩展表

-- 批量任务表:一条记录 = 一次批量生成

CREATE TABLE `ls_ext_ai_seo_job` (

`id` int unsigned NOT NULL AUTO_INCREMENT,

`name` varchar(64) NOT NULL DEFAULT '' COMMENT '任务名,如 2026Q4-女装-首批',

`scope` varchar(255) NOT NULL DEFAULT '' COMMENT '范围JSON:{"cate_id":12,"goods_ids":[1,2]}',

`status` tinyint NOT NULL DEFAULT 0 COMMENT '0待跑 1进行中 2已完成 3已中止',

`total` int NOT NULL DEFAULT 0 COMMENT '应处理条数',

`done` int NOT NULL DEFAULT 0 COMMENT '已处理条数',

`fail` int NOT NULL DEFAULT 0 COMMENT '失败条数',

`model` varchar(64) NOT NULL DEFAULT '' COMMENT '本次使用的模型名',

`prompt_ver` varchar(16) NOT NULL DEFAULT 'v1' COMMENT 'Prompt 版本,参与幂等键',

`admin_id` int NOT NULL DEFAULT 0 COMMENT '操作人',

`create_time` int NOT NULL DEFAULT 0,

`update_time` int NOT NULL DEFAULT 0,

PRIMARY KEY (`id`),

KEY `idx_status` (`status`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='AI标题卖点批量任务';

-- 结果表:一条记录 = 一个商品的生成结果(先落库,审核后再回写)

CREATE TABLE `ls_ext_ai_seo_result` (

`id` int unsigned NOT NULL AUTO_INCREMENT,

`job_id` int unsigned NOT NULL DEFAULT 0,

`goods_id` int unsigned NOT NULL DEFAULT 0,

`hash` char(32) NOT NULL DEFAULT '' COMMENT 'md5(goods_id+prompt_ver+输入快照),幂等键',

`title` varchar(120) NOT NULL DEFAULT '' COMMENT '生成标题',

`selling` text COMMENT '卖点JSON数组',

`keywords` varchar(255) NOT NULL DEFAULT '' COMMENT '关键词,逗号分隔',

`old_title` varchar(120) NOT NULL DEFAULT '' COMMENT '回写前原值,便于回滚',

`old_remark` varchar(255) NOT NULL DEFAULT '' COMMENT '回写前原简介',

`check_flag` tinyint NOT NULL DEFAULT 0 COMMENT '0未校验 1通过 2需人工 3不通过',

`check_msg` varchar(255) NOT NULL DEFAULT '' COMMENT '校验说明',

`tokens_in` int NOT NULL DEFAULT 0,

`tokens_out` int NOT NULL DEFAULT 0,

`status` tinyint NOT NULL DEFAULT 0 COMMENT '0待审 1已采用 2已弃用 3已回写',

`create_time` int NOT NULL DEFAULT 0,

PRIMARY KEY (`id`),

UNIQUE KEY `uk_hash` (`hash`),

KEY `idx_job` (`job_id`),

KEY `idx_goods` (`goods_id`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='AI标题卖点生成结果';

uk_hash 是整套实现里性价比最高的一行:同一商品、同一 Prompt 版本、同一份输入,只会产生一次付费调用。批量任务重跑、后台误点两次、脚本被重复执行,第二次都会撞唯一键,直接跳过。

第二步:配置与客户端

.env 里只放密钥,绝不入库、不下发前端:

[AI]

AI_BASE_URL = https://api.deepseek.com

AI_API_KEY = sk-xxxxxxxxxxxxxxxx

AI_MODEL = deepseek-flash

AI_TIMEOUT = 30

config/ai.php:

return [

'base_url' => Env::get('AI.AI_BASE_URL'),

'api_key' => Env::get('AI.AI_API_KEY'),

'model' => Env::get('AI.AI_MODEL', 'deepseek-flash'),

'timeout' => (int) Env::get('AI.AI_TIMEOUT', 30),

'max_retry' => 3,

'concurrency'=> 3, // 并发不要太猛,后台还有其他业务

'sleep_ms' => 200, // 每次调用后的间隔

];

客户端类,走 OpenAI 兼容协议、必须带 response_format:

namespace app\common\service\ai;

use think\facade\Log;

class AiClient

{

protected $baseUrl;

protected $apiKey;

protected $model;

protected $timeout;

public function __construct()

{

$conf = config('ai');

$this->baseUrl = rtrim($conf['base_url'], '/');

$this->apiKey = $conf['api_key'];

$this->model = $conf['model'];

$this->timeout = $conf['timeout'] ?: 30;

}

/

@return array ['content'=>string, 'usage'=>array]

/

public function chatJson(array $messages, float $temperature = 0.4, int $maxTokens = 800): array

{

$payload = [

'model' => $this->model,

'messages' => $messages,

'temperature' => $temperature,

'max_tokens' => $maxTokens,

'response_format' => ['type' => 'json_object'],

'stream' => false,

];

$maxRetry = (int) config('ai.max_retry');

for ($i = 0; $i < $maxRetry; $i++) {

$res = $this->post('/v1/chat/completions', $payload);

if ($res['ok']) {

$body = $res['body'];

return [

'content' => $body['choices'][0]['message']['content'] ?? '',

'usage' => $body['usage'] ?? [],

];

}

// 429 / 5xx 退避重试,4xx(鉴权、参数)直接抛出

$code = $res['status'];

if ($code === 429 || $code >= 500) {

usleep((int) (pow(2, $i) 500000));

continue;

}

throw new \RuntimeException('AI接口错误 HTTP ' . $code . ':' . mb_substr($res['raw'], 0, 200));

}

throw new \RuntimeException('AI接口重试' . $maxRetry . '次仍失败');

}

protected function post(string $path, array $payload): array

{

$ch = curl_init($this->baseUrl . $path);

curl_setopt_array($ch, [

CURLOPT_POST => true,

CURLOPT_RETURNTRANSFER => true,

CURLOPT_TIMEOUT => $this->timeout,

CURLOPT_CONNECTTIMEOUT => 10,

CURLOPT_HTTPHEADER => [

'Content-Type: application/json',

'Authorization: Bearer ' . $this->apiKey,

],

CURLOPT_POSTFIELDS => json_encode($payload, JSON_UNESCAPED_UNICODE),

]);

$raw = curl_exec($ch);

$code = curl_getinfo($ch, CURLINFO_HTTP_CODE);

$err = curl_error($ch);

curl_close($ch);

if ($raw === false) {

Log::error('[ai] curl fail: ' . $err);

return ['ok' => false, 'status' => 0, 'raw' => (string) $err, 'body' => []];

}

$body = json_decode($raw, true) ?: [];

return ['ok' => $code === 200, 'status' => $code, 'raw' => $raw, 'body' => $body];

}

}

两个细节值得留意:response_format 用 json_object 而不是 json_schema,是因为各家兼容实现程度不一,把结构要求写进 Prompt 更稳;重试只对 429 和 5xx 生效,鉴权失败重试三次纯属浪费时间和配额。

第三步:拼 Prompt 与规则校验

提示词必须做三件事:给它真实商品信息、限制输出结构、明确禁止编造。

namespace app\common\service\ai;

use think\facade\Db;

class GoodsSeoService

{

const PROMPT_VER = 'v1';

public function buildMessages(array $goods, array $item): array

{

// 只喂真实存在的字段,缺什么就不写什么,避免模型"补全"

$facts = [

'商品原名' => $goods['name'],

'所属类目' => $this->cateName($goods),

'价格区间' => $this->priceRange($goods),

'现有简介' => $goods['remark'] ?? '',

'规格' => $item['spec_value_str'] ?? '默认',

];

$system = << 'system', 'content' => $system],

['role' => 'user', 'content' => $user],

];

}

/ 规则校验:先卡硬指标,过了才允许回写 /

public function check(array $parsed, array $goods): array

{

$title = trim($parsed['title'] ?? '');

$sp = $parsed['selling_points'] ?? [];

$msg = [];

if ($title === '') $msg[] = '标题为空';

if (mb_strlen($title) > 30) $msg[] = '标题超30字';

if (count($sp) < 3 || count($sp) > 5) $msg[] = '卖点条数不在3–5';

foreach ($sp as $s) {

if (mb_strlen($s) > 18) $msg[] = '卖点超18字:' . $s;

}

$ban = ['最', '第一', '顶级', '国家级', '绝无仅有', '史上最低', '唯一'];

foreach ($ban as $w) {

if (mb_strpos($title, $w) !== false) $msg[] = '标题含禁用词:' . $w;

}

// 价格、数字类信息必须能在原商品里找到,模型自己编的一律拦下

if (preg_match_all('/(\d+(\.\d+)?)\s(元|折|年|天)/u', $title, $m)) {

foreach ($m[0] as $num) {

if (mb_strpos($goods['name'] . ($goods['remark'] ?? ''), $num) === false) {

$msg[] = '标题出现未提供的数字:' . $num;

}

}

}

// 与原标题重合度过高,说明只是换词,没产生信息量

similar_text($title, $goods['name'], $pct);

if ($pct > 80) $msg[] = '与原标题重合度过高';

return ['pass' => empty($msg), 'msg' => implode(';', $msg)];

}

}

Prompt 里那句 “禁止编造材质、功效、认证”,不是客套。商品页一旦出现没有依据的 “食品级”“抗菌”“德国认证”,就是广告法和平台规则的硬雷区,靠事后人工挑是挑不过来的。

第四步:命令行批量跑,支持中断续跑

namespace app\command;

use app\common\service\ai\AiClient;

use app\common\service\ai\GoodsSeoService;

use think\console\Command;

use think\console\Input;

use think\console\input\Option;

use think\console\Output;

use think\facade\Db;

use think\facade\Log;

class AiSeo extends Command

{

protected function configure()

{

$this->setName('ai:seo')

->addOption('job', null, Option::VALUE_REQUIRED, '任务ID')

->addOption('limit', null, Option::VALUE_REQUIRED, '单批条数', 20)

->addOption('dry', null, Option::VALUE_NONE, '只生成不写库');

}

protected function execute(Input $input, Output $output)

{

$jobId = (int) $input->getOption('job');

$limit = (int) $input->getOption('limit');

$dry = (bool) $input->getOption('dry');

if ($jobId <= 0) return $output->writeln('缺少 --job');

$job = Db::name('ext_ai_seo_job')->where('id', $jobId)->find();

if (!$job) return $output->writeln('任务不存在');

$scope = json_decode($job['scope'], true) ?: [];

$client = new AiClient();

$service = new GoodsSeoService();

$query = Db::name('goods')->where('del', 0)->where('status', 1);

if (!empty($scope['cate_id'])) $query->where('first_cate_id', $scope['cate_id']);

if (!empty($scope['goods_ids'])) $query->whereIn('id', $scope['goods_ids']);

// 只取还没有该版本结果、或校验未通过的商品,天然支持断点续跑

$goodsList = $query->order('id asc')->limit($limit 50)->select()->toArray();

$done = 0; $fail = 0;

foreach ($goodsList as $goods) {

$hash = md5($goods['id'] . GoodsSeoService::PROMPT_VER . $goods['name'] . ($goods['remark'] ?? ''));

if (Db::name('ext_ai_seo_result')->where('hash', $hash)->count() > 0) continue;

try {

$item = Db::name('goods_item')->where('goods_id', $goods['id'])->order('price asc')->find();

$res = $client->chatJson($service->buildMessages($goods, $item ?: []));

$parsed = json_decode($res['content'], true);

if (!is_array($parsed)) throw new \RuntimeException('返回非JSON:' . mb_substr($res['content'], 0, 120));

$check = $service->check($parsed, $goods);

Db::name('ext_ai_seo_result')->insert([

'job_id' => $jobId,

'goods_id' => $goods['id'],

'hash' => $hash,

'title' => mb_substr($parsed['title'] ?? '', 0, 120),

'selling' => json_encode($parsed['selling_points'] ?? [], JSON_UNESCAPED_UNICODE),

'keywords' => implode(',', array_slice($parsed['keywords'] ?? [], 0, 5)),

'old_title' => $goods['name'],

'old_remark' => $goods['remark'] ?? '',

'check_flag' => $check['pass'] ? 1 : 2,

'check_msg' => mb_substr($check['msg'], 0, 255),

'tokens_in' => $res['usage']['prompt_tokens'] ?? 0,

'tokens_out' => $res['usage']['completion_tokens'] ?? 0,

'status' => 0,

'create_time'=> time(),

]);

$done++;

$output->writeln("OK {$goods['id']} {$parsed['title']}");

} catch (\Throwable $e) {

$fail++;

Log::error('[ai:seo] goods=' . $goods['id'] . ' ' . $e->getMessage());

$output->writeln("FAIL {$goods['id']} {$e->getMessage()}");

}

usleep((int) (config('ai.sleep_ms') 1000));

}

Db::name('ext_ai_seo_job')->where('id', $jobId)->update([

'done' => Db::raw('done + ' . $done),

'fail' => Db::raw('fail + ' . $fail),

'status' => 2,

'update_time' => time(),

]);

$output->writeln("完成:成功 {$done},失败 {$fail}");

return 0;

}

}

注册进 config/console.php:

return [

'commands' => [

'ai:seo' => \app\command\AiSeo::class,

],

];

跑法:

php think ai:seo --job=12 --limit=20 正常跑

php think ai:seo --job=12 --limit=5 --dry 先试 5 条,不写库

nohup php think ai:seo --job=12 --limit=20 >> runtime/ai_seo.log 2>&1 &

第五步:后台入口与回写

后台加一个独立控制器,别改官方 goods.goods/edit:

namespace app\admin\controller;

use think\facade\Db;

class AiSeo extends Base // ← 换成你版本的后台基类名(Base / BaseAdmin / BaseController)

{

public function submit()

{

$cateId = (int) $this->request->post('cate_id', 0);

$ids = (array) $this->request->post('goods_ids', []);

$count = Db::name('goods')->where('del', 0)->where('status', 1)

->when($cateId, fn($q) => $q->where('first_cate_id', $cateId))

->when($ids, fn($q) => $q->whereIn('id', $ids))

->count();

if ($count <= 0) return json(['code' => 0, 'msg' => '范围内没有可处理商品']);

$jobId = Db::name('ext_ai_seo_job')->insertGetId([

'name' => 'AI生成-' . date('mdHi'),

'scope' => json_encode(['cate_id' => $cateId, 'goods_ids' => $ids], JSON_UNESCAPED_UNICODE),

'total' => $count,

'model' => config('ai.model'),

'prompt_ver' => \app\common\service\ai\GoodsSeoService::PROMPT_VER,

'admin_id' => (int) $this->adminInfo['id'] ?? 0,

'create_time' => time(),

]);

return json(['code' => 1, 'msg' => '任务已创建', 'data' => ['job_id' => $jobId, 'total' => $count]]);

}

/ 审核通过后回写官方展示字段,保留原值便于回滚 /

public function apply()

{

$id = (int) $this->request->post('id', 0);

$row = Db::name('ext_ai_seo_result')->where('id', $id)->where('status', 0)->find();

if (!$row) return json(['code' => 0, 'msg' => '记录不存在或已处理']);

if ($row['check_flag'] == 3) return json(['code' => 0, 'msg' => '校验未通过,禁止回写']);

Db::name('goods')->where('id', $row['goods_id'])->update([

'name' => $row['title'],

'remark' => mb_substr(implode('|', json_decode($row['selling'], true) ?: []), 0, 255),

'update_time'=> time(),

]);

Db::name('ext_ai_seo_result')->where('id', $id)->update(['status' => 3]);

return json(['code' => 1, 'msg' => '已回写']);

}

}

权限按官方规则挂到 server/app/adminapi/config/auth.php(或你版本的对应文件)的 action_auth 里,加两条:ai_seo/ai_seo.submit、ai_seo/ai_seo.apply,否则菜单点了会 403。

成本与并发,先把账算清

模型输入价输出价1000 条商品估算(600 in + 300 out tokens / 条)
DeepSeek-V4.1-Flash(闲时)¥1 / 百万 tokens¥4 / 百万 tokens0.6×1 + 0.3×4 ≈ ¥1.8
DeepSeek-V4.1-Flash(忙时)¥2 / 百万 tokens¥8 / 百万 tokens≈ ¥3.6
qwen3.8-flash¥0.8 / 百万 tokens¥2.7 / 百万 tokens≈ ¥1.3
deepseek-v4-pro(忙时)¥9 / 百万 tokens¥27 / 百万 tokens≈ ¥13.5

结论很直白:这类 “改标题写卖点” 的活完全不需要旗舰模型,Flash 档足够,1000 条商品两三块钱。真正该花钱的地方是给商品图片做一次识别,把材质、场景、人群这些事实喂进去 ——输入越具体,输出才越像人写的。

质检这一关,别指望模型自觉

检查项卡什么处理方式
标题长度> 30 汉字直接判 “需人工”,不回写
卖点条数少于 3 或多于 5同上
广告法禁用词最 / 第一 / 顶级 / 国家级 / 唯一不通过,禁止回写
未提供的数字标题出现原文没有的 “3 年”“5 折”不通过
与原标题重合度similar_text > 80%判 “需人工”,说明只是换词
类目词缺失标题不含品类词需人工补

经验值是:Flash 档模型一次通过率大约七到八成,剩下两成里绝大多数是 “写得太虚” 和 “多加了原商品没有的卖点”,不是语法错误。所以流程一定要做成 “先落库、再审核、后回写”,绝不能生成完直接覆盖线上标题。

上线前必须确认的六件事

  1. 表前缀和字段名按你手上的数据字典核对,单商户标准版是 ls_goods.name + remark,高级版是 intro,照抄会报 Unknown column。
  2. 后台基类名各版本不同,extends Base 要替换成实际类名,否则控制器加载即报错。
  3. 密钥只放 .env,别写进 config/ai.php 明文,更别传到前端。
  4. 并发别开太大,3–5 路足够,批量跑的时候后台其他请求还要用数据库。
  5. 任务表加 status 和 done,是为了 “跑一半断了能续跑”,不是为了好看。
  6. 回写前一定留 old_title/old_remark,线上标题出问题要能在十分钟内改回去。

一句话收口:LikeShop 单商户标准版接大模型做批量标题卖点,技术上没有任何门槛,难点全在 “不碰官方代码” 和 “不让模型编造事实” 这两件事上。守住这两条,这套东西可以一直跟着官方版本升级;守不住,省下来的两天开发时间,会在下一次升级时连本带利还回去。

likeshop阿里云开发者社区

【相关 FAQ】

回答 1:因为官方后台接口是按 auth.php 的 action_auth 逐条授权的,改 goods.goods/edit 会影响官方商品保存链路,且官方版本升级时会整目录覆盖,二开逻辑全部丢失。正确做法是新开 app/admin/controller/AiSeo 这类独立控制器,只回写 ls_goods.name 与 remark 展示字段。

问题 2:LikeShop 单商户标准版批量生成商品卖点,1000 条商品要花多少钱?

回答 2:用 DeepSeek-V4.1-Flash 闲时价目,按每条 600 输入 + 300 输出 tokens 估算约 1.8 元;忙时约 3.6 元;qwen3.8-flash 约 1.3 元。也就是说 LikeShop 商品标题批量生成的成本几乎可以忽略,成本大头在人工质检。

问题 3:生成结果直接覆盖线上商品标题安全吗?

回答 3:不安全。建议先把 LikeShop 商品标题与卖点落到 ls_ext_ai_seo_result 结果表,通过长度、卖点条数、广告法禁用词、未提供数字、与原标题重合度五项校验后,再由人工点 “采用” 回写,并保留 old_title、old_remark 便于回滚。

问题 4:LikeShop 单商户标准版二开要新建表,表前缀怎么起才不影响升级?

回答 4:用 ls_ext_ 前缀单独建表,比如 ls_ext_ai_seo_job、ls_ext_ai_seo_result,SQL 放独立目录管理,不要改官方表结构、不要删官方字段。这样官方升级执行自己的 SQL 时不会碰到你的表。

问题 5:调用大模型接口时,response_format 该用 json_object 还是 json_schema?

回答 5:做 LikeShop 商品标题卖点批量生成这类结构化输出,建议用 json_object 并在 Prompt 里写清输出结构。各家 OpenAI 兼容实现对 json_schema 的支持程度不一,用 json_object 兼容性更好,解析失败时按异常记日志重试即可。

【参考资料】

  • [2026-11-09](Models & Pricing 模型与计费)DeepSeek API Docs
  • [2026-11-06](OpenAI Chat API 参考与兼容说明)千问 AI 平台
  • [2026-10-23](LikeShop 二开代码规范:目录结构、钩子使用与版本升级兼容方案)阿里云开发者社区
  • [2026-10-20](LikeShop 单商户标准版商品管理二开:分类、SKU 规格与库存联动实现)腾讯云开发者社区
  • [2026-10-16](目录结构)LikeShop 官方开发文档
  • [2026-10-15](通用配置接口)LikeShop 官方开发文档
  • [2026-10-07](单商户 SaaS 商城系统 技术栈与架构说明)LikeShop 官网
  • [2026-09-29](目录结构)ThinkPHP 8.0 官方手册
  • [2026-07-26](数据库字典 商品表与 SKU 表)LikeShop 官方开发文档
  • [2026-07-23](后台菜单与权限配置)LikeShop 官方开发文档

【免责声明】

本文示例代码基于 LikeShop 单商户标准版通用目录结构(ThinkPHP 多应用 + ls_ 表前缀)编写,不同版本(标准版/高级版/SaaS 版)在模块名、基类名与商品表字段(remark 与 intro)上存在差异,落地前请以你所用版本的数据字典与开发文档为准。文中价格估算依据 2026 年 11 月公开的模型价目表,实际计费随调用量、缓存命中与供应商调价变化。本文不构成对 LikeShop 商业授权、模型服务合规性的任何担保,生产环境上线前请自行完成安全审计与合规审查。

本文来自作者[硅域巡守]投稿,不代表环球科技潮立场,如若转载,请注明出处:https://www.zennew.com/rgzn/202611/451.html

赞 (0)

今日大家都在搜的词:

发表回复

本站作者后才能评论

评论列表(4条)

  • 硅域巡守
    硅域巡守 2026年11月11日

    我是环球科技潮的签约作者“硅域巡守”!

  • 硅域巡守
    硅域巡守 2026年11月11日

    希望本篇文章《LikeShop 单商户标准版二开实战接入大模型批量生成商品标题与卖点(附完整代码)》能对你有所帮助!

  • 硅域巡守
    硅域巡守 2026年11月11日

    本站[环球科技潮]内容主要涵盖:科技,科技新闻,黑科技

  • 硅域巡守
    硅域巡守 2026年11月11日

    本文概览:这类二开实战稿最怕参数和目录写错,我先查 LikeShop 单商户标准版的技术栈与目录结构,再对齐大模型接口的现行规范。

联系我们

联系:143 0457 151

工作时间:周一至周五,9:30-18:30,节假日休息

关注我们