京东言犀API调用前必须确认app_key、app_secret、access_token三个参数:app_key为应用唯一标识,app_secret仅创建时可见,access_token需用前两者申请且2小时过期须缓存刷新。

京东言犀 API 调用前必须确认的三个业务参数
京东言犀大模型不开放通用接口,必须走京东云「言犀智能创作」服务,且需提前在 京东云控制台 → AI与大模型 → 言犀智能创作 中完成应用创建和权限开通。真正影响调用成败的不是代码,而是这三个参数是否准确填对:
-
app_key:应用创建后生成的唯一标识,不是京东账号ID,也不是API Key -
app_secret:对应密钥,仅创建时可见一次,丢失需重置 -
access_token:非静态值,需用app_key+app_secret向https://api.jd.com/oauth2/token申请,有效期2小时,必须缓存并自动刷新
PHP 发起 POST 请求获取商品文案的关键写法
京东言犀要求请求体为 JSON,且必须带 Content-Type: application/json 和 Authorization: Bearer {access_token}。常见错误是直接用 file_get_contents() 拼 URL,或漏掉认证头导致 401。
'为一款【无线降噪蓝牙耳机,支持30小时续航,IPX5防水】生成3条电商主图文案,每条不超过60字,突出卖点,口语化',
'model' => 'yanxi-pro', // 目前可用值:yanxi-base / yanxi-pro
'max_tokens' => 200,
'temperature' => 0.7
];
$options = [
'http' => [
'method' => 'POST',
'header' => [
"Content-Type: application/json\r\n",
"Authorization: Bearer {$access_token}\r\n"
],
'content' => json_encode($data, JSON_UNESCAPED_UNICODE)
]
];
$context = stream_context_create($options);
$result = file_get_contents('https://api.jd.com/yanxi/v1/chat/completions', false, $context);
if ($result === false) {
throw new Exception('HTTP request failed');
}
$response = json_decode($result, true);
echo $response['choices'][0]['message']['content'] ?? '无返回内容';
?>
返回结果里文案提取容易踩的坑
京东言犀返回结构和 OpenAI 不同:response['choices'] 是数组,但每项的文本不在 text 字段,而在 message['content'];且当请求失败时,错误信息藏在 response['error']['message'],不是 HTTP 状态码决定成败。
- 不要假设
$response['choices'][0]['text']存在 —— 这是 OpenAI 风格,言犀不用 - 检查
isset($response['choices'][0]['message']['content'])前,先判断isset($response['error']) - 若返回
"error": {"code": "INVALID_PARAMETER", "message": "prompt cannot be empty"},说明prompt字段为空或含非法字符(如未转义的换行)
生产环境必须处理的两个实际问题
本地跑通不等于线上可用。真实业务中,access_token 刷新和并发请求是高频故障源。
立即学习“PHP免费学习笔记(深入)”;
-
access_token必须持久化存储(如 Redis 或文件),不能每次请求都重新申请;刷新逻辑要加锁,避免多进程同时触发重复申请 - 京东言犀接口有 QPS 限制(默认 5次/秒),PHP-FPM 场景下若未做请求合并或队列缓冲,高并发时大量 429 错误
- 提示词(
prompt)中避免硬编码商品参数,应使用占位符 +sprintf()或模板引擎拼接,否则难以维护和 A/B 测试
app_key 和 access_token 的生命周期管理比调用本身更关键。很多人卡在第一步——以为拿到文档就能跑,其实连控制台里那个「应用状态」是不是「已上线」都没确认。











