From 56c404253935200f1ddc9d12217531756e7e6268 Mon Sep 17 00:00:00 2001 From: Shuvalov Evgeny Date: Sun, 1 Feb 2026 17:57:16 +0300 Subject: [PATCH] fix --- 1_анализ_главы/run_framework_ollama.py | 9 +++++++++ .../{выход_frame_ollama.json => выход_frame_ollama_v1.json} | 0 docs/ollama-models.md | 13 +++++++++++++ 3 files changed, 22 insertions(+) rename 1_анализ_главы/{выход_frame_ollama.json => выход_frame_ollama_v1.json} (100%) diff --git a/1_анализ_главы/run_framework_ollama.py b/1_анализ_главы/run_framework_ollama.py index a6b982c..1b6b61a 100644 --- a/1_анализ_главы/run_framework_ollama.py +++ b/1_анализ_главы/run_framework_ollama.py @@ -16,6 +16,14 @@ OLLAMA_URL = "http://localhost:11434" MODEL = "qwen3:14b" DIR = Path(__file__).resolve().parent +# Параметры для стабильного структурированного вывода (JSON framework) +OLLAMA_OPTIONS = { + "temperature": 0.3, # ниже = детерминированнее, меньше «творчества» и смены языка + "num_ctx": 8500, # контекст под длинную главу + "num_predict": 4096, # лимит токенов ответа под полный frame + "repeat_penalty": 1.1, +} + def load_input() -> dict: with open(DIR / "вход_главы.json", encoding="utf-8") as f: @@ -49,6 +57,7 @@ def call_ollama(prompt: str) -> str: "messages": [{"role": "user", "content": prompt}], "stream": False, "format": "json", + "options": OLLAMA_OPTIONS, }, ensure_ascii=False, ).encode("utf-8") diff --git a/1_анализ_главы/выход_frame_ollama.json b/1_анализ_главы/выход_frame_ollama_v1.json similarity index 100% rename from 1_анализ_главы/выход_frame_ollama.json rename to 1_анализ_главы/выход_frame_ollama_v1.json diff --git a/docs/ollama-models.md b/docs/ollama-models.md index 95a9fe3..8756efc 100644 --- a/docs/ollama-models.md +++ b/docs/ollama-models.md @@ -44,6 +44,19 @@ В коде пайплайна имя модели задаётся конфигом (например, `OLLAMA_LLM_MODEL=qwen3:14b`). +## Параметры генерации (options) для LLM + +Для стабильного структурированного вывода (JSON framework) в `run_framework_ollama.py` передаётся блок `options`: + +| Параметр | Значение | Назначение | +|----------------|----------|------------| +| `temperature` | 0.3 | Ниже = детерминированнее ответ, меньше смены языка и «творчества». Для извлечения frame лучше 0.2–0.5. | +| `num_ctx` | 8192 | Размер контекста (токены). Должен вмещать главу + промпт. | +| `num_predict` | 4096 | Макс. токенов ответа, чтобы полный JSON не обрезался. | +| `repeat_penalty` | 1.1 | Снижает повторения в тексте. | + +Изменить можно в коде (`OLLAMA_OPTIONS`) или через переменные окружения, если скрипт будет их читать. + ## Локальный Ollama (без Docker) Если Ollama установлен локально: