ID ▾
Dapatkan kunci API

GetAiApiKeyDaftar Periksa API Kecerdasan Buatan untuk Produksi

Cara Menginstal LLM di Python: Lokal atau API

Anda dapat menjalankan model di mesin Anda sendiri, atau Anda dapat menginstal satu paket Python kecil dan memanggil model yang di-host melalui HTTP. Halaman ini membahas keduanya, kemudian menelusuri rute API langkah demi langkah.

Diperbarui

Ilustrasi kabel yang menghubungkan skrip Python ke kubus model awan bercahaya, menunjukkan koneksi API

Poin utama

  1. Instalasi lokal memerlukan bobot model dan memori yang cukup; rute API hanya memerlukan paket openai dan kunci.
  2. Atur URL dasar ke https://api.getaiapikey.com/v1 dan model ke uncensored.
  3. Streaming, pemanggilan fungsi, dan mode JSON semuanya berfungsi melalui klien OpenAI standar.
  4. Tangani HTTP 429 dengan percobaan ulang singkat, dan pertahankan panggilan konkuren di angka 8 atau di bawahnya.

Dua arti menginstal LLM

Ketika orang bertanya cara menginstal llm di python, mereka biasanya berarti salah satu dari dua hal. Yang pertama adalah menjalankan model secara lokal: mengunduh bobot dan memuatnya dengan pustaka di CPU atau GPU Anda sendiri. Yang kedua adalah menginstal pustaka klien sehingga kode Python Anda dapat berbicara dengan model yang berjalan di tempat lain. Keduanya valid, dan yang benar tergantung pada perangkat keras Anda dan apa yang ingin Anda bangun.

Rute API jauh lebih singkat. Anda menjalankan pip install openai, mengarahkan klien ke base URL, dan memanggil model. Tidak ada bobot, tidak ada driver GPU, tidak ada perencanaan memori. Sisa halaman ini memberikan langkah-langkah dan kode untuk rute tersebut, dengan bagian singkat tentang yang lokal agar Anda dapat membandingkannya.

Instalasi lokal atau API yang di-host: cara memilih

PertanyaanInstalasi lokalAPI Terhosting
Apa yang Anda instalPustaka inferensi ditambah bobot modelPaket openai
Perangkat KerasMemori dan biasanya GPU yang sesuai dengan modelMesin apa pun yang dapat melakukan panggilan HTTPS
BiayaPerangkat keras dan listrik AndaPer token, dari saldo prabayar
Bekerja secara offlineYaTidak
Waktu hingga balasan pertamaUnduh, pengaturan, penyetelanBeberapa menit

Lokal masuk akal jika Anda harus menyimpan semuanya di satu mesin, perlu bekerja secara offline, atau ingin bereksperimen dengan bobot itu sendiri. Perpustakaan seperti binding llama.cpp atau Hugging Face transformers adalah titik awal yang biasa; periksa dokumentasi mereka sendiri untuk persyaratan perangkat keras, karena itu bergantung pada ukuran model yang Anda pilih.

API masuk akal jika Anda ingin hasil kerja cepat, laptop Anda tidak dapat memuat model besar, atau aplikasi Anda perlu melayani banyak pengguna. Anda membayar per token alih-alih membeli perangkat keras. Untuk layanan ini biayanya $0,15 per 1 juta token input dan $0,50 per 1 juta token output, tanpa langganan. Detailnya ada di halaman harga.

Langkah 1: buat lingkungan virtual dan instal paket

Gunakan lingkungan virtual agar instalasi tetap bersih. Rilis Python 3 terbaru apa pun berfungsi dengan paket openai.

python3 -m venv .venv
source .venv/bin/activate
pip install openai

Selanjutnya Anda memerlukan kunci. Daftar di halaman kunci API dengan Google atau dengan email dan kata sandi. Pengguna baru dapat mengklaim kredit uji coba senilai $0,50 di sana dengan satu klik, berlaku selama 7 hari dan tanpa kartu. Simpan kunci dalam variabel lingkungan, bukan di file sumber Anda:

export API_KEY="paste-your-key-here"

Langkah 2: buat panggilan pertama Anda

Layanannya kompatibel dengan OpenAI, sehingga satu-satunya perubahan dari skrip OpenAI standar adalah base URL dan ID model. ID modelnya adalah uncensored.

import os
from openai import OpenAI

client = OpenAI(
    base_url="https://api.getaiapikey.com/v1",
    api_key=os.environ["API_KEY"],
)

resp = client.chat.completions.create(
    model="uncensored",
    messages=[
        {"role": "system", "content": "You are a concise assistant."},
        {"role": "user", "content": "Explain what a context window is in two sentences."},
    ],
    temperature=0.7,
    max_tokens=200,
)

print(resp.choices[0].message.content)
print(resp.usage.prompt_tokens, resp.usage.completion_tokens)

Jika ini mencetak jawaban dan dua hitungan token, instalasi selesai. Untuk memeriksa apakah kunci Anda berfungsi dan melihat ID model, Anda juga dapat memanggil GET /v1/models:

for m in client.models.list():
    print(m.id)

Permintaan yang sama dari shell, tanpa Python sama sekali, adalah panggilan curl tunggal ke https://api.getaiapikey.com/v1/chat/completions dengan header Authorization: Bearer diikuti dengan kunci Anda. Lihat panduan memulai di dokumentasi untuk versi lengkapnya.

Langkah 3: alirkan token saat tiba

Menunggu jawaban panjang selesai sebelum mencetak apa pun terasa lambat. Atur stream=True dan server mengirim token melalui server-sent events. Anda dapat meminta ringkasan penggunaan dalam potongan terakhir dengan stream_options.

stream = client.chat.completions.create(
    model="uncensored",
    messages=[{"role": "user", "content": "Write a short scene set in a lighthouse."}],
    stream=True,
    stream_options={"include_usage": True},
)

for chunk in stream:
    if chunk.choices and chunk.choices[0].delta.content:
        print(chunk.choices[0].delta.content, end="", flush=True)
    if chunk.usage:
        print("\n", chunk.usage.total_tokens, "tokens")

Satu hal penting untuk produksi: permintaan streaming memegang slot konkurensinya hingga stream berakhir. Kunci penuh memungkinkan 8 permintaan konkuren, jadi jika aplikasi Anda membuka banyak stream panjang, tutuplah ketika pengguna memutuskan koneksi.

Langkah 4: mode JSON dan pemanggilan fungsi

Untuk output terstruktur, atur response_format menjadi objek JSON. Juga beri tahu model dalam prompt untuk menjawab dalam JSON, karena pengaturan menjamin sintaks JSON yang valid tetapi tidak nama bidang yang Anda inginkan.

import json

resp = client.chat.completions.create(
    model="uncensored",
    messages=[
        {"role": "system", "content": "Reply only with JSON: {\"title\": string, \"tags\": [string]}"},
        {"role": "user", "content": "Give me a title and tags for a post about slow travel."},
    ],
    response_format={"type": "json_object"},
)
data = json.loads(resp.choices[0].message.content)
print(data["title"], data["tags"])

Pemanggilan fungsi mengikuti pola standar. Anda mendeskripsikan fungsi, model mungkin meminta untuk memanggilnya, Anda menjalankannya sendiri dan mengirim hasilnya kembali dengan role: "tool".

tools = [{
    "type": "function",
    "function": {
        "name": "get_time",
        "description": "Return the current time for a city",
        "parameters": {
            "type": "object",
            "properties": {"city": {"type": "string"}},
            "required": ["city"],
        },
    },
}]

messages = [{"role": "user", "content": "What time is it in Lisbon?"}]
first = client.chat.completions.create(
    model="uncensored", messages=messages, tools=tools, tool_choice="auto"
)

msg = first.choices[0].message
if msg.tool_calls:
    call = msg.tool_calls[0]
    messages.append(msg)
    messages.append({
        "role": "tool",
        "tool_call_id": call.id,
        "content": json.dumps({"time": "14:05"}),
    })
    final = client.chat.completions.create(
        model="uncensored", messages=messages, tools=tools
    )
    print(final.choices[0].message.content)

Uji panggilan fungsi pada beberapa prompt sebelum Anda bergantung pada mereka. Model apa pun dapat memilih fungsi yang salah atau mengisi argumen dengan buruk, jadi validasi argumen dalam kode Anda sendiri sebelum menjalankan apa pun dengan efek samping.

Langkah 5: tangani batas dan kesalahan

Kunci penuh memungkinkan 8 permintaan konkuren dan 300 permintaan per menit. Kunci uji coba memungkinkan 2 dan 60. Lewat batas itu Anda mendapatkan HTTP 429. Kode kesalahan rate_limited berarti terlalu banyak permintaan per menit, dan concurrency berarti terlalu banyak sekaligus. Saat kelebihan beban sementara, API juga mengembalikan 429 dengan header Retry-After: 5.

Klien Python OpenAI mencoba beberapa kegagalan secara mandiri, tetapi pembungkus eksplisit menjaga perilaku tetap jelas:

import time
from openai import RateLimitError

def ask(messages, tries=4):
    for attempt in range(tries):
        try:
            return client.chat.completions.create(model="uncensored", messages=messages)
        except RateLimitError:
            time.sleep(5 * (attempt + 1))
    raise RuntimeError("still rate limited after retries")

Setiap respons membawa X-Request-Id, X-Balance-USD dan header batas laju, yang dapat Anda log. Sertakan ID permintaan jika Anda menghubungi dukungan. Permintaan yang gagal atau ditolak tidak dibebankan biaya, sehingga mencoba lagi tidak menambah biaya.

Juga rencanakan batas ukuran. Jendela konteks adalah 100.000 token, prompt ditambah penyelesaian, dan badan permintaan maksimum adalah 8 MB. Riwayat obrolan panjang harus dipangkas atau dirangkum sebelum mencapai angka tersebut.

Ketika panggilan tidak berhasil

Kebanyakan masalah saat pertama kali dijalankan berasal dari sejumlah kesalahan kecil. Periksa hal-hal berikut secara berurutan sebelum Anda mencurigai hal lain.

  • URL dasar tanpa jalur versi. Nilai harus berakhir dengan /v1. Klien menambahkan /chat/completions ke dalamnya, jadi hilangnya /v1 mengirim permintaan ke rute yang salah.
  • Kunci salah atau hilang. Kunci dimasukkan ke dalam header Authorization: Bearer, yang dibuat oleh klien dari api_key. Jika variabel lingkungan kosong, klien akan menampilkan kesalahan saat dimulai atau mengirimkan kunci kosong. Cetak bool(os.environ.get("API_KEY")) untuk memeriksanya.
  • Nama model dari layanan lain. Satu-satunya ID model di sini adalah uncensored. Nama seperti yang ada di tutorial lain tidak akan cocok.
  • Tidak ada saldo. Lihat header X-Balance-USD. Uji coba yang telah melewati 7 hari, atau saldo yang habis, memerlukan isi saldo dari $20.
  • Paket lama. Jika contoh menggunakan OpenAI( dan Python mengatakan tidak dapat mengimpor nama itu, Anda memiliki paket pra-1.0. Jalankan pip install --upgrade openai.

Untuk melihat respons mentah termasuk header, gunakan pembungkus respons mentah klien:

raw = client.chat.completions.with_raw_response.create(
    model="uncensored",
    messages=[{"role": "user", "content": "ping"}],
    max_tokens=5,
)
print(raw.headers.get("x-request-id"), raw.headers.get("x-balance-usd"))
completion = raw.parse()
print(completion.choices[0].message.content)

Ini mencetak ID permintaan dan sisa saldo Anda di samping jawaban, yang merupakan pemeriksaan kesehatan cepat yang dapat Anda jalankan dari tugas cron atau skrip startup.

Menggunakannya dari alat lain

Karena endpoint mengikuti format OpenAI, pustaka Python lain dapat menggunakannya dengan dua pengaturan yang sama. Kerangka kerja yang menerima base URL OpenAI kustom hanya memerlukan base_url dan api_key. Untuk Node, paket resmi openai mengambil bidang yang sama:

import OpenAI from "openai";

const client = new OpenAI({
  baseURL: "https://api.getaiapikey.com/v1",
  apiKey: process.env.API_KEY,
});

const r = await client.chat.completions.create({
  model: "uncensored",
  messages: [{ role: "user", content: "Say hello in five words." }],
});
console.log(r.choices[0].message.content);

Ini adalah layanan teks saja: tidak ada pembuatan gambar atau audio, tidak ada embedding dan tidak ada fine-tuning. Jika proyek Anda membutuhkan itu, gabungkan API ini dengan alat lain untuk bagian itu. Modelnya adalah model bobot terbuka yang dijalankan oleh penyedia independen dan disesuaikan untuk menjawab tanpa penolakan konten untuk penggunaan dewasa yang sah. Konten seksual yang melibatkan anak di bawah umur tidak pernah diizinkan.

Tanya jawab

Apakah saya perlu GPU untuk menggunakan LLM dalam Python dengan cara ini?

Tidak. Model berjalan di sisi penyedia. Mesin Anda hanya memerlukan Python dan koneksi internet untuk memanggil endpoint.

Paket mana yang saya instal?

Instal paket openai resmi dengan pip. Kemudian atur Base URL ke https://api.getaiapikey.com/v1 dan model ke uncensored.

Apakah ada cara gratis untuk mencobanya?

Pengguna baru dapat mengklaim $0,50 kredit uji coba gratis dengan satu klik setelah mendaftar. Kredit ini berlaku selama 7 hari, tidak memerlukan kartu, dan dibatasi satu per orang.

Berapa biaya satu permintaan?

Sebuah permintaan dengan 2.000 token input dan 500 token output berharga $0,00055, dari $0,15 dan $0,50 per 1M token. Anda hanya membayar untuk permintaan yang berhasil.

Apakah ini mendukung streaming dan pemanggilan fungsi?

Ya. Streaming melalui SSE, pemanggilan fungsi, dan mode JSON semuanya berfungsi melalui klien OpenAI standar.

Kunci Anda hanya selangkah lagi dari satu formulir

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