Tutorial Mirascope: Toolkit Pythonic untuk Membangun Aplikasi LLM
Pendahuluan
Mirascope adalah library Python yang menyediakan antarmuka bersih dan Pythonic untuk berinteraksi dengan Large Language Models (LLM). Berbeda dengan framework besar seperti LangChain yang memiliki banyak abstraksi berlapis, Mirascope mengambil pendekatan minimalis dengan memanfaatkan fitur-fitur bawaan Python seperti decorator, type hints, dan Pydantic models.
Keunggulan utama Mirascope terletak pada kemampuannya menyederhanakan prompt engineering, structured output extraction, dan tool calling tanpa mengorbankan fleksibilitas. Library ini mendukung berbagai provider LLM termasuk OpenAI, Anthropic, Google Gemini, Mistral, Groq, dan Cohere dalam satu API yang konsisten.
Dalam tutorial ini, kita akan mempelajari cara menggunakan Mirascope mulai dari instalasi, prompt engineering dasar, structured output, tool calling, hingga teknik-teknik lanjutan seperti chaining, streaming, dan response model validation.
Mengapa Mirascope?
Sebelum masuk ke implementasi, berikut alasan mengapa Mirascope layak dipertimbangkan:
Instalasi
Instalasi Dasar
Mirascope bisa diinstal menggunakan pip dengan provider yang diinginkan:
# Instalasi core mirascope
pip install mirascope
Instalasi dengan provider spesifik
pip install "mirascope[openai]"
pip install "mirascope[anthropic]"
pip install "mirascope[gemini]"
pip install "mirascope[groq]"
Instalasi dengan semua provider
pip install "mirascope[all]"
Setup Environment Variables
Konfigurasi API key untuk provider yang akan digunakan:
# OpenAI
export OPENAIAPIKEY="sk-your-openai-key"
Anthropic
export ANTHROPICAPIKEY="sk-ant-your-anthropic-key"
Google Gemini
export GOOGLEAPIKEY="your-google-key"
Groq
export GROQAPIKEY="your-groq-key"
Atau menggunakan file .env dengan python-dotenv:
pip install python-dotenv
from dotenv import loaddotenv
load
dotenv()
Verifikasi Instalasi
import mirascope
print(f"Mirascope version: {mirascope.version}")
Basic Usage: Prompt Engineering
Membuat Prompt Sederhana dengan Decorator
Mirascope menggunakan decorator @prompttemplate dan fungsi call untuk menghasilkan respons dari LLM:
from mirascope.core import openai, prompttemplate
@openai.call("gpt-4o-mini")
@prompttemplate("Jelaskan tentang {topic} dalam 3 paragraf")
def explain(topic: str): ...
response = explain("machine learning")
print(response.content)
Kode di atas sangat ringkas. Decorator @openai.call menentukan provider dan model, sementara @prompttemplate mendefinisikan template prompt. Parameter topic secara otomatis diisi ke dalam template.
Multi-Provider Support
Salah satu keunggulan Mirascope adalah kemudahan berpindah antar provider:
from mirascope.core import openai, anthropic, gemini, prompttemplate
@openai.call("gpt-4o-mini")
@prompt
template("Apa itu {concept}?")
def askopenai(concept: str): ...
@anthropic.call("claude-sonnet-4-20250514")
@prompttemplate("Apa itu {concept}?")
def askanthropic(concept: str): ...
@gemini.call("gemini-1.5-flash")
@prompttemplate("Apa itu {concept}?")
def askgemini(concept: str): ...
Semua fungsi memiliki interface yang sama
for askfn in [askopenai, askanthropic, askgemini]:
response = askfn("neural network")
print(f"[{askfn.name}]: {response.content[:100]}...")
System Prompt dan Messages
Untuk skenario yang lebih kompleks, kita bisa menggunakan messages: