PHP 7.2 通过调用 Ollama 的 HTTP API(如 /api/chat)并在请求体中指定 model 字段来使用不同本地模型,无需全局切换或重启服务,每次请求独立指定模型即可。

PHP 7.2 本身不能直接与 Ollama 的模型运行时交互,但可以通过调用 Ollama 的 HTTP API(默认 http://localhost:11434)来切换当前使用的本地模型——本质是让后续请求指定 model 名称,Ollama 会自动加载或拉取该模型(若未存在则首次拉取)。
确认 Ollama 已启动并监听本地 API
Ollama 默认启动后提供 REST 接口,需确保服务正在运行:
- 终端执行
ollama serve(后台常驻)或开机自启已配置 - 访问
curl http://localhost:11434/api/tags应返回已安装模型列表 - PHP 脚本需能访问该地址(注意 SELinux/firewalld 或 Docker 网络隔离可能拦截)
PHP 脚本中通过 API 指定模型(无需“切换”全局状态)
Ollama 没有“全局切换默认模型”的 API;每次请求在 payload 中传 "model": "xxx" 即可使用对应模型。示例(使用 cURL):
$url = 'http://localhost:11434/api/chat'; $data = json_encode([ 'model' => 'qwen2:1.5b', // ← 这里换模型名即可 'messages' => [['role' => 'user', 'content' => '你好']], 'stream' => false ]); $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, $data); curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: application/json']); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $response = curl_exec($ch); curl_close($ch); $result = json_decode($response, true); echo $result['message']['content'] ?? '调用失败';
提前拉取模型避免首次响应卡顿
若模型未安装,首次请求会触发拉取并阻塞较久。建议在脚本中预检查并异步拉取:
立即学习“PHP免费学习笔记(深入)”;
- 查模型是否存在:
curl -s http://localhost:11434/api/tags | jq -r '.models[].name' - 拉取模型(PHP 中用
exec("ollama pull qwen2:1.5b 2>/dev/null &")后台执行) - 或用 API 触发拉取:
POST /api/pull,body{"name":"qwen2:1.5b"},注意该接口流式返回,需处理 chunk
封装成可切换模型的函数
将模型名作为参数传入,复用请求逻辑:
function ollamaChat($model, $prompt) {
$url = 'http://localhost:11434/api/chat';
$data = json_encode([
'model' => $model,
'messages' => [['role' => 'user', 'content' => $prompt]],
'stream' => false
]);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$res = curl_exec($ch);
curl_close($ch);
return json_decode($res, true)['message']['content'] ?? '';
}
// 使用
echo ollamaChat('llama3.2:1b', '用中文简单介绍你自己');
echo ollamaChat('phi3:3.8b', '写一个 Python 快速排序函数');
不复杂但容易忽略:Ollama 的“模型切换”完全由每次请求的 model 字段决定,PHP 只需动态传参,无需维护状态或重启服务。



















