AI untuk pemulaPanduan
Tanyakan ke LLM tentang CSV: kirim skemanya, bukan tabelnya
Kirim nama kolom, tipe, dan 3 baris contoh, dapatkan satu baris pandas, jalankan pada file lengkap. Lebih murah daripada menempel baris, dan Anda bisa memeriksa angkanya.

Di halaman ini
Anda punya sales.csv dengan 5.000 baris dan satu pertanyaan: produk mana yang paling banyak terjual di bulan Oktober? Jangan tempel file ke dalam chat. Kirim ke model nama kolom, tipenya, dan tiga baris contoh, minta satu baris pandas, lalu jalankan baris itu pada file lengkap sendiri. Model tidak pernah membaca 5.000 baris Anda, prompt tetap kecil, dan angka yang Anda dapat berasal dari kode yang bisa dijalankan ulang.
Berikut alasan mengapa cara ini lebih baik, seperti apa prompt-nya, skrip yang bisa Anda salin, dan berapa biayanya dibandingkan dengan cara menempel semuanya.
Mengapa menempel seluruh tabel itu salah#
Ini cerita yang mungkin Anda kenali. Seseorang menempel 200 baris pengeluaran ke dalam chat dan meminta totalnya. Jawabannya kembali dengan yakin, lengkap dengan sen dan semuanya. Jawaban itu juga salah, dan tidak ada apa pun di layar yang memberi tahu Anda.
Model memprediksi teks sepotong demi sepotong (potongan itu adalah token). Penjumlahan 200 angka adalah 200 langkah kecil tanpa kalkulator di dalamnya, dan satu digit yang tergelincir terlihat persis seperti jawaban yang benar. Kode berperilaku berbeda: df['amount']. menjumlahkan semua baris, setiap kali, dan memberikan hasil yang sama pada eksekusi kedua.
Ada masalah kedua, dan ini tentang ukuran. Tabel memakan context window dengan cepat, dan Anda membayar untuk setiap baris pada setiap pertanyaan. Sepuluh pertanyaan tentang file yang sama berarti sepuluh salinan seluruh tabel dikirim sebagai input.
Cek cepat
Mengapa satu baris pandas lebih aman daripada meminta total ke model?
Tampilkan jawaban
Jawaban: Komputer Anda menjalankan kode pada setiap baris, dan Anda bisa menjalankannya ulang dan memeriksanya
Model tetap bisa menulis baris yang salah. Bedanya, satu baris itu terlihat dan bisa diulang: Anda membacanya, menjalankannya, dan membandingkan hasilnya dengan beberapa baris secara manual.
Kirim bentuk tabelnya, bukan tabelnya#
Model tidak perlu data Anda untuk menulis kode. Model perlu tahu seperti apa tabelnya: kolom apa saja yang ada, jenis nilai apa yang dikandungnya, dan bagaimana satu baris ditulis. Itu adalah skema ditambah beberapa baris.
Misalkan sales.csv Anda punya empat kolom. Ini seluruh prompt-nya:
A pandas DataFrame named df has these columns and types:
date object
product object
units int64
price float64
First 3 rows (CSV):
date,product,units,price
2026-10-01,Oat latte mix,12,4.50
2026-10-01,Cocoa,7,3.20
2026-10-02,Oat latte mix,9,4.50
Question: Which product sold the most units in October 2026?
Reply with ONE line of pandas code that computes the answer from df.
No explanation, no markdown, no imports.Harapkan balasan berbentuk seperti df[df['date'].. Kata-katanya bisa berbeda setiap kali, jadi baca baris itu sebelum Anda menjalankannya.
Mengapa tiga baris dan bukan hanya nama kolom? Karena tanggalnya. Kolom tipe menyebut object, yang hanya berarti teks. Baris contoh menunjukkan bahwa tanggal ditulis 2026-10-01, jadi model tahu harus mencocokkan pada teks 2026-10, bukan pada 10/2026 atau nama bulan. Sebagian besar baris pandas yang salah berasal dari menebak format yang tidak pernah ada di tabel.

Skrip: minta, baca barisnya, jalankan#
Skrip di bawah membangun prompt itu dari file Anda, jadi Anda tidak perlu mengetik skema secara manual. Skrip ini memanggil API CheapTokens melalui OpenAI Python SDK: base URL https:/, id model deepseek-. Simpan kunci di variabel lingkungan, bukan di file.
import os
import pandas as pd
from openai import OpenAI
client = OpenAI(
base_url="https://api.cheaptokens.dev/v1",
api_key=os.environ["CHEAPTOKENS_API_KEY"],
)
df = pd.read_csv("sales.csv") # for .xlsx: pd.read_excel("sales.xlsx")
schema = df.dtypes.to_string()
sample = df.head(3).to_csv(index=False)
question = "Which product sold the most units in October 2026?"
prompt = f"""A pandas DataFrame named df has these columns and types:
{schema}
First 3 rows (CSV):
{sample}
Question: {question}
Reply with ONE line of pandas code that computes the answer from df.
No explanation, no markdown, no imports."""
resp = client.chat.completions.create(
model="deepseek-ai/DeepSeek-V4-Flash-0731",
messages=[{"role": "user", "content": prompt}],
max_tokens=500,
)
text = resp.choices[0].message.content.strip()
code = text.removeprefix("```python").removeprefix("```").removesuffix("```").strip()
print("Model's line:", code)
print("Tokens in/out:", resp.usage.prompt_tokens, resp.usage.completion_tokens)
if resp.choices[0].finish_reason != "stop" or "import" in code or "__" in code:
raise SystemExit("Not running this one. Read the line above and decide.")
print("Answer:", eval(code, {"df": df, "pd": pd}))Blok terakhir adalah bagian yang dilewati pemula. eval menjalankan teks apa pun yang ditulis model, di mesin Anda, jadi skrip menolak baris dengan import atau __ dan jawaban yang terpotong (finish_reason selain stop; lihat mengapa jawaban berhenti di tengah kalimat). Dan Anda tetap membaca baris yang dicetak terlebih dahulu. Jika baris itu menyentuh file, jaringan, atau apa pun yang tidak Anda minta, jangan jalankan.
Eksekusi pertama mencetak tiga hal: baris dari model, jumlah token untuk satu permintaan ini, dan jawabannya. Jumlah token adalah meteran Anda untuk bagian berikutnya.
Berapa biayanya: tempel semuanya vs skema + 3 baris#
Untuk membandingkan, kita perlu ukuran untuk satu baris. Katakanlah satu baris seperti 2026- memakan sekitar 20 token. Itu asumsi: tergantung pada tokenizer model dan kolom Anda, dan menghitung token sebelum mengirim menunjukkan angka nyata Anda. Dengan 20 token per baris, 5.000 baris adalah 5.000 × 20 = 100.000 token input. Prompt skema-dan-tiga-baris sekitar 300 token, termasuk instruksi. Jawabannya pendek dalam kedua kasus, katakanlah 60 token, jadi perbedaannya sepenuhnya ada di sisi input, sisi yang tumbuh seiring tabel Anda (lebih lanjut di token input vs output).
Kedua angka kecil dalam dolar, dan itu jujur: model murah membuat bahkan cara yang boros menjadi terjangkau. Selisihnya adalah yang tumbuh. Ajukan 20 pertanyaan sehari dan prompt tempel-semua dikirim 20 kali. Gandakan tabelnya dan biayanya berlipat ganda, sementara prompt skema tidak bergerak. Dan ada dinding keras: dengan context window 380K token, 380.000 ÷ 20 = 19.000 baris adalah jumlah maksimum yang pernah bisa Anda tempel, sebelum menyisakan ruang untuk jawaban. Ekspor 50.000 baris sama sekali tidak muat. Prompt skema muat, berapa pun ukuran tabelnya.
Masukkan tabel Anda sendiri dan lihat biaya hariannya:
Kalkulator biaya
Tabel Anda ditempel utuh: 20 pertanyaan sehari
Token input per permintaan: 100.000 · Token output per permintaan: 60 · Permintaan per hari: 20
| Model | Per hari | Per bulan |
|---|---|---|
| GLM-5.3-Flash$0.02$0.04 | $0.04 | $1.20 |
| DeepSeek-V4-Flash$0.015$0.10 | $0.0301 | $0.904 |
| MiniMax-M2.7$0.05$0.15 | $0.10 | $3.01 |
Ubah in menjadi 300 untuk melihat cara skema. DeepSeek-V4-Flash di CheapTokens memiliki satu harga pada jam berapa pun, tanpa biaya tambahan jam sibuk, dan satu saldo mencakup semua model, jadi Anda bisa menukar id model dengan zai- (konteks 390K) tanpa akun kedua. Harga terkini ada di halaman harga.
Periksa angkanya sebelum Anda mempercayainya#
Alurnya selalu sama. Lakukan setiap kali, dan jawaban yang salah akan tertangkap di langkah keempat alih-alih di dalam laporan.
Urutkan
Urutkan alurnya
Seret item atau gunakan panah
- Jelaskan tabelnya: tipe kolom dan 3 baris contoh
- Minta satu baris pandas, tidak lebih
- Baca barisnya, lalu jalankan pada file lengkap
- Periksa hasilnya secara manual pada beberapa baris

Langkah keempat itu murah. Saring file menjadi beberapa baris saja (df[df['product'] == 'Cocoa'].), jumlahkan di kepala Anda atau di spreadsheet, dan bandingkan. Jika baris model salah, biasanya salahnya jelas: ia menghitung baris alih-alih menjumlahkan units, atau memilih bulan yang salah.
Untuk lebih banyak kebiasaan seperti ini, lihat mengapa AI mengarang dan 4 kebiasaan prompt yang menguranginya.
Jika tidak berhasil#
KeyError: 'Date'. Model menulis nama kolom dengan kapitalisasi berbeda. Tempel baris header asli ke dalam prompt, yang sudah dilakukan tiga baris contoh, dan tambahkan "gunakan nama kolom persis seperti yang ditunjukkan".- Balasan memiliki kalimat sebelum kode.
evalAnda gagal denganSyntaxError. Ulangi "SATU baris kode pandas, tanpa penjelasan" di akhir prompt, instruksi terakhir paling berpengaruh. - Jawabannya berupa tabel, bukan angka. Sebutkan bentuk yang Anda inginkan: "kembalikan satu angka" atau "kembalikan Series yang diurutkan menurun".
- Tanggal keluar salah. Baris contoh menunjukkan format sebenarnya. Jika tanggal Anda
14/10/2026, model perlu melihatnya; tambahkanpd.ke prompt sebagai cara Anda ingin tanggal dibaca.to_ datetime(df['date'], dayfirst=True) finish_reasonadalahlength. Balasan terpotong olehmax_tokens. Satu baris muat dalam 500 token, jadi periksa prompt-nya: model mungkin menjelaskan panjang lebar.
Penyiapan lengkap untuk permintaan pertama Anda, dari kunci hingga respons, ada di dokumentasi CheapTokens.



