⚖️ Старый vs Новый: CLIP и Hugging Face API

← К оглавлению урока

⚡ Что изменилось

  • CLIP из урока рабочий, но устанавливать нужно официальный пакет OpenAI из GitHub.
  • Низкоуровневый requests.post() к HF API лучше заменить на InferenceClient.text_to_image().
  • CompVis/stable-diffusion-v1-4 — полезная учебная модель, но в реальных проектах модель выбирают явно под качество, цену, лицензию и доступность.

1. Установка CLIP

Рискованный вариант

pip install clip

Так можно установить не тот пакет, и import clip / clip.load() не будет работать как в коде урока.

Современный вариант для кода урока

pip install ftfy regex tqdm
pip install git+https://github.com/openai/CLIP.git

Это установка из официального репозитория OpenAI CLIP.

2. Hugging Face: raw requests → InferenceClient

Как в исходном коде урока

# source_style_generate.py
import io
import requests
from PIL import Image

API_URL = "https://api-inference.huggingface.co/models/CompVis/stable-diffusion-v1-4"
headers = {"Authorization": f"Bearer {token}", "Content-Type": "application/json"}
payload = {
    "inputs": prompt,
    "parameters": {
        "negative_prompt": "blurry, bad quality, distorted",
        "num_inference_steps": 25,
    },
}

response = requests.post(API_URL, headers=headers, json=payload)
response.raise_for_status()
image = Image.open(io.BytesIO(response.content))

Этот способ помогает понять HTTP-механику, но вам нужно вручную проверять статус, content-type, ошибки очереди/лимитов и доступность модели.

Современный вариант

# modern_generate.py
import os
from huggingface_hub import InferenceClient

client = InferenceClient(
    provider="fal-ai",
    api_key=os.environ["HF_TOKEN"],
)

image = client.text_to_image(
    "Astronaut riding a horse, cinematic lighting",
    model="black-forest-labs/FLUX.1-dev",
)
image.save("generated.png")

InferenceClient берёт на себя часть клиентской логики и соответствует текущей документации Hugging Face Inference Providers.

⚠️ Модель и provider в примере — не догма. В учебной теме мы разбираем Stable Diffusion, но провайдеры Hugging Face могут рекомендовать новые text-to-image модели. Для проекта фиксируйте модель, провайдера, лицензию, стоимость и лимиты.

3. Интерпретация вероятностей CLIP

Наивная интерпретация

«CLIP показал 92%, значит на картинке точно собака».

Корректная интерпретация

CLIP выбрал наиболее релевантный вариант из заданных кандидатов. Чтобы результат был полезен, нужны хорошие альтернативы, тестовые примеры и ручная проверка крайних случаев.