From b27d38a53dc67b67fd0b130a6f5a259e6ead915b Mon Sep 17 00:00:00 2001 From: Ettore Di Giacinto Date: Fri, 24 Apr 2026 11:12:51 +0000 Subject: [PATCH] fix(buun-llama-cpp): backport logit_bias_eog field to grpc-server copy MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit LocalAI's shared grpc-server.cpp reaches ctx_server.get_meta().logit_bias_eog twice (the twin params_from_json_cmpl callsites). That accessor was added to server_context_meta upstream after buun's 2026-04-05 fork-point, so compiling against buun errors with 'struct server_context_meta' has no member named 'logit_bias_eog'. Rewrite the call sites — only in the buun grpc-server.cpp copy — to source the vector from params_base.sampling.logit_bias_eog instead. That vector is the underlying data the upstream meta accessor eventually returns (buun still carries common_params_sampling::logit_bias_eog at common.h:280), so the substitution yields identical behavior on both trees. The sed is guarded by a grep for the call site, so this patch is self-disabling once buun rebases past the upstream refactor. Assisted-by: Claude:Opus-4.7 [Read] [Edit] [Bash] [WebFetch] Signed-off-by: Ettore Di Giacinto --- backend/cpp/buun-llama-cpp/patch-grpc-server.sh | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/backend/cpp/buun-llama-cpp/patch-grpc-server.sh b/backend/cpp/buun-llama-cpp/patch-grpc-server.sh index de3e45f93..86b76a7c9 100755 --- a/backend/cpp/buun-llama-cpp/patch-grpc-server.sh +++ b/backend/cpp/buun-llama-cpp/patch-grpc-server.sh @@ -125,6 +125,21 @@ else echo "==> DFlash option-handler patch OK" fi +if grep -q 'ctx_server\.get_meta()\.logit_bias_eog' "$SRC"; then + echo "==> patching $SRC to source logit_bias_eog from params_base.sampling (buun predates server_context_meta::logit_bias_eog accessor)" + # Upstream llama.cpp exposes logit_bias_eog through server_context_meta + # after buun's 2026-04-05 fork-point. Buun still carries the underlying + # data on common_params_sampling::logit_bias_eog (the struct field the + # meta accessor eventually returns). Rewriting the call site to read + # params_base.sampling.logit_bias_eog works against both trees — upstream + # still populates that same vector the newer accessor returns. + sed 's/ctx_server\.get_meta()\.logit_bias_eog/params_base.sampling.logit_bias_eog/g' "$SRC" > "$SRC.tmp" + mv "$SRC.tmp" "$SRC" + echo "==> logit_bias_eog substitution OK" +else + echo "==> $SRC has no ctx_server.get_meta().logit_bias_eog call, skipping logit_bias_eog patch" +fi + if grep -q 'get_media_marker()' "$SRC"; then echo "==> patching $SRC to replace get_media_marker() with legacy \"<__media__>\" literal" # Only one call site today (ModelMetadata), but replace all occurrences to