Skip to content

ローカル llama.cpp fallback の下書き品質を合格基準まで上げる #36

@terisuke

Description

@terisuke

目的

ローカルPC上の llama-server / llama.cpp だけで、Note Maker の下書き生成 fallback が実用品質に達することを実証する。Evo X2 やローカル Ollama API に依存しない、最後の保険経路としての品質検証である。

現在の状態

ソース側の検証基盤は develop に入っている。

  • cmd/scenario/local_llamacpp_fallback で loopback 専用の検証を実行できる
  • cmd/scenario/brief_interview の固定シナリオ回答は question ID ベースになり、must_include / exclusions / target_length_structure / tone_stance の回答ずれは修正済み
  • score >= 82keyword_overlap >= 70runes >= 2800 を report に記録する
  • 検証手順は docs/handoffs/open-issues-field-validation-2026-05-04.mddocs/validation/issue-36-local-llamacpp-fallback-2026-05-04.md にある

2026-05-04 時点で試した gemma-3-27b-it-Q8_0.gguf は、load まではできたが合格していない。

  • 初回: score=70.7, keyword_overlap=40, runes=1914, verification_passed=false
  • 修正後 streaming: draft generation 中に read llama.cpp stream: unexpected EOF
  • 修正後 non-streaming: draft generation 中に call llama.cpp: ... EOF

実証実験の前提

  1. ローカルで llama-server を起動できること
  2. OpenAI互換 endpoint が http://127.0.0.1:8081/v1 などの loopback にあること
  3. /v1/models が検証対象の alias を返すこと
  4. Evo X2 と Ollama local API を使わないこと

例:

/opt/homebrew/bin/llama-server \
  -m /path/to/model.gguf \
  --host 127.0.0.1 \
  --port 8081 \
  --alias local-model:alias \
  --ctx-size 8192 \
  --n-gpu-layers 999 \
  --jinja \
  --flash-attn auto

確認:

curl -sS --max-time 5 http://127.0.0.1:8081/v1/models

実行コマンド

/usr/bin/time -p env \
  RUN_LOCAL_LLAMACPP_FALLBACK_SCENARIO=1 \
  LOCAL_LLAMACPP_FALLBACK_BASE_URL=http://127.0.0.1:8081/v1 \
  LOCAL_LLAMACPP_FALLBACK_MODEL=local-model:alias \
  LOCAL_LLAMACPP_FALLBACK_VERIFY_MODEL=local-model:alias \
  LOCAL_LLAMACPP_FALLBACK_LOAD_FLAGS='実際の llama-server flags を記録' \
  LOCAL_LLAMACPP_FALLBACK_TIMEOUT_SECONDS=1200 \
  LOCAL_LLAMACPP_FALLBACK_MAX_ATTEMPTS=2 \
  make scenario-local-llamacpp-fallback

streaming が不安定な場合のみ、診断として次も実行する。

/usr/bin/time -p env \
  RUN_LOCAL_LLAMACPP_FALLBACK_SCENARIO=1 \
  LOCAL_LLAMACPP_FALLBACK_BASE_URL=http://127.0.0.1:8081/v1 \
  LOCAL_LLAMACPP_FALLBACK_MODEL=local-model:alias \
  LOCAL_LLAMACPP_FALLBACK_VERIFY_MODEL=local-model:alias \
  LOCAL_LLAMACPP_FALLBACK_STREAM_DRAFT=0 \
  LOCAL_LLAMACPP_FALLBACK_TIMEOUT_SECONDS=1200 \
  LOCAL_LLAMACPP_FALLBACK_MAX_ATTEMPTS=1 \
  make scenario-local-llamacpp-fallback

記録する証跡

  • tmp/local_llamacpp_fallback/report.md
  • tmp/local_llamacpp_fallback/report.json
  • tmp/local_llamacpp_fallback/draft_generation/draft.md
  • tmp/local_llamacpp_fallback/draft_generation/evaluation.json
  • tmp/local_llamacpp_fallback/draft_generation/verification.json
  • llama-server の起動コマンド、model path、alias、load flags、周辺ログ

Close 条件

次をすべて満たしたら close する。

  • status=passed
  • result.score >= 82
  • result.keyword_overlap >= 70
  • result.runes >= 2800
  • verification が実行された場合は verification_passed=true
  • base URL が loopback で、Evo X2 でも Ollama local API でもない

Close してはいけない条件

  • endpoint が Evo X2 / Tailnet を指している
  • endpoint が Ollama local API を指している
  • load だけ成功して draft quality が未達
  • draft が生成されても keyword_overlap または runes が未達
  • llama-server が EOF / crash / timeout で終了している

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions