京东云言犀API调用必须使用HTTPS POST,Header中严格要求X-Api-Key和Content-Type: application/json,缺一则返回401或400;input须为JSON字符串,prompt需结构化,PHP需设CURLOPT_RETURNTRANSFER并校验JSON解码结果。

京东云言犀 API 的 PHP 调用必须带 X-Api-Key 和 Content-Type: application/json
京东云言犀大模型(如 jr-bert-base 或 jr-llm-chat)不支持直接网页表单提交或 GET 请求,必须走 HTTPS POST,且 Header 里缺一不可:X-Api-Key(你在京东云控制台申请的密钥)、Content-Type: application/json。漏掉任一个,返回都是 401 Unauthorized 或 400 Bad Request。
常见错误现象:
- 用
file_get_contents()直接传数组,没设 Header → 返回空响应或 JSON 解析失败 - 把 API Key 写在 URL 参数里(如
?api_key=xxx)→ 京东云直接拒绝,不进鉴权逻辑 - POST body 用
http_build_query()拼成 query string → 服务端收不到input字段,报"missing required field: input"
实操建议:
- 用
cURL发起请求,显式设置curl_setopt($ch, CURLOPT_HTTPHEADER, [...]) -
input字段必须是字符串,不是数组;即使你传的是多轮对话,也要先json_encode()成字符串再塞进去 - 京东云文档里写的
model值(如jr-llm-chat)要和控制台开通的服务完全一致,大小写、中横线都不能错
生成商品描述时,prompt 要结构化,别堆关键词
言犀不是关键词匹配引擎,它对 prompt 的格式敏感。直接丢一句“写个手机描述”效果差,模型容易编造参数或套话。真实电商场景下,你要喂给它的最少包含:品类、核心卖点、目标人群、语气倾向。
立即学习“PHP免费学习笔记(深入)”;
使用场景示例:后台批量生成 SKU 描述,用于上架
错误写法:
{"input": "iPhone 15 手机描述"}
推荐写法(简洁、可控):
{"input": "你是一名资深数码编辑,请用200字以内、口语化但专业的语气,为京东自营的iPhone 15 128GB 版本写一段商品详情页首屏文案。重点提A17芯片、灵动岛、USB-C接口,不提价格和促销信息。"}
为什么这样做:
- 指定角色(“数码编辑”)比“AI助手”更易触发专业语感
- 限定字数和位置(“首屏文案”)能抑制模型自由发挥
- 明确排除项(“不提价格”)比只说“要什么”更有效
- 京东云当前版本对中文指令理解强于英文,全中文 prompt 更稳
curl_exec() 返回空或乱码?检查 CURLOPT_RETURNTRANSFER 和编码
PHP 默认 curl_exec() 是直接输出响应体,不是返回字符串。如果没设 CURLOPT_RETURNTRANSFER,你会得到 null 或空字符串,但 error_log 里看不到明显报错。
另一个高频坑是编码:京东云返回 UTF-8 JSON,但如果你的 PHP 文件本身是 GBK,或者用了 iconv() 错误转码,json_decode() 就会失败,返回 null。
实操建议:
- 必须加
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true) - 不要手动
mb_convert_encoding(),确保 PHP 文件保存为 UTF-8 无 BOM - 调用
json_decode($response, true)后,立刻检查json_last_error(),不是只看是否为null - 如果返回
"code":429,说明 QPS 超限——京东云免费层默认 1次/秒,别用foreach狂刷
客服回复生成需控制长度和兜底逻辑
用言犀做客服自动回复,最怕模型“答非所问”或“越说越多”。京东云接口虽有 max_tokens 参数,但实际截断不精准,尤其遇到中文标点或换行时容易崩。
安全做法是双保险:
- 在 prompt 里硬性约束,例如:“请用一句话回答,不超过30个汉字,不带标点符号”
- PHP 层再做截断:
mb_strimwidth($text, 0, 60, '…', 'UTF-8')(注意是字节数,不是字符数) - 永远准备 fallback:当
json_decode()失败、或返回output为空、或含敏感词(如“京东”“自营”被误删),就返回预设的兜底句,比如“我正在学习中,请稍等” - 别把用户原始问题原样传给模型——先过滤掉 HTML 标签、SQL 关键字、过长文本(>500 字截断),否则可能触发风控拦截
真正难的不是调通 API,而是让每次输出稳定落在业务预期边界内。prompt 工程 + PHP 层校验 + 降级策略,三者缺一不可。











