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
formatfă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": falsepentru un singur obiect.