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 5. Mẫu gọi Ollama API bằng Python

1. Mục đích

Mẫu Python này dùng để gọi Ollama API từ ứng dụng nội bộ. Trong thực tế bệnh viện, nên gọi Ollama qua API trung gian có xác thực, không để client gọi trực tiếp Ollama.

2. Cài thư viện

Nếu dùng requests:

 
pip install requests
 

3. Mẫu gọi API chat

 
import requests
from typing import List, Dict, Any


OLLAMA_URL = "http://127.0.0.1:11434/api/chat"
MODEL = "gemma3:4b"


def chat_with_ollama(messages: List[Dict[str, str]]) -> str:
payload: Dict[str, Any] = {
"model": MODEL,
"messages": messages,
"stream": False,
"options": {
"temperature": 0.2,
"top_p": 0.9,
},
}

response = requests.post(OLLAMA_URL, json=payload, timeout=120)
response.raise_for_status()

data = response.json()
return data["message"]["content"]


if __name__ == "__main__":
messages = [
{
"role": "system",
"content": "Bạn là trợ lý AI nội bộ bệnh viện. Không bịa số liệu hoặc căn cứ.",
},
{
"role": "user",
"content": "Hãy viết dàn ý kế hoạch triển khai chatbot nội bộ cho bệnh viện.",
},
]

answer = chat_with_ollama(messages)
print(answer)
 

4. Mẫu gọi API generate

 
import requests


def generate_text(prompt: str, model: str = "gemma3:4b") -> str:
url = "http://127.0.0.1:11434/api/generate"

payload = {
"model": model,
"prompt": prompt,
"stream": False,
"options": {
"temperature": 0.2,
},
}

response = requests.post(url, json=payload, timeout=120)
response.raise_for_status()
return response.json()["response"]


if __name__ == "__main__":
prompt = "Viết đoạn giới thiệu ngắn về AI local trong bệnh viện."
print(generate_text(prompt))
 

5. Mẫu gọi API embedding

 
import requests
from typing import List


def get_embedding(text: str, model: str = "ten-embedding-model") -> List[float]:
url = "http://127.0.0.1:11434/api/embeddings"

payload = {
"model": model,
"prompt": text,
}

response = requests.post(url, json=payload, timeout=120)
response.raise_for_status()
return response.json()["embedding"]


if __name__ == "__main__":
text = "Quy trình báo cáo sự cố y khoa trong bệnh viện"
vector = get_embedding(text)
print(len(vector))
 

6. Lưu ý an toàn

Trong môi trường bệnh viện:

  • Không gửi dữ liệu định danh người bệnh nếu chưa kiểm soát.
  • Không log toàn bộ prompt/response nhạy cảm.
  • Không mở API Ollama trực tiếp cho người dùng cuối.
  • Nên có API trung gian kiểm quyền, ghi log và lọc dữ liệu.