Website được thiết kế tối ưu cho thành viên chính thức. Hãy Đăng nhập hoặc Đăng ký để truy cập đầy đủ nội dung và chức năng. Nội dung bạn cần không thấy trên website, có thể do bạn chưa đăng nhập. Nếu là thành viên của website, bạn cũng có thể yêu cầu trong nhóm Zalo "HI.AI Members" các nội dung bạn quan tâm.

Phụ lục 6. Mẫu gọi Ollama API bằng PHP

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

 
<?php

function 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

 
<?php

function 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.