API: POST /api/chat în Ollama CLI & Ghid Local

Funcții și Integrare API Ollama 0.40 (octombrie 2026)

Generează următorul mesaj dintr-o conversație, cu istoric de mesaje, imagini, unelte și ieșiri structurate.

Sintaxă & invocare
POST http://localhost:11434/api/chat

Ce face API: POST /api/chat

/api/chat generează următorul mesaj într-o conversație cu un model. Trimiți tot istoricul în messages; serverul nu păstrează conversația între cereri. Răspunsul vine implicit în flux (un obiect JSON pe fragment); cu "stream": false primești un singur obiect. Ultimul obiect conține statisticile cererii, cu durate în nanosecunde.

Fiecare mesaj are role (system, user, assistant sau tool) și content, plus opțional images, thinking, tool_calls și tool_name (numele uneltei al cărei rezultat îl trimiți).

Pentru JSON garantat dai în format valoarea json sau o schemă JSON. Pentru gândire setezi think (boolean sau nivel). O cerere care conține doar model încarcă modelul în memorie (exemplul de preîncărcare din FAQ).

Sintaxă și opțiuni

Opțiune / Parametru Descriere
model (obligatoriu) Numele modelului, de forma model:tag.
messages Istoricul conversației, ca listă de mesaje.
tools Lista de unelte (funcții) pe care modelul le poate apela.
think Pentru modelele cu gândire: boolean sau nivel ("low", "medium", "high", "max").
format json sau o schemă JSON.
options Parametri de model din Modelfile, de exemplu temperature, num_ctx.
stream Implicit true; false întoarce un singur obiect.
keep_alive Cât rămâne modelul încărcat după cerere (implicit 5m; 0 îl descarcă imediat).
logprobs / top_logprobs Întoarce log-probabilitățile tokenilor generați / numărul celor mai probabili tokeni pe poziție.

Exemple practice

Exemplul 1: Cerere fără streaming

curl http://localhost:11434/api/chat -d '{
  "model": "llama3.2",
  "messages": [
    {"role": "user", "content": "Why is the sky blue?"}
  ],
  "stream": false
}'

Exemplul 2: Cu SDK-ul Python oficial

Biblioteca se instalează cu pip install ollama.

from ollama import chat

raspuns = chat(model="llama3.2", messages=[{"role": "user", "content": "Why is the sky blue?"}])
print(raspuns.message.content)

Greșeli frecvente și bune practici

  • Trimiți doar ultimul mesaj și aștepți ca modelul să-și amintească restul. Istoricul se trimite la fiecare cerere în messages.
  • Ceri JSON prin format fără să spui și în prompt că vrei JSON. Documentația avertizează că modelul poate genera mult spațiu alb.
  • Citești răspunsul doar din primul obiect al fluxului. Cu streaming, textul vine pe bucăți în message.content; setează "stream": false pentru un singur obiect.

Comenzi înrudite