PHP 8.4 中切换模型本质是每次请求时向 Ollama API 显式传入 model 参数;需先用 ollama pull 下载并 ollama list 确认模型已加载,再通过 ardagnsrn/ollama-php 库动态指定模型名,无需重启服务。

PHP 8.4 本身不直接管理模型切换,真正切换模型的是 Ollama 服务端——PHP 只是通过 HTTP 客户端调用它的 API。所以“在 PHP 中切换模型”,本质是在每次请求时,向 Ollama 的 /api/chat 或 /api/generate 接口显式传入目标模型名。
确保 Ollama 服务已启动并加载多个模型
切换的前提是模型已在本地准备就绪:
- 终端执行
ollama serve启动服务(默认监听http://127.0.0.1:11434) - 用
ollama pull qwen2.5:7b、ollama pull llama3.2等命令下载多个模型 - 运行
ollama list确认它们状态为loaded或至少已缓存
PHP 8.4 中动态指定模型(推荐方式)
使用 ardagnsrn/ollama-php 库(兼容 PHP 8.4),在每次请求时传入 model 参数即可切换:
$client = new \Ollama\Client('http://127.0.0.1:11434');
// 切换到 qwen2.5:7b
$response = $client->chat()->create([
'model' => 'qwen2.5:7b',
'messages' => [['role' => 'user', 'content' => '你好']]
]);
// 下次请求换用 llama3.2
$response = $client->chat()->create([
'model' => 'llama3.2',
'messages' => [['role' => 'user', 'content' => '解释下Transformer']]
]);
无需重启服务或修改配置,每次请求独立指定,完全由 PHP 控制。
立即学习“PHP免费学习笔记(深入)”;
避免常见错误
-
不依赖全局默认模型:Ollama 没有“当前激活模型”概念,不设全局 default;没传
model字段会报错 -
模型名必须精确匹配:大小写、冒号、版本号都要和
ollama list输出一致(如qwen2.5-coder:14b≠qwen2.5:14b) -
不要混淆 CLI 和 API 行为:PHP 调用的是 Ollama 的 REST API,和你在终端敲
ollama run xxx是两套逻辑,后者不影响前者
进阶:封装模型路由逻辑
可在项目中定义模型策略,比如按任务类型自动选模:
function getModelForTask(string $task): string
{
return match($task) {
'code' => 'qwen2.5-coder:14b',
'math' => 'phi3',
'chinese' => 'qwen2.5:7b',
default => 'llama3.2'
};
}
$model = getModelForTask('code');
$client->chat()->create(['model' => $model, 'messages' => [...]]);
这样 PHP 层就能灵活调度不同本地模型,真正实现按需切换。



















