โจ Fitur Utama
- Endpoint REST API untuk generate text dari Gemini AI
- Autentikasi x-api-key untuk keamanan
- Support untuk response dalam format JSON
- Konfigurasi temperature dan max tokens
- Error handling yang baik
- Health check endpoint
- Dokumentasi API otomatis dengan Swagger UI
- Manajemen API key (generate, add, remove, validate)
- Analisis Dokumen menggunakan Gemini Vision API
- Web Interface untuk analisis dokumen
๐ Keamanan
- Semua endpoint yang memerlukan autentikasi menggunakan x-api-key header
- API key divalidasi untuk format dan panjang minimal
- Error 401 dikembalikan untuk autentikasi yang gagal
- API key disembunyikan sebagian saat ditampilkan untuk keamanan
- File upload dibatasi berdasarkan ekstensi
- Validasi ukuran file
๐ Dokumentasi API
Setelah server berjalan, Anda dapat mengakses dokumentasi interaktif:
๐ Analisis Dokumen
- File gambar: Langsung dianalisis menggunakan Gemini Vision
- File teks: Dibaca sebagai text dan dianalisis
- File PDF/DOC: Memerlukan konversi terlebih dahulu (OCR atau ekstraksi teks)
โ๏ธ Parameter
- prompt (required): Text prompt untuk Gemini AI
- max_tokens (optional): Maksimum jumlah token dalam response (default: 1000)
- temperature (optional): Kreativitas response 0.0-1.0 (default: 0.7)
- file (required untuk analisis dokumen): File yang akan dianalisis
๐ API Endpoints
GET/healthNo Auth
Returns status kesehatan service
GET/No Auth
Returns informasi API
POST/generateAuth Required
Generate text response dari Gemini AI
{
"prompt": "Jelaskan tentang artificial intelligence",
"max_tokens": 1000,
"temperature": 0.7
}
POST/generate-jsonAuth Required
Generate response dalam format JSON
{
"prompt": "Buat daftar 3 kota di Indonesia dengan populasi",
"max_tokens": 1000,
"temperature": 0.7
}
POST/analyze-documentAuth Required
Analisis dokumen menggunakan Gemini Vision API
Format File: PNG, JPG, JPEG, GIF, BMP, TXT, PDF, DOC, DOCX
curl -X POST "http://localhost:8000/analyze-document"
-H "x-api-key: your-api-key"
-F "file=@document.jpg"
-F "prompt=Analisis isi dokumen ini dan berikan poin-poin penting"
-F "max_tokens=3000"
-F "temperature=0.2"
curl -X POST "http://localhost:8000/analyze-document" \
-H "x-api-key: your-api-key" \
-F "file=@document.jpg" \
-F "prompt=Analisis isi dokumen ini dan berikan poin-poin penting" \
-F "max_tokens=3000" \
-F "temperature=0.2"
๐ป Contoh Penggunaan - cURL
Generate Text
curl -X POST "http://localhost:8000/generate" \
-H "Content-Type: application/json" \
-H "x-api-key: your-user-api-key-here" \
-d '{"prompt": "Jelaskan tentang machine learning"}'
Generate JSON
curl -X POST "http://localhost:8000/generate-json" \
-H "Content-Type: application/json" \
-H "x-api-key: your-user-api-key-here" \
-d '{"prompt": "Buat daftar 5 makanan Indonesia"}'
Analisis Dokumen
curl -X POST "http://localhost:8000/analyze-document" \
-H "x-api-key: your-api-key" \
-F "file=@document.jpg" \
-F "prompt=Analisis isi dokumen ini dan berikan poin-poin penting"
๐ Contoh Penggunaan - Python
import requests
# Generate text
response = requests.post(
"http://localhost:8000/generate",
json={
"prompt": "Jelaskan tentang deep learning",
"max_tokens": 500,
"temperature": 0.8
},
headers={
"Content-Type": "application/json",
"x-api-key": "your-user-api-key-here"
}
)
print(response.json())
# Analisis dokumen
with open('document.jpg', 'rb') as f:
response = requests.post(
"http://localhost:8000/analyze-document",
files={'file': f},
data={
'prompt': 'Analisis dokumen ini dan berikan ringkasan',
'max_tokens': 2000,
'temperature': 0.3
},
headers={'x-api-key': 'your-api-key'}
)
print(response.json())