Настройка запросов к моделям через Ollama

Построение различных запросов к моделям используя оболочку Ollama

Структура JSON модели для передачи на сервер OLLAMA

{
  "model": "qwen3:4b",
  "prompt": "Ваш запрос",
  "stream": false,
  "format": "json",
  "options": {
    "temperature": 0.8,
    "top_p": 0.9,
    "top_k": 40,
    "num_predict": 512,
    "stop": ["\n", "###"],
    "repeat_penalty": 1.1,
    "presence_penalty": 0.0,
    "frequency_penalty": 0.0,
    "seed": 42,
    "mirostat": 0,
    "num_ctx": 2048,
    "num_thread": 8
  },
  "template": "{{ .Prompt }}",
  "context": [1, 2, 3]
}

Описание и назначение основных параметров для управления моделями в Ollama:

1. "model": "qwen3:4b"

  • Что делает: Указывает, какую модель использовать
  • Применение: Замените на нужную модель: "llama3:8b", "mistral:7b", etc
  • Пример: "model": "llama3:8b"

2. "prompt": "Ваш запрос"

  • Что делает: Текст запроса к модели
  • Применение: Можно использовать многострочные промпты
  • Пример: "prompt": "Напиши рецепт пасты карбонара:\n"

3. "stream": false

  • Что делает: Возвращать ответ потоком или целиком
  • Применение:
    • false - весь ответ сразу (для скриптов)
    • true - потоковая передача (для UI)
  • Пример: "stream": true

4. "format": "json"

  • Что делает: Заставляет модель возвращать ответ в JSON формате
  • Применение: Полезно для структурированных данных
  • Пример: "format": "json" + "prompt": "Верни JSON с именем и возрастом"

В Ollama параметр format поддерживает несколько значений:


Параметры в options:

5. "temperature": 0.8

  • Что делает: Контролирует случайность ответов (0.0-1.0)
  • Применение:
    • 0.1 - детерминированные, повторяемые ответы
    • 0.8 - креативные, разнообразные ответы
    • 1.0 - максимальная случайность
  • Пример: "temperature": 0.3 для фактологических ответов

6. "top_p": 0.9

  • Что делает: nucleus sampling - учитывает только топ-N% вероятных слов
  • Применение:
    • 0.1 - только самые вероятные слова
    • 0.9 - более разнообразный выбор
  • Пример: "top_p": 0.7

7. "top_k": 40

  • Что делает: Ограничивает выбор только топ-K слов
  • Применение:
    • 10 - только 10 самых вероятных слов
    • 40 - хороший баланс
  • Пример: "top_k": 20

8. "num_predict": 512

  • Что делает: Максимальное количество генерируемых токенов
  • Применение:
    • 64 - короткие ответы
    • 512 - средние ответы
    • 2048 - длинные тексты
  • Пример: "num_predict": 256

9. "stop": ["\n", "###"]

  • Что делает: Символы/слова, при которых генерация останавливается
  • Применение:
    • ["\n"] - остановиться в конце строки
    • ["###", "Конец"] - кастомные стоп-слова
  • Пример: "stop": ["\n\n", "Ответ:"]

10. "repeat_penalty": 1.1

  • Что делает: Штраф за повторения (>1.0 уменьшает повторения)
  • Применение:
    • 1.0 - без штрафа
    • 1.2 - сильный штраф за повторения
  • Пример: "repeat_penalty": 1.15

11. "presence_penalty": 0.0

  • Что делает: Штраф за новые темы (положительные значения поощряют новизну)
  • Применение: -2.0 до 2.0

12. "frequency_penalty": 0.0

  • Что делает: Штраф за частые слова
  • Применение: -2.0 до 2.0

13. "seed": 42

  • Что делает: Seed для детерминированной генерации
  • Применение: Одинаковый seed = одинаковые ответы
  • Пример: "seed": 12345

14. "mirostat": 0

  • Что делает: Алгоритм контроля перплексии (0, 1, 2)
  • Применение:
    • 0 - выключено
    • 1 или 2 - для контроля качества

15. "num_ctx": 2048

  • Что делает: Размер контекстного окна
  • Применение: Зависит от модели

16. "num_thread": 8

  • Что делает: Количество потоков для вычислений
  • Применение: Обычно равно количеству ядер CPU

Дополнительные параметры:

17. "template": "{{ .Prompt }}"

  • Что делает: Шаблон для форматирования промпта
  • Применение:
    "template": "Ответь как эксперт: {{ .Prompt }}\nОтвет:"
    

18. "context": [1, 2, 3]

  • Что делает: Контекст предыдущего взаимодействия
  • Применение: Для продолжения диалога

Практические примеры настроек:

Для точных фактологических ответов:

{
  "temperature": 0.1,
  "top_p": 0.3,
  "top_k": 20,
  "repeat_penalty": 1.2
}

Для креативных текстов:

{
  "temperature": 0.9,
  "top_p": 0.95,
  "top_k": 60,
  "num_predict": 1024
}

Для детерминированных результатов:

{
  "temperature": 0.1,
  "seed": 42,
  "top_p": 0.1
}