ID ▾
Dapatkan kunci API

uncensoredlocalllm.comPanduan

Model LLM Lokal Terbaik untuk Pemrograman Python: Lokal atau API Terhosting?

Tidak ada pemenang tunggal, karena pilihan terbaik tergantung pada GPU Anda, tugas Anda dan seberapa sering model menolak. Berikut cara memutuskan, dan cara menguji opsi terhosting ketika perangkat keras lokal tidak cukup.

Diperbarui

Ilustrasi isometrik GPU lokal yang terhubung ke cloud terhosting, mewakili model pemrograman lokal versus API

Poin utama

  • Nilai model coding pada tugas Anda sendiri: versi Python, pustaka, ukuran repositori dan bagaimana model menangani tes.
  • Memori GPU menetapkan batas atas untuk model lokal. Pada 4-bit, bobot membutuhkan sekitar setengah byte per parameter, ditambah ruang untuk konteks.
  • Situs ini adalah API terhosting, bukan runtime lokal. Situs ini memiliki konteks 100.000 token dan harganya $0,15 dan $0,50 per 1M token.
  • Set tes kecil dan kunci uji coba akan memberi tahu Anda lebih banyak daripada papan peringkat mana pun.

Mulailah dengan batasan Anda, bukan nama model

Pertanyaan model LLM lokal terbaik untuk coding Python tidak memiliki jawaban tetap, karena model berubah dengan cepat dan mesin Anda adalah batas sebenarnya. Sebelum membandingkan nama, tuliskan empat hal:

  • Memori GPU. Ini menentukan ukuran model mana yang dapat Anda jalankan.
  • Kebutuhan konteks. Mengedit satu fungsi berbeda dari penalaran atas seluruh paket.
  • Aturan privasi. Beberapa kode tidak boleh keluar dari mesin Anda, yang merupakan alasan yang sah untuk tetap lokal.
  • Toleransi penolakan. Alat keamanan, scraper, rekayasa balik dan fuzzer dapat memicu penolakan pada model yang disensor secara berat.

Jika operasi offline yang ketat adalah persyaratan keras, Anda memerlukan model yang Anda jalankan sendiri. Jika tidak, API terhosting menghilangkan pertanyaan perangkat keras. Situs ini termasuk dalam kelompok kedua: ini adalah API yang kompatibel dengan OpenAI dan terhosting, bukan runtime lokal, dan layak diuji di samping pengaturan lokal Anda.

Berapa banyak memori GPU yang Anda butuhkan

Aturan kasar untuk bobot: parameter kali byte per parameter. Pada presisi 16-bit itu adalah 2 byte per parameter; pada 8-bit, 1 byte; pada 4-bit, sekitar 0,5 byte.

Ukuran model16-bit8-bit4-bit
7B14 GB7 GB3,5 GB
14B28 GB14 GB7 GB
32B64 GB32 GB16 GB

Angka-angka ini hanya bobot. Anda juga membutuhkan memori untuk cache konteks, yang tumbuh dengan prompt, dan untuk runtime itu sendiri. Sisakan beberapa gigabyte margin, dan lebih banyak lagi jika Anda berencana untuk menempelkan file besar. Kuantisasi yang lebih berat menghemat memori tetapi dapat mengorbankan akurasi, yang penting untuk kode di mana satu karakter yang salah merusak program.

Cara membandingkan model coding secara adil

Papan peringkat publik mengukur tugas orang lain. Metode yang lebih baik membutuhkan waktu satu jam dan menggunakan kode Anda sendiri.

  1. Kumpulkan 15 hingga 20 tugas nyata: bug dengan tes yang gagal, fungsi untuk ditulis dari docstring, refactor, permintaan untuk menambahkan type hint.
  2. Jalankan setiap model dengan prompt yang sama, suhu yang sama (0,2 adalah awal yang masuk akal untuk kode) dan seed yang sama di mana didukung.
  3. Nilai dengan menjalankan tes, bukan dengan membaca jawaban. Apakah mengimpor modul nyata? Apakah lulus?
  4. Catat penolakan secara terpisah. Model yang 5% lebih baik pada kode tetapi menolak tugas pemindai port Anda lebih buruk untuk Anda.
  5. Catat waktu per tugas dan, untuk model terhosting, biaya per tugas.

Simpan harness dalam file sehingga Anda dapat menjalankannya kembali ketika model baru muncul. Penggunaan kembali itu lebih berharga daripada hasil tunggal mana pun.

Menguji opsi terhosting pada tugas yang sama

Karena API kompatibel dengan OpenAI, harness Anda hanya memerlukan URL dasar yang berbeda. Skrip ini meminta fungsi, mengekstrak blok Python pertama dan menjalankannya terhadap tes. ID model adalah uncensored.

import re
import subprocess
import tempfile
from openai import OpenAI

client = OpenAI(base_url="https://api.uncensoredlocalllm.com/v1", api_key="YOUR_API_KEY")

TASK = "Write a Python function parse_size(text) that converts '10KB' or '2 MB' to bytes."
TEST = "assert parse_size('10KB') == 10240\nassert parse_size('2 MB') == 2 * 1024 * 1024\nprint('ok')"

r = client.chat.completions.create(
    model="uncensored",
    temperature=0.2,
    seed=7,
    messages=[
        {"role": "system", "content": "You write correct Python 3. Reply with one fenced code block and no commentary."},
        {"role": "user", "content": TASK},
    ],
)
text = r.choices[0].message.content
m = re.search(r"```(?:python)?\n(.*?)```", text, re.S)
code = m.group(1) if m else text

with tempfile.NamedTemporaryFile("w", suffix=".py", delete=False) as f:
    f.write(code + "\n" + TEST)
out = subprocess.run(["python3", f.name], capture_output=True, text=True, timeout=20)
print(out.stdout.strip() or out.stderr.strip())

Jalankan daftar tugas yang sama pada model lokal Anda dan bandingkan tingkat kelulusan. Kode menjalankan output yang dihasilkan, jadi gunakan direktori sekali pakai atau kontainer untuk apa pun di luar contoh mainan.

Di mana model terhosting membantu pengembang Python

Endpoint terhosting tidak lebih baik dalam setiap kasus, tetapi beberapa tugas cocok untuknya:

  • Konteks besar. Jendela konteks adalah 100.000 token, prompt ditambah completion. Itu cocok untuk modul berukuran besar, tesnya, dan jejak tumpukan dalam satu permintaan.
  • Pemanggilan fungsi. Anda dapat mendefinisikan alat seperti run_tests atau read_file dan membiarkan model memanggilnya secara berulang, dengan hasil yang dikirim kembali sebagai pesan role: "tool".
  • Mode JSON. Dengan response_format: {"type":"json_object"} Anda dapat mendapatkan tinjauan kode terstruktur, seperti daftar masalah dengan nomor baris.
  • Lebih sedikit penolakan pada pekerjaan keamanan. Model ini disesuaikan untuk menjawab tanpa penolakan konten untuk penggunaan dewasa yang sah, yang termasuk pengujian keamanan sistem yang Anda miliki atau berwenang untuk diuji.

Kompromi-nya jelas: kode Anda meninggalkan mesin Anda, dan Anda memerlukan koneksi jaringan. Prompt tidak digunakan untuk pelatihan, tetapi jika kebijakan Anda melarang mengirim kode ke pihak ketiga, tetap lokal.

Membiarkan model menjalankan pengujian Anda dengan pemanggilan fungsi

Pemanggilan fungsi mengubah jawaban satu kali menjadi putaran: model meminta tes dijalankan, melihat kegagalan, dan memperbaiki kode. Definisikan satu alat dan tangani panggilan itu sendiri.

import json
import subprocess
from openai import OpenAI

client = OpenAI(base_url="https://api.uncensoredlocalllm.com/v1", api_key="YOUR_API_KEY")

tools = [{
    "type": "function",
    "function": {
        "name": "run_tests",
        "description": "Run pytest in the project and return the output",
        "parameters": {"type": "object", "properties": {}, "required": []},
    },
}]

messages = [
    {"role": "system", "content": "You fix Python bugs. Call run_tests to check your work."},
    {"role": "user", "content": "The tests in this project fail. Run them and tell me the first error."},
]

for _ in range(5):
    r = client.chat.completions.create(model="uncensored", messages=messages, tools=tools, temperature=0.2)
    msg = r.choices[0].message
    messages.append(msg)
    if not msg.tool_calls:
        print(msg.content)
        break
    for call in msg.tool_calls:
        out = subprocess.run(["pytest", "-x", "-q"], capture_output=True, text=True)
        messages.append({"role": "tool", "tool_call_id": call.id, "content": (out.stdout + out.stderr)[-4000:]})

Perulangan dibatasi hingga lima putaran agar model yang bingung tidak dapat berjalan selamanya. Jaga keluaran alat tetap pendek, karena semua yang Anda kembalikan akan ditagih sebagai input pada putaran berikutnya. Memotongnya hingga 4.000 karakter terakhir menjaga setiap putaran tetap murah.

Biaya untuk pekerjaan pengkodean

Prompt pengkodean bersifat intensif input: Anda menempelkan kode dan mendapatkan jawaban yang lebih pendek. Ambil permintaan refactor dengan 6.000 token input dan 1.500 token output pada $0,15 dan $0,50 per 1 juta:

  • Input: 6.000 / 1.000.000 x $0,15 = $0,0009
  • Output: 1.500 / 1.000.000 x $0,50 = $0,00075
  • Total: $0,00165 per permintaan

Seribu permintaan seperti itu berharga $1,65. Kredit uji coba $0,50 mencakup sekitar 303 di antaranya, cukup untuk menjalankan benchmark 20 tugas beberapa kali. GPU lokal mungkin lebih murah per permintaan pada volume tinggi, tetapi memiliki biaya awal dan tidak mengecil menjadi nol saat Anda tidak menggunakannya. Halaman harga memiliki tabel lengkap.

Pengaturan praktis untuk pembuatan kode

  • Suhu 0,1 hingga 0,3. Nilai yang lebih rendah mengurangi API karangan dan pergeseran gaya acak.
  • Tetapkan seed saat Anda membandingkan prompt, sehingga perbedaan berasal dari prompt dan bukan dari pengambilan sampel.
  • Sebutkan versi Python dan pustaka dalam pesan sistem: "Python 3.11, hanya pustaka standar" menghilangkan banyak tebakan.
  • Minta pengujian bersama kode. Model yang menulis pengujian sendiri sering kali menangkap kesalahan off-by-one sendiri saat Anda menjalankannya.
  • Kirim jejak tumpukan yang gagal, bukan deskripsi tentangnya.

Untuk mencobanya, aktifkan uji coba di halaman kunci API, lalu ikuti panduan awal cepat. Untuk penggunaan gaya obrolan, lihat panduan obrolan LLM tanpa sensor. Layanan ini untuk penggunaan dewasa yang sah, dan tidak menghasilkan konten seksual yang melibatkan anak di bawah umur.

Jebakan umum dengan model pengkodean

  • Impor dan nama fungsi karangan. Jalankan kodenya. Model dapat mendeskripsikan metode pustaka yang tidak ada, sehingga pengujian adalah satu-satunya hakim.
  • Sintaks usang. Jika Anda memerlukan fitur modern seperti pencocokan pola struktural, sebutkan versi Python dalam prompt.
  • Terlalu banyak konteks. Jendela yang lebih besar tidak berarti Anda harus menempelkan semuanya. Kirim file yang penting, beserta errornya.
  • Mempercayai kode keamanan yang dihasilkan. Tinjau ulang apa pun yang menyentuh autentikasi, kripto atau parsing input secara manual.
  • Menjalankan output secara buta. Kode yang dihasilkan dapat menghapus file atau membuat panggilan jaringan. Gunakan sandbox.

Tanya jawab

LLM lokal mana yang terbaik untuk kode Python?

Itu tergantung pada memori GPU dan tugas Anda, jadi uji dua atau tiga model dengan ukuran yang sesuai dengan perangkat keras Anda pada kode Anda sendiri dan nilai dengan menjalankan pengujian. Papan peringkat hanyalah titik awal.

Apakah situs ini LLM lokal?

Tidak. Ini adalah API terhosting, kompatibel dengan OpenAI, dengan ID model uncensored. Ini cocok untuk Anda jika Anda dapat mengirim kode ke layanan jarak jauh.

Berapa banyak memori GPU yang saya butuhkan untuk model 14B?

Sekitar 28 GB pada 16-bit, 14 GB pada 8-bit dan 7 GB pada 4-bit hanya untuk bobotnya, ditambah tambahan untuk cache konteks.

Bisakah saya menggunakannya dari alat Python yang ada?

Ya. SDK atau klien OpenAI apa pun berfungsi setelah Anda mengatur URL dasar ke https://api.uncensoredlocalllm.com/v1 dan menggunakan kunci Anda.

Bagaimana saya bisa mengujinya secara gratis?

Aktifkan uji coba $0,50 di halaman kunci API setelah mendaftar. Itu berlaku selama 7 hari, tidak memerlukan data pembayaran dan dibatasi satu per orang.

uncensoredlocalllm.com

Kunci Anda hanya selangkah lagi dari satu formulir

Buat akun, salin kunci, ubah URL dasar. Itu saja seluruh proses pengaturannya.