Hướng Dẫn Xây Dựng Tính Năng AI Trong Laravel Với Package Gemini
Giới Thiệu
Bạn đã chán ngấy việc đọc tài liệu và chỉ muốn xem mã nguồn? Hãy cùng khám phá cách bạn có thể sử dụng package hosseinhezami/laravel-gemini để thêm các tính năng AI mạnh mẽ vào ứng dụng Laravel của bạn. API của package này rất sạch sẽ, linh hoạt và mạnh mẽ.
Mục Lục
- Cài Đặt & Thiết Lập
- Ví Dụ Mã Nguồn: Thấy Được Hành Động
- Thực Tiễn Tốt Nhất
- Cạm Bẫy Thường Gặp
- Mẹo Tối Ưu Hiệu Suất
- Khắc Phục Sự Cố
- Kết Luận
Cài Đặt & Thiết Lập
Trước tiên, hãy cài đặt package.
bash
composer require hosseinhezami/laravel-gemini
Tiếp theo, xuất file cấu hình và thiết lập API key của bạn.
bash
php artisan vendor:publish --tag=gemini-config
Trong file .env, thêm dòng sau:
plaintext
GEMINI_API_KEY=your_gemini_api_key_here
Ví Dụ Mã Nguồn: Thấy Được Hành Động
1. Tạo Văn Bản Cơ Bản & Trò Chuyện
TextBuilder giúp việc tạo văn bản hoặc tạo giao diện trò chuyện trở nên đơn giản.
php
use HosseinHezami\LaravelGemini\Facades\Gemini;
// Yêu cầu đơn giản
$response = Gemini::text()
->prompt('Viết một câu slogan cho blog lập trình viên.')
->generate();
echo $response->content();
// Trò chuyện với lịch sử
$history = [
['role' => 'user', 'parts' => [['text' => 'Xin chào!']]],
['role' => 'model', 'parts' => [['text' => 'Chào bạn! Tôi có thể giúp gì?']]]
];
$response = Gemini::text()
->prompt('Thời tiết hôm nay thế nào?')
->history($history)
->temperature(0.7)
->generate();
echo $response->content();
2. Trích Xuất Dữ Liệu Có Cấu Trúc
Cần đầu ra JSON nhất quán từ một lời nhắc lộn xộn? Sử dụng structuredSchema.
php
$response = Gemini::text()
->structuredSchema([
'type' => 'object',
'properties' => [
'sentiment' => [
'type' => 'string',
'enum' => ['positive', 'negative', 'neutral']
],
'confidence' => ['type' => 'number'],
'key_points' => [
'type' => 'array',
'items' => ['type' => 'string']
]
],
'required' => ['sentiment']
])
->prompt('Sản phẩm rất tuyệt nhưng giao hàng thì chậm. Tôi rất thích các tính năng.')
->generate();
$analysis = json_decode($response->content());
// $analysis->sentiment, $analysis->key_points, v.v.
3. Tạo Hình Ảnh
Tạo hình ảnh từ một mô tả văn bản.
php
$response = Gemini::image()
->prompt('Một logo tối giản cho một startup công nghệ gọi là "Nexus", sử dụng màu xanh và xanh lá cây')
->generate();
// Lưu hình ảnh đã tạo trực tiếp
$response->save(storage_path('app/logo.png'));
4. Hiểu Biết Tài Liệu
Tải lên một file (PDF, DOC, hình ảnh) và đặt câu hỏi về nó.
php
// Đầu tiên, tải lên file đến máy chủ của Gemini
$fileUri = Gemini::files()->upload('document', $pathToInvoicePdf);
// Sau đó, sử dụng nó trong một lời nhắc
$response = Gemini::text()
->upload('document', $pathToInvoicePdf) // hoặc sử dụng $fileUri
->prompt('Tổng số tiền phải trả trên hóa đơn này là bao nhiêu?')
->generate();
echo $response->content();
5. Chuyển Văn Bản Thành Giọng Nói
Tạo âm thanh từ văn bản.
php
$response = Gemini::audio()
->prompt('Chào mừng bạn đến với ứng dụng của chúng tôi. Chúng tôi rất vui khi có bạn.')
->voiceName('Kore') // Kiểm tra tài liệu để biết các giọng nói có sẵn
->generate();
// Package này xử lý thông minh phản hồi nhị phân,
// cho phép bạn lưu trực tiếp.
$response->save(public_path('audio/welcome.mp3'));
6. Phát Trực Tiếp Thời Gian Thực
Điều này rất quan trọng để xây dựng các giao diện trò chuyện cảm thấy nhanh chóng và phản hồi.
php
// Trong controller của bạn (ví dụ: app/Http/Controllers/ChatController.php)
public function stream(Request $request)
{
return response()->stream(function () use ($request) {
Gemini::text()
->model('gemini-2.5-flash-lite') // Sử dụng một mô hình nhanh cho việc phát trực tiếp
->prompt($request->query('message'))
->stream(function ($chunk) {
$text = $chunk['text'] ?? '';
if (connection_aborted()) return;
echo "data: " . json_encode(['text' => $text]) . "\n\n";
ob_flush();
flush();
});
}, 200, [
'Content-Type' => 'text/event-stream',
'Cache-Control' => 'no-cache',
'Connection' => 'keep-alive',
'X-Accel-Buffering' => 'no',
]);
}
Thực Tiễn Tốt Nhất
- Đảm bảo bảo mật API Key: Không bao giờ để lộ API key trong mã nguồn công khai.
- Kiểm tra đầu vào: Luôn kiểm tra và xác thực đầu vào từ người dùng trước khi gửi đến API.
- Quản lý lịch sử: Theo dõi và quản lý lịch sử trò chuyện để cải thiện trải nghiệm người dùng.
Cạm Bẫy Thường Gặp
- Thời gian phản hồi chậm: Nếu API không phản hồi nhanh, hãy xem xét việc tối ưu hóa yêu cầu.
- Đầu ra không mong muốn: Đôi khi, AI có thể tạo ra đầu ra không chính xác. Hãy chuẩn bị cho những tình huống này trong mã của bạn.
Mẹo Tối Ưu Hiệu Suất
- Sử dụng mô hình nhanh: Chọn các mô hình tối ưu cho các tác vụ yêu cầu thời gian thực.
- Chỉ định kích thước cho đầu vào: Đảm bảo rằng đầu vào không quá dài để tránh lỗi.
Khắc Phục Sự Cố
- Kiểm tra kết nối mạng: Nếu bạn gặp sự cố trong việc gọi API, hãy kiểm tra kết nối internet của bạn.
- Kiểm tra cấu hình: Đảm bảo rằng các thông tin cấu hình đã được thiết lập chính xác trong file
.env.
Kết Luận
Với package laravel-gemini, bạn có thể dễ dàng thêm các tính năng AI mạnh mẽ vào ứng dụng Laravel của mình. Từ việc tạo văn bản, trích xuất dữ liệu, đến phát âm thanh, khả năng là vô tận!
Để tìm hiểu thêm thông tin chi tiết, hãy kiểm tra tài liệu chính thức tại:
https://hosseinhezami.github.io/laravel-gemini/
Nguồn:
Bạn sẽ xây dựng gì đầu tiên? Hãy cho tôi biết trong phần bình luận! 👇