Tutorial Marvin AI: Toolkit AI Engineering yang Ringan dan Powerful
Marvin adalah library Python yang dirancang untuk membuat AI engineering menjadi semudah mungkin. Berbeda dengan framework berat seperti LangChain atau LlamaIndex, Marvin mengambil pendekatan minimalis dengan menyediakan building blocks sederhana yang bisa langsung digunakan: AI functions, classifiers, extractors, dan models. Cukup satu decorator atau satu function call, dan LLM langsung bekerja untuk Anda.Dalam tutorial ini, kita akan mempelajari semua fitur utama Marvin mulai dari klasifikasi teks hingga membangun data transformation pipeline yang kompleks.
Apa itu Marvin?
Marvin adalah toolkit AI engineering yang dikembangkan oleh tim Prefect. Library ini dirancang dengan filosofi bahwa AI seharusnya menjadi komponen software biasa - bukan sesuatu yang memerlukan setup rumit atau abstraksi berlapis-lapis.
Fitur utama Marvin:
- aifn: Ubah function Python biasa menjadi AI-powered function
- aiclassifier: Klasifikasi teks ke dalam kategori yang telah ditentukan
- aiextract: Ekstraksi entity dan informasi terstruktur dari teks
- aimodel: Generate structured data menggunakan Pydantic models
- Image processing: Analisis dan pemrosesan gambar dengan AI
- Casting/Mapping: Transformasi data dengan AI
- Async support: Dukungan penuh untuk operasi asynchronous
Instalasi dan Setup
Instalasi Package
# Instalasi Marvin
pip install marvin
Untuk fitur image processing
pip install "marvin[image]"
Untuk semua fitur
pip install "marvin[all]"
Konfigurasi API Key
# Set environment variable untuk OpenAI
export OPENAIAPIKEY="sk-your-api-key-here"
# Atau konfigurasi via Python
import marvin
marvin.settings.openai.apikey = "sk-your-api-key-here"
Opsional: set model default
marvin.settings.openai.chat.completions.model = "gpt-4o-mini"
AI Functions (aifn)
aifn adalah fitur paling iconic dari Marvin. Anda cukup menulis function signature dan docstring, lalu Marvin akan menggunakan LLM untuk mengimplementasikan logikanya.
Contoh Dasar
import marvin
@marvin.fn
def sentiment(text: str) -> str:
"""Analisis sentimen teks dan kembalikan 'positif', 'negatif', atau 'netral'."""
result = sentiment("Produk ini luar biasa! Sangat memuaskan!")
print(result) # Output: positif
result = sentiment("Pelayanannya sangat mengecewakan")
print(result) # Output: negatif
AI Function dengan Return Type yang Kompleks
from typing import List, Dict
import marvin
@marvin.fn
def generatehashtags(topic: str, count: int = 5) -> List[str]:
"""Generate hashtag yang relevan untuk topik yang diberikan.
Hashtag harus populer dan relevan untuk social media."""
hashtags = generatehashtags("machine learning Indonesia", count=7)
print(hashtags)
Output: ['#MachineLearning', '#AIIndonesia', '#DataScience', ...]
@marvin.fn
def translatephrases(phrases: List[str], targetlanguage: str) -> Dict[str, str]:
"""Terjemahkan setiap frasa ke bahasa target.
Kembalikan dictionary dengan frasa asli sebagai key dan terjemahan sebagai value."""
result = translatephrases(
["Good morning", "Thank you", "How are you?"],
targetlanguage="Indonesian"
)
print(result)
Output: {'Good morning': 'Selamat pagi', 'Thank you': 'Terima kasih', ...}
AI Function untuk Business Logic
import marvin
@marvin.fn
def categorizeexpense(description: str) -> str:
"""Kategorikan pengeluaran bisnis ke salah satu kategori:
'travel', 'meals', 'officesupplies', 'software', 'marketing',
'utilities', 'payroll', 'other'."""
@marvin.fn
def extractactionitems(meetingnotes: str) -> List[str]:
"""Ekstrak action items dari catatan rapat.
Setiap item harus jelas dan actionable."""
@marvin.fn
def generateemailreply(
originalemail: str,
tone: str = "professional",
keypoints: List[str] = None
) -> str: