Compilarea Programelor DSPy & Exportul pentru Producție în DSPy & Programare Algoritmică LLM

Salvarea instrucțiunilor și exemplelor optimizate într-un fișier ușor de configurare și servirea lor la latență minimă în producție.

Sintaxă & invocare
program.save("model_optimizat.json") & program.load()

Unul dintre cele mai mari avantaje ale framework-ului DSPy este decuplarea totală a fazei de dezvoltare/optimizare de faza de rulare în producție (Runtime). Nu este nevoie să rulați compilatorul sau optimizatorii la fiecare pornire a serverului de aplicație.

Odată ce procesul de compilare a atins scorul maxim dorit pe setul de validare, programul compilat este salvat pe disc într-un fișier JSON compact prin comanda program.save('production_rag.json'). Acest fișier conține toate instrucțiunile de sistem calibrate și demonstrațiile few-shot ideale.

În mediul de producție (de exemplu un API FastAPI sau un worker Celery), aplicația instanțiază modulul DSPy brut și încarcă fișierul JSON prin program.load('production_rag.json') în mai puțin de o milisecundă. Rularea este instantanee, predictibilă și consumă doar tokenii strict necesari fără niciun overhead suplimentar.

Sintaxă, opțiuni și concepte cheie

Opțiune / Concept Descriere practică
program.save(path) Serializarea instrucțiunilor și a exemplelor optimizate într-un fișier JSON curat.
program.load(path) Încărcarea instantanee a stării optimizate în memorie la pornirea serverului.
Model Portability Posibilitatea de a re-compila același program Python pentru alt model de limbaj printr-o simplă schimbare de configurare.
Zero-Overhead Inference În producție, DSPy funcționează ca un wrapper nativ ultra-rapid peste apelurile de API.

Exemple practice și cod

Exemplul 1: Salvarea programului optimizat și încărcarea lui într-un API FastAPI

Fluxul complet de la faza de antrenare la servirea live prin API.

# 1. ÎN SCRIPTUL DE OPTIMIZARE (offline):
program_compilat = optimizator.compile(program_brut, trainset=date_antrenare)
program_compilat.save("agenti/asistent_suport_v1.json")
print("Program optimizat salvat pe disc!")

# -----------------------------------------------------
# 2. ÎN APLICAȚIA DE PRODUCȚIE (FastAPI):
from fastapi import FastAPI
import dspy

app = FastAPI()

# Inițializăm modelul și încărcăm programul compilat o singură dată la startup:
lm = dspy.LM('ollama/llama3.3:70b')
dspy.configure(lm=lm)

asistent = dspy.ChainOfThought("intrebare_client -> solutie_tehnica")
asistent.load("agenti/asistent_suport_v1.json")

@app.post("/asistenta")
def raspunde_client(intrebare: str):
    rezultat = asistent(intrebare_client=intrebare)
    return {"raspuns": rezultat.solutie_tehnica}

Rezultat & Impact

Servire în producție cu zero latență de compilare și rezultate optime garantate.

Greșeli frecvente și bune practici

  • Încărcarea unui fișier JSON salvat pe o arhitectură de module cu semnături modificate, ceea ce provoacă erori de asociere a câmpurilor.
  • Recompilarea programului la fiecare cerere HTTP de intrare în loc de încărcarea o singură dată a fișierului salvat la inițializarea serverului.

Ghiduri și noțiuni înrudite