1. Mục đích
Mẫu PHP này phù hợp để tích hợp từ website nội bộ, Drupal custom module hoặc ứng dụng PHP. Trong triển khai thật, PHP nên gọi API trung gian nội bộ; không nên để trình duyệt gọi trực tiếp Ollama.
2. Mẫu gọi API chat bằng PHP cURL
<?phpfunction ollama_chat(array $messages, string $model = 'gemma3:4b'): string {$url = 'http://127.0.0.1:11434/api/chat';$payload = ['model' => $model,'messages' => $messages,'stream' => false,'options' => ['temperature' => 0.2,'top_p' => 0.9,],];$ch = curl_init($url);curl_setopt_array($ch, [CURLOPT_POST => true,CURLOPT_HTTPHEADER => ['Content-Type: application/json',],CURLOPT_POSTFIELDS => json_encode($payload, JSON_UNESCAPED_UNICODE),CURLOPT_RETURNTRANSFER => true,CURLOPT_TIMEOUT => 120,]);$result = curl_exec($ch);if ($result === false) {$error = curl_error($ch);curl_close($ch);throw new RuntimeException('Lỗi gọi Ollama: ' . $error);}$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);curl_close($ch);if ($status < 200 || $status >= 300) {throw new RuntimeException('Ollama trả HTTP status: ' . $status . ' - ' . $result);}$data = json_decode($result, true);if (!isset($data['message']['content'])) {throw new RuntimeException('Phản hồi Ollama không đúng cấu trúc: ' . $result);}return $data['message']['content'];}$messages = [['role' => 'system','content' => 'Bạn là trợ lý AI nội bộ bệnh viện. Không bịa số liệu, căn cứ hoặc văn bản.',],['role' => 'user','content' => 'Hãy tạo dàn ý kế hoạch triển khai AI local trong bệnh viện.',],];try {$answer = ollama_chat($messages);echo $answer;} catch (Throwable $e) {echo 'Lỗi: ' . $e->getMessage();}
3. Mẫu gọi API generate
<?phpfunction ollama_generate(string $prompt, string $model = 'gemma3:4b'): string {$url = 'http://127.0.0.1:11434/api/generate';$payload = ['model' => $model,'prompt' => $prompt,'stream' => false,'options' => ['temperature' => 0.2,],];$ch = curl_init($url);curl_setopt_array($ch, [CURLOPT_POST => true,CURLOPT_HTTPHEADER => ['Content-Type: application/json'],CURLOPT_POSTFIELDS => json_encode($payload, JSON_UNESCAPED_UNICODE),CURLOPT_RETURNTRANSFER => true,CURLOPT_TIMEOUT => 120,]);$result = curl_exec($ch);if ($result === false) {$error = curl_error($ch);curl_close($ch);throw new RuntimeException($error);}curl_close($ch);$data = json_decode($result, true);return $data['response'] ?? '';}echo ollama_generate('Viết đoạn giới thiệu ngắn về chatbot AI local trong bệnh viện.');
4. Lưu ý khi dùng PHP
- Cần bật extension
curl. - Không đưa API endpoint Ollama ra frontend JavaScript.
- Nếu tích hợp website, nên gọi qua backend PHP.
- Cần timeout hợp lý.
- Cần xử lý lỗi rõ ràng.
- Không log dữ liệu nhạy cảm.
- Đăng nhập để gửi ý kiến