Membina API LLM Berprestasi Tinggi dan Sedia Pengeluaran dengan FastAPI: Panduan Langkah demi Langkah

2/19/2026
6 min read

Membina API LLM Berprestasi Tinggi dan Sedia Pengeluaran dengan FastAPI: Panduan Langkah demi Langkah

FastAPI, sebagai rangka kerja Web Python moden dan berprestasi tinggi, popular kerana kemudahan penggunaan, kelajuan dan dokumentasi API yang dijana secara automatik. Terutamanya dalam membina API bahagian belakang untuk aplikasi LLM (Large Language Model), FastAPI menunjukkan kelebihan yang kuat. Artikel ini akan mengajar anda langkah demi langkah cara membina API LLM sedia pengeluaran menggunakan FastAPI, dan meneroka beberapa amalan terbaik.

Mengapa Memilih FastAPI?

Apabila membina API untuk aplikasi LLM, FastAPI menawarkan kelebihan utama berikut:

  • Prestasi Tinggi: Berdasarkan ASGI, FastAPI boleh mengendalikan permintaan konkurensi tinggi, yang penting untuk aplikasi LLM yang memerlukan respons pantas.
  • Sokongan Asinkronus: FastAPI mempunyai sokongan terbina dalam untuk kata kunci async dan await, yang memudahkan pengendalian operasi asinkronus, seperti memanggil inferens LLM, mengelakkan penyekatan thread utama.
  • Dokumentasi API Automatik: FastAPI menggunakan OpenAPI dan JSON Schema untuk menjana dokumentasi API interaktif secara automatik (Swagger UI), memudahkan pembangun untuk menguji dan menggunakan API anda.
  • Pengesahan Data: FastAPI menggunakan Pydantic untuk pengesahan data, memastikan ketepatan parameter permintaan dan mengurangkan ralat.
  • Suntikan Kebergantungan: Sistem suntikan kebergantungan FastAPI memudahkan untuk mengurus dan berkongsi sumber, seperti model LLM.
  • Komuniti Aktif: FastAPI mempunyai komuniti yang besar dan aktif, dan anda boleh mendapatkan sumber dan sokongan yang kaya.

Persediaan

  1. Pasang Python: Pastikan anda telah memasang Python 3.7 atau versi yang lebih tinggi.

  2. Pasang FastAPI dan Uvicorn: Gunakan pip untuk memasang FastAPI dan Uvicorn (pelayan ASGI):

    pip install fastapi uvicorn
    
  3. Pilih Model LLM: Pilih model LLM yang ingin anda gunakan. Ia boleh menjadi model OpenAI, atau model sumber terbuka, seperti TinyLlama. Jika anda memilih OpenAI, anda perlu mendapatkan kunci API OpenAI. Jika anda memilih TinyLlama, anda perlu memuat turun fail model.

Langkah 1: Cipta Aplikasi FastAPI

Cipta fail bernama main.py, dan tambahkan kod berikut:

from fastapi import FastAPI, HTTPException
from pydantic import BaseModel

app = FastAPI(title="LLM API", description="API mudah untuk berinteraksi dengan LLM.")

class InputText(BaseModel):
    text: str

class OutputText(BaseModel):
    generated_text: str

Kod ini mentakrifkan aplikasi FastAPI, dan mentakrifkan dua model Pydantic: InputText digunakan untuk menerima teks input, OutputText digunakan untuk mengembalikan teks yang dijana.

Langkah 2: Tambah Logik Inferens LLM

Bergantung pada model LLM yang anda pilih, tambahkan logik inferens yang sepadan. Di sini, contohnya menggunakan API OpenAI:

import openai
import os

# Dapatkan kunci API OpenAI
openai.api_key = os.environ.get("OPENAI_API_KEY")  # Dicadangkan untuk menggunakan pembolehubah persekitaran
```@app.post("/generate", response_model=OutputText)
async def generate_text(input_text: InputText):
    """
    Menjana teks berdasarkan teks input menggunakan OpenAI.
    """
    try:
        response = openai.Completion.create(
            engine="text-davinci-003", # Pilih model
            prompt=input_text.text,
            max_tokens=150,
            n=1,
            stop=None,
            temperature=0.7,
        )
        generated_text = response.choices[0].text.strip()
        return OutputText(generated_text=generated_text)
    except Exception as e:
        raise HTTPException(status_code=500, detail=str(e))

Kod ini mentakrifkan laluan /generate, yang menerima objek InputText sebagai input, memanggil OpenAI API untuk menjana teks, dan mengembalikan teks yang dijana sebagai objek OutputText. Sila ambil perhatian untuk menggantikan text-davinci-003 dengan model yang sesuai yang anda pilih.

Jika menggunakan model tempatan seperti TinyLlama, anda perlu memasang pustaka yang berkaitan, contohnya transformers, dan memuatkan model ke dalam memori. Contoh kod adalah seperti berikut:

from transformers import pipeline
import torch

generator = pipeline('text-generation', model="TinyLlama/TinyLlama-1.1B-Chat-v1.0", torch_dtype=torch.bfloat16, device_map="auto")

@app.post("/generate", response_model=OutputText)
async def generate_text(input_text: InputText):
    """
    Menjana teks berdasarkan teks input menggunakan TinyLlama.
    """
    try:
        generated_text = generator(input_text.text, max_length=50, do_sample=True, temperature=0.7)[0]['generated_text']
        return OutputText(generated_text=generated_text)
    except Exception as e:
        raise HTTPException(status_code=500, detail=str(e))

Langkah 3: Jalankan Aplikasi FastAPI

Jalankan aplikasi FastAPI menggunakan Uvicorn:

uvicorn main:app --reload
```Ini akan memulakan pelayan tempatan, dan anda boleh melawati `http://127.0.0.1:8000/docs` dalam pelayar untuk melihat dokumentasi API yang dijana secara automatik. Parameter `--reload` boleh memulakan semula pelayan secara automatik selepas kod diubah suai, yang memudahkan pembangunan.

## Langkah 4: Uji API

Gunakan dokumentasi API atau alat seperti curl untuk menguji API anda. Contohnya, gunakan curl untuk menghantar permintaan POST:

```bash
curl -X POST -H "Content-Type: application/json" -d '{"text": "Tell me a joke about cats."}' http://127.0.0.1:8000/generate

Anda sepatutnya menerima respons JSON yang mengandungi teks yang dijana.

Langkah 5: Pelaksanaan Pengeluaran

Laksanakan aplikasi FastAPI anda ke persekitaran pengeluaran, contohnya:

  • Docker: Gunakan Docker untuk mengkontainerkan aplikasi anda, memudahkan pelaksanaan dan pengurusan.
  • Platform Awan: Laksanakan ke platform awan, seperti AWS, Google Cloud Platform atau Azure. Azure Cosmos DB dan Azure Functions yang disebut dalam artikel boleh digunakan untuk membina API tanpa pelayan (serverless API). Modal juga boleh digunakan untuk melaksanakan aplikasi FastAPI yang berkembang secara automatik.
  • Pelayan: Laksanakan ke pelayan anda sendiri.

Amalan Terbaik

  • Gunakan pemboleh ubah persekitaran untuk menyimpan maklumat sensitif: Jangan kodkan kunci API dan maklumat sensitif lain secara tegar dalam kod, tetapi gunakan pemboleh ubah persekitaran.
  • Tambahkan pengelogan: Gunakan modul pengelogan untuk merekodkan status operasi API, memudahkan penyahpepijatan dan pemantauan.
  • Tambahkan pengendalian ralat: Gunakan blok try...except untuk mengendalikan pengecualian yang mungkin berlaku dan mengembalikan maklumat ralat yang sesuai.
  • Had kadar: Gunakan pengehad kadar untuk mengelakkan API daripada disalahgunakan. FastAPI mempunyai beberapa pustaka pengehad kadar yang sedia ada.
  • Cache: Untuk permintaan berulang, anda boleh menggunakan cache untuk meningkatkan prestasi.
  • Pemantauan: Gunakan alat pemantauan untuk memantau prestasi dan ketersediaan API.

Teknik Lanjutan

  • Pemprosesan tak segerak: Untuk inferens LLM yang memakan masa, gunakan kata kunci async dan await untuk pemprosesan tak segerak, elakkan menyekat thread utama.
  • Respons penstriman: Menggunakan respons penstriman (StreamingResponse) boleh mengembalikan teks yang dijana dalam masa nyata, meningkatkan pengalaman pengguna.
  • Berbilang thread/berbilang proses: Untuk inferens LLM yang intensif CPU, anda boleh menggunakan berbilang thread atau berbilang proses untuk meningkatkan prestasi.
  • Pecutan GPU: Jika model LLM anda menyokong pecutan GPU, anda boleh menggunakan CUDA atau pustaka pecutan GPU lain untuk meningkatkan kelajuan inferens.

KesimpulanFastAPI ialah alat yang berkuasa untuk membina API LLM berprestasi tinggi dan sedia pengeluaran. Melalui panduan dalam artikel ini, anda boleh menyediakan API LLM dengan cepat dan mengembangkannya serta mengoptimumkannya mengikut keperluan anda. Ingat, pembelajaran dan latihan berterusan adalah kunci untuk menjadi pembangun aplikasi LLM yang cemerlang. Hornbeam yang disebut dalam artikel juga merupakan pelayan ASGI yang patut diberi perhatian, mendakwa lebih pantas dan lebih stabil daripada Gunicorn, dan boleh digunakan untuk menggunakan aplikasi FastAPI.

Published in Technology

You Might Also Like