Tích hợp AI vào Laravel
Hầu hết các hướng dẫn về AI đều mặc định rằng bạn sử dụng Python.
Sau 12 năm xây dựng các ứng dụng PHP, gần đây tôi đã thêm các tính năng AI vào một dashboard Laravel đang chạy thực tế (production). Tôi đã sử dụng nó để chuyển đổi dữ liệu thô thành các báo cáo dễ hiểu cho con người.
Phần khó khăn không nằm ở mã nguồn. Phần khó khăn là tìm kiếm nội dung PHP chất lượng về chủ đề này.
Dưới đây là cách bạn xây dựng một sự tích hợp AI sạch sẽ, sẵn sàng cho môi trường production trong Laravel.
Kiến trúc
Đừng rải rác các lời gọi API bên trong các controller của bạn. Thay vào đó, hãy sử dụng mô hình driver (driver pattern). Điều này cho phép bạn chuyển đổi giữa Claude và OpenAI chỉ với một thay đổi duy nhất trong tệp .env.
Định nghĩa một contract Tạo một
AiClientInterface. Điều này đảm bảo cả Claude và OpenAI đều tuân theo cùng một quy tắc.Xây dựng các driver của bạn Tạo
ClaudeClientvàOpenAiClient. Sử dụng HTTP client của Laravel để xử lý các yêu cầu. Nó giúp việc xử lý timeout và thử lại (retries) trở nên dễ dàng.Sử dụng Service Container Liên kết (bind) interface của bạn với một client cụ thể trong
AppServiceProvider. Sử dụng câu lệnhmatchđể chọn nhà cung cấp dựa trên cấu hình của bạn.
Sự khác biệt
Bạn phải biết năm chi tiết này để tránh lỗi:
• Claude sử dụng x-api-key trong header. OpenAI sử dụng Authorization: Bearer.
• Claude yêu cầu một header anthropic-version.
• Claude yêu cầu max_tokens. OpenAI coi đó là tùy chọn.
• Claude sử dụng một trường system ở cấp cao nhất. OpenAI sử dụng một tin nhắn với role: system.
• Đường dẫn phản hồi JSON khác nhau. Claude sử dụng content[0].text. OpenAI sử dụng choices[0].message.content.
Mẹo cho môi trường Production
• Sử dụng Caching: Các lời gọi AI thường chậm và tốn kém. Nếu dữ liệu giống nhau, hãy trả về kết quả từ cache của bạn. Điều này có thể cắt giảm 70% chi phí.
• Sử dụng Queues: Đừng bao giờ bắt người dùng phải chờ 10 giây để nhận phản hồi từ API. Hãy đẩy một job chạy ngầm (background job) và thông báo cho họ khi nó đã sẵn sàng.
• Xử lý lỗi: API có thể gặp lỗi. Hãy bao bọc các lời gọi của bạn trong các khối try-catch. Nếu AI thất bại, hãy hiển thị dữ liệu thô thay vì một trang web bị lỗi.
• Thiết lập giới hạn: Luôn đặt max_tokens để kiểm soát chi tiêu của bạn. Sử dụng các mô hình nhỏ hơn, rẻ hơn cho các tác vụ đơn giản như tóm tắt.
Bạn không cần phải học Python để xây dựng các tính năng AI. Kỹ năng PHP của bạn hoạt động hoàn hảo ở đây.
