Metoda .with_structured_output() & Pydantic în LangChain & LangGraph

Obligă modelul LLM să nu mai răspundă cu text liber, ci să returneze direct un obiect Python validat conform unei scheme Pydantic sau JSON Schema.

Sintaxă & invocare Python
from pydantic import BaseModel, Field
class Recenzie(BaseModel):
    scor: int = Field(description='Nota de la 1 la 10')
    sentiment: str = Field(description='pozitiv, neutru sau negativ')

structured_llm = llm.with_structured_output(Recenzie)
rez = structured_llm.invoke('Telefonul are o baterie excelentă, îi dau 9 din 10!')

Descriere & Utilizare

Când integrezi un LLM într-un backend software sau o bază de date, nu ai nevoie de explicații politicoase în limbaj natural, ci de date riguros structurate (JSON / obiecte tipizate).

Metoda .with_structured_output(Schema) este cea mai fiabilă modalitate din LangChain de a extrage informații structurate. Îi transmiți o clasă Pydantic BaseModel (sau un TypedDict), iar modelul îți returnează o instanță validată a acelei clase.

Sub capotă, LangChain utilizează capabilitățile native de Structured Outputs / Tool Calling ale furnizorului pentru a garanta că tipurile de date (int, list[str], bool, Enum) sunt respectate 100%.

Cum să o reții ușor

💡 Ca diferența dintre a primi o scrisoare lungă scrisă de mână și a primi un tabel Excel cu coloane blocate și validare strictă pe fiecare celulă.

Opțiuni și parametri tehnici

  • Convertește clasa Pydantic într-o specificație standard JSON Schema.
  • Trimite schema către parametrul dedicat de response_format / tools al API-ului LLM.
  • De-serializează răspunsul JSON primit direct într-un obiect Pydantic și rulează validările de tip.

Exemple practice și cazuri de utilizare

  • Extragere entități: class Factura(BaseModel): furnizor: str; total_ron: float; produse: list[str]
  • Integrare în lanț LCEL: extractor = prompt | llm.with_structured_output(Factura)
  • Accesare atribute: factura = extractor.invoke(text_pdf); print(factura.total_ron)

Sfaturi de configurare & capcane

Scrie întotdeauna explicații clare în parametrul Field(description='...') al fiecărui atribut Pydantic. Modelul LLM citește aceste descrieri pentru a înțelege exact ce valoare trebuie să extragă în câmpul respectiv!

Comenzi și ghiduri înrudite