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.

Bài 6. Tích hợp Ollama với Python

1. Đặt vấn đề

Python là ngôn ngữ rất phù hợp để tích hợp Ollama trong các tác vụ AI local. Phần lớn pipeline xử lý tài liệu, RAG, FAISS, embedding, phân tích dữ liệu, đọc PDF/Word/Excel, tự động hóa và thử nghiệm model đều có thể thực hiện thuận lợi bằng Python. Trong bệnh viện, Python có thể dùng để xây dựng backend AI, script xử lý tài liệu, công cụ tạo embedding, API trung gian hoặc job chạy nền.

Tích hợp Ollama với Python là bước thực tế để biến model local thành một phần của workflow xử lý tài liệu và dữ liệu nội bộ.

2. Các cách tích hợp

Có hai cách phổ biến:

2.1. Gọi HTTP API trực tiếp

Dùng thư viện như requests để gửi request đến Ollama API.

2.2. Dùng thư viện client

Có thể dùng các thư viện hỗ trợ Ollama nếu phù hợp. Tuy nhiên, gọi HTTP trực tiếp giúp hiểu rõ request/response và dễ kiểm soát.

Trong môi trường bệnh viện, gọi HTTP qua API trung gian vẫn là kiến trúc tốt hơn nếu ứng dụng có người dùng cuối.

3. Ví dụ gọi API sinh văn bản bằng Python

Ví dụ đơn giản:

 
import requests

OLLAMA_URL = "http://127.0.0.1:11434/api/generate"

payload = {
"model": "assistant-qlcl",
"prompt": "Hãy viết 5 mục tiêu cải tiến chất lượng bệnh viện trong năm tới.",
"stream": False
}

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

data = response.json()
print(data.get("response", ""))
 

Đây là cách gọi cơ bản. Trong ứng dụng thật cần xử lý lỗi, timeout, log và bảo mật.

4. Ví dụ gọi API chat bằng Python

 
import requests

OLLAMA_URL = "http://127.0.0.1:11434/api/chat"

payload = {
"model": "assistant-hanhchinh",
"messages": [
{
"role": "user",
"content": "Hãy viết thông báo nội bộ về việc triển khai khảo sát hài lòng người bệnh."
}
],
"stream": False
}

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

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

API chat phù hợp khi cần hội thoại nhiều lượt.

5. Ví dụ tạo embedding bằng Python

 
import requests

OLLAMA_URL = "http://127.0.0.1:11434/api/embed"

payload = {
"model": "embedding-model",
"input": "Quy trình báo cáo sự cố y khoa tại bệnh viện"
}

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

data = response.json()
embedding = data["embeddings"][0]
print(len(embedding))
 

Tên endpoint và cấu trúc response có thể thay đổi theo phiên bản Ollama, nên cần kiểm tra thực tế trên hệ thống.

6. Python trong pipeline RAG

Python rất phù hợp để xây pipeline:

  1. Đọc file PDF/DOCX.
  2. Tách text.
  3. Làm sạch text.
  4. Chia chunk.
  5. Gọi embedding API.
  6. Lưu vector vào FAISS.
  7. Lưu metadata.
  8. Khi có câu hỏi, tạo embedding.
  9. Tìm chunk liên quan.
  10. Tạo prompt.
  11. Gọi Ollama generate/chat.
  12. Trả câu trả lời kèm nguồn.

Đây là hướng triển khai rất thực tế cho bệnh viện.

7. Xử lý timeout

Model có thể trả lời lâu. Python request nên đặt timeout hợp lý. Với câu trả lời dài hoặc RAG, timeout có thể cần 120–300 giây tùy tác vụ. Nhưng không nên để request treo vô hạn.

Cần xử lý:

  • Timeout.
  • Lỗi kết nối.
  • Ollama service dừng.
  • Model chưa tải.
  • Response không đúng định dạng.
  • GPU quá tải.
  • Request bị hủy.

8. Ghi log trong Python

Nên ghi log:

  • User hoặc service gọi.
  • Model.
  • Tác vụ.
  • Thời gian bắt đầu/kết thúc.
  • Thời gian phản hồi.
  • Lỗi.
  • Số token hoặc độ dài prompt nếu đo được.
  • Không ghi dữ liệu nhạy cảm nếu không cần.

Log giúp giám sát và debug.

9. Không hard-code thông tin nhạy cảm

Nếu Python app có API key, database password hoặc cấu hình nhạy cảm, không hard-code vào script. Dùng biến môi trường hoặc file cấu hình được phân quyền.

Với hệ thống bệnh viện, đây là nguyên tắc bắt buộc.

10. Kết luận

Python là lựa chọn rất mạnh để tích hợp Ollama với hệ thống AI local bệnh viện, đặc biệt cho RAG, FAISS, xử lý tài liệu và backend AI. Tuy nhiên, khi đưa vào vận hành thật, cần xử lý lỗi, timeout, log, bảo mật, phân quyền và dữ liệu nhạy cảm. Python nên gọi Ollama trong kiến trúc có kiểm soát, tốt nhất qua API trung gian nếu phục vụ người dùng cuối.