API compatibil OpenAI (/v1/…) în Ollama CLI & Ghid Local

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

Endpoint-urile /v1 prin care clienții și bibliotecile OpenAI pot folosi modele Ollama, cu lista câmpurilor suportate.

Sintaxă & invocare
base_url = http://localhost:11434/v1/

Ce face API compatibil OpenAI (/v1/...)

Ollama oferă o compatibilitate parțială cu API-ul OpenAI la http://localhost:11434/v1 (local) și https://ollama.com/v1 (cloud, cu cheie API). Clientul OpenAI cere o cheie, dar serverul local o ignoră, așa că poți pune orice valoare, de exemplu ollama.

Endpoint-uri: /v1/chat/completions (streaming, mod JSON, imagini base64, unelte, control al gândirii; fără logprobs), /v1/completions (prompt doar ca text), /v1/models și /v1/models/{model}, /v1/embeddings, /v1/audio/speech (de la v0.40.8, ieșire wav sau pcm) și /v1/responses (de la v0.13.3, doar varianta fără stare: fără previous_response_id sau conversation).

Câmpurile nesuportate la /v1/chat/completions sunt tool_choice, logit_bias, user și n; imaginile se dau doar base64, nu prin URL. API-ul OpenAI nu are un câmp pentru dimensiunea contextului, așa că pentru alt num_ctx creezi un model nou cu un Modelfile.

Sintaxă și opțiuni

Opțiune / Parametru Descriere
/v1/chat/completions Chat. Suportă model, messages, frequency_penalty, presence_penalty, response_format, seed, stop, stream, stream_options.include_usage, temperature, top_p, max_tokens, tools, reasoning_effort, reasoning.effort.
/v1/completions Completare de text; prompt acceptă doar un șir.
/v1/models, /v1/models/{model} Lista modelelor / un model. created = ultima modificare; owned_by = utilizatorul Ollama, implicit library.
/v1/embeddings input ca text sau listă de texte, encoding_format, dimensions. Fără tablouri de tokeni.
/v1/audio/speech Vorbire (v0.40.8+): input până la 4096 de caractere, voice, response_format wav (implicit) sau pcm; audio 16 biți, mono, 24 kHz.
/v1/responses Responses API fără stare (v0.13.3+): input, instructions, tools, stream, temperature, top_p, max_output_tokens, reasoning.effort, think.

Exemple practice

Exemplul 1: Clientul OpenAI pentru Python

from openai import OpenAI

client = OpenAI(
    base_url='http://localhost:11434/v1/',
    api_key='ollama',  # necesar, dar ignorat
)

r = client.chat.completions.create(
    messages=[{'role': 'user', 'content': 'Say this is a test'}],
    model='gpt-oss:20b',
)
print(r.choices[0].message.content)

Exemplul 2: Același apel cu curl

curl -X POST http://localhost:11434/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
  "model": "gpt-oss:20b",
  "messages": [{ "role": "user", "content": "Say this is a test" }]
}'

Exemplul 3: Nume de model așteptat de o unealtă

Pentru unelte care cer nume OpenAI implicite, documentația recomandă o copie a modelului sub acel nume.

ollama cp llama3.2 gpt-3.5-turbo

Greșeli frecvente și bune practici

  • Încerci să schimbi contextul prin API-ul OpenAI. Creează un model cu PARAMETER num_ctx și folosește-l pe acela.
  • Folosești previous_response_id în /v1/responses. Ollama suportă doar varianta fără stare.
  • Ceri mp3 de la /v1/audio/speech. Formatul implicit este wav, iar valorile nesuportate întorc eroarea 400.

Comenzi înrudite