Mistral.rs 的 API 要求 JSON 请求体字段名必须为标准 camelCase(如 model、messages、toolChoice),PHP 7.2 本身不限制大小写,但需确保数组键名严格符合该规范,否则返回 400 错误。

PHP 7.2 调用 Mistral(如通过 mistral.rs 的 HTTP API)时,请求体(JSON payload)中的字段名大小写是有要求的,但这个要求来自 Mistral API 协议本身,而非 PHP 语言或 cURL 的限制。
Mistral.rs 的 /v1/chat/completions 接口遵循 OpenAI 兼容协议。该协议对 JSON 请求体中字段名使用严格的驼峰命名(camelCase),例如:
modelmessagestoolstool_choicetemperaturemax_tokens
这些字段名必须小写开头、后续单词首字母大写(即标准 camelCase),不能写成 MODEL、Messages、TOOL_CHOICE 或 tool-choice。否则,mistral.rs 服务端会返回 400 错误(如 "error": "invalid request" 或解析失败提示),因为其 JSON 解析器按结构体字段严格匹配。
PHP 7.2 本身不干涉 JSON 字段大小写——它只负责把数组 json_encode() 成字符串。关键在你构造的 PHP 数组键名是否符合规范:
立即学习“PHP免费学习笔记(深入)”;
✅ 正确示例(键名严格 camelCase):
$data = [
'model' => 'Qwen/Qwen3-4B',
'messages' => [['role' => 'user', 'content' => '你好']],
'temperature' => 0.7,
'tools' => [[
'type' => 'function',
'function' => [
'name' => 'get_weather',
'parameters' => ['type' => 'object', 'properties' => ['city' => ['type' => 'string']]]
]
]]
];
$body = json_encode($data);❌ 错误示例(大小写不匹配):
$data = [
'Model' => 'Qwen/Qwen3-4B', // ❌ 首字母大写
'MESSAGES' => [...], // ❌ 全大写
'tool_choice' => 'auto', // ❌ 下划线风格(OpenAI 协议不用)
'max-tokens' => 1024 // ❌ 连字符(非法 JSON 键名)
];注意:
-
json_encode()输出的 JSON 字符串中,键名完全由 PHP 数组的键决定,PHP 不做自动转换; - Mistral.rs(及所有 OpenAI 兼容服务)不接受大小写变体,这是接口契约,不是松散约定;
- 工具调用(
tools/tool_choice)字段同样需 camelCase,比如type、function、name、parameters都是小写开头。
总结:不是 PHP 有要求,而是 Mistral.rs 的 API 要求请求体 JSON 的字段名必须为标准 camelCase。PHP 7.2 只要如实编码即可,重点是你写的数组键名是否正确。



















