Memanggil LLM dan embedding#
AIService memanggil chat model dan model embedding yang kompatibel dengan OpenAI. Pengaturannya ditulis sekali, di file config atau environment variable, lalu chat() dan embed() dipanggil dari script, notebook, atau pipeline data.
Sebelum mulai: kamu butuh Zul yang sudah ter-install (Instalasi Zul), alamat endpoint yang kompatibel dengan OpenAI, dan API key-nya. AIService membutuhkan extra llm:
Membuat service dari file config#
-
Tulis file config di folder proyek:
config.yamlllm: base_url: "https://api.openai.com/v1" model: "gpt-4o-mini" temperature: 0.1 max_tokens: 2048 timeout: 30 embedding: base_url: "https://api.openai.com/v1" model: "text-embedding-3-small" service: log_level: "INFO"File JSON dengan struktur yang sama juga diterima. Format dipilih dari ekstensi file.
-
Simpan API key di environment, bukan di file:
Ganti
API_KEYdengan key-mu. Di PowerShell, pakai$env:LLM_API_KEY = "API_KEY". -
Buat service dari file itu:
Note
Tulis base_url secara eksplisit. Nilai bawaan llm.base_url menunjuk ke server internal, bukan ke OpenAI.
Membuat service dari environment#
Di container atau CI, kamu bisa melewati file config dan membaca semuanya dari environment.
-
Set pengaturan LLM di environment.
LLM_API_KEYwajib ada: -
Jika kamu butuh embedding, set juga pengaturannya. Embedding aktif hanya jika
EMBEDDING_API_KEYdiset: -
Buat service tanpa file:
Tanpa
EMBEDDING_API_KEY, service hanya bisachat().
Mengirim prompt ke LLM#
-
Panggil
chatdengan satu prompt: -
Baca jawabannya dari objek
ChatResponseyang dikembalikan: -
Tangani kegagalan. Jika request gagal,
chatmelemparRuntimeErroryang memuat penyebabnya:
Membuat embedding#
-
Periksa apakah embedding tersedia di service ini:
-
Ubah satu teks menjadi vektor dengan
embed:response = service.embed("Jakarta adalah ibu kota Indonesia.") print(response.dimensions) # panjang vektor print(response.vector[:3]) # tiga angka pertamaembedmelemparValueErrorjika embedding tidak dikonfigurasi, danRuntimeErrorjika request gagal.
Menimpa nilai config lewat environment#
Setiap nilai diambil dari sumber pertama yang menyediakannya: environment variable, lalu file config, lalu nilai bawaan. Karena itu satu file config bisa dipakai di semua environment.
-
Set variabel untuk nilai yang ingin kamu timpa, misalnya nama model:
-
Buat service dari file yang sama:
Kode itu mencetak nilai dari environment, bukan dari file:
Daftar variabel yang dikenali ada di Referensi AI Service.
Memeriksa hasilnya#
Untuk memastikan config terbaca dengan benar tanpa memanggil model, cetak ringkasannya. safe_summary mengganti setiap API key dengan ***, jadi keluarannya aman untuk log:
Untuk config.yaml di halaman ini, tanpa variabel penimpa seperti LLM_MODEL, kode itu mencetak:
{
"llm": {
"base_url": "https://api.openai.com/v1",
"model": "gpt-4o-mini",
"temperature": 0.1,
"max_tokens": 2048,
"timeout": 30,
"api_key": "***"
},
"embedding": {
"base_url": "https://api.openai.com/v1",
"model": "text-embedding-3-small",
"timeout": 30,
"api_key": "***"
},
"service": {
"enable_embedding": true,
"log_level": "INFO"
}
}
Lalu kirim satu prompt pendek dengan service.chat("Halo") dan pastikan response.content berisi jawaban.
Halaman terkait#
- Referensi AI Service untuk semua kunci config, environment variable, dan error.
- Mengatur model dan API key jika kamu ingin mengatur LLM untuk agent di proyek hasil
zul build hexa, bukan untuk script. - Menyimpan dan mencari vektor di Milvus untuk menyimpan vektor hasil
embed.