ollamaapi / INSTRUKCJE.md
oki692's picture
Upload 4 files
3154e52 verified

Ollama Universal — HF Spaces Template

Uniwersalny szablon do deployowania dowolnego modelu Ollama na Hugging Face Spaces. Wystarczy wgrać 3 pliki i ustawić 2 zmienne — kod nie wymaga zmian.


Pliki repozytorium

Dockerfile       — buduje obraz (nie edytuj)
entrypoint.sh    — startuje Ollama i proxy (nie edytuj)
proxy.py         — API proxy z oznaczonymi miejscami do edycji
INSTRUKCJE.md    — ten plik

Szybki start

1. Utwórz Space na HuggingFace

  • huggingface.co → Spaces → Create new Space
  • SDK: Docker
  • Hardware: CPU Basic (free, 16 GB RAM)
  • Visibility: Public lub Private

2. Wgraj pliki

Przez UI (przeciągnij i upuść) lub git:

git clone https://huggingface.co/spaces/<username>/<space-name>
cd <space-name>
# skopiuj Dockerfile, entrypoint.sh, proxy.py
git add . && git commit -m "init" && git push

3. Ustaw zmienne środowiskowe

Settings → Variables and Secrets → New variable:

Nazwa Przykład Opis
MODEL deepseek-r1:14b Model do załadowania
API_KEY moj-tajny-klucz Klucz autoryzacji Bearer

4. Poczekaj

  • Build: ~2 min
  • Cold start: zależy od rozmiaru modelu (np. 9 GB = ~3-5 min pobierania)

Zmiana modelu

Zmień tylko Variable MODEL w Settings — Space restartuje się automatycznie.

Modele z Ollama registry

deepseek-r1:14b          9.0 GB   reasoning
deepseek-r1:7b           4.7 GB   reasoning
qwen3:8b                 5.2 GB   reasoning
qwen3:4b                 2.6 GB   reasoning
qwen2.5:7b               4.7 GB
llama3.2:3b              2.0 GB
gemma3:9b                5.8 GB
mistral:7b               4.1 GB
phi4-mini:latest         4.2 GB

Modele z HuggingFace (hf.co/...)

hf.co/unsloth/GLM-4.7-Flash-GGUF:UD-TQ1_0        8.33 GB
hf.co/bartowski/Qwen2.5-7B-Instruct-GGUF:Q4_K_M  4.7  GB
hf.co/bartowski/gemma-3-9b-it-GGUF:Q4_K_M        5.8  GB

Co edytować w proxy.py

Szukaj komentarzy !TU MUSISZ EDYTOWAC!:

API_KEY = os.environ.get("API_KEY", "connectkey")
#                                    ^^^^^^^^^^^ zmień domyślny klucz

MODEL = os.environ.get("MODEL", "deepseek-r1:14b")
#                                ^^^^^^^^^^^^^^^^ zmień domyślny model

temperature = body.get("temperature", 0.6)
#                                     ^^^ zmień domyślną temperaturę

top_p = body.get("top_p", 0.95)
#                          ^^^^ zmień domyślne top_p

Wartości z ENV (HF Variables) zawsze mają priorytet nad domyślnymi w kodzie.


Użycie API

Base URL: https://<username>-<space-name>.hf.space

curl

curl https://<space>.hf.space/v1/chat/completions \
  -H "Authorization: Bearer moj-tajny-klucz" \
  -H "Content-Type: application/json" \
  -d '{
    "messages": [{"role": "user", "content": "Cześć!"}]
  }'

Python (openai SDK)

from openai import OpenAI

client = OpenAI(
    base_url="https://<space>.hf.space/v1",
    api_key="moj-tajny-klucz",
)

stream = client.chat.completions.create(
    model="deepseek-r1:14b",
    messages=[{"role": "user", "content": "Cześć!"}],
    stream=True,
)

for chunk in stream:
    delta = chunk.choices[0].delta
    if hasattr(delta, "reasoning_content") and delta.reasoning_content:
        print(delta.reasoning_content, end="", flush=True)
    if delta.content:
        print(delta.content, end="", flush=True)

Endpointy

Endpoint Metoda Opis
/v1/chat/completions POST Chat — zawsze streaming
/v1/models GET Lista załadowanych modeli
/health GET Status Ollamy i modelu

Limity CPU Basic (free)

Parametr Wartość
RAM 16 GB
vCPU 2
Disk 50 GB (reset przy restarcie)
Sleep po bezczynności 48h
Max rozmiar modelu ~13 GB GGUF