echodict/llama.cpp
version https://git-lfs.github.com/spec/v1 oid sha256:cfc44b7ba25614df70e6b65e3341cae0310163bd32fd31a6b928a542df433faf size 30786
0765
1#!/usr/bin/env bash2 3set -e4 5# Parse command line arguments6MODEL_PATH=""7MODEL_NAME=""8PROMPTS_FILE=""9 10# First argument is always model path11if [ $# -gt 0 ] && [[ "$1" != --* ]]; then12 MODEL_PATH="$1"13 shift14fi15 16# Parse remaining arguments17while [[ $# -gt 0 ]]; do18 case $1 in19 --prompts-file|-pf)20 PROMPTS_FILE="$2"21 shift 222 ;;23 *)24 # If MODEL_NAME not set and this isn't a flag, use as model name25 if [ -z "$MODEL_NAME" ] && [[ "$1" != --* ]]; then26 MODEL_NAME="$1"27 fi28 shift29 ;;30 esac31done32 33# Set defaults34MODEL_PATH="${MODEL_PATH:-"$EMBEDDING_MODEL_PATH"}"35MODEL_NAME="${MODEL_NAME:-$(basename "$MODEL_PATH")}"36 37CONVERTED_MODEL_PATH="${CONVERTED_EMBEDDING_PATH:-"$CONVERTED_EMBEDDING_MODEL"}"38CONVERTED_MODEL_NAME="${CONVERTED_MODEL_NAME:-$(basename "$CONVERTED_MODEL_PATH" .gguf)}"39 40if [ -t 0 ]; then41 CPP_EMBEDDINGS="data/llamacpp-${CONVERTED_MODEL_NAME}-embeddings.bin"42else43 # Process piped JSON data and convert to binary (matching logits.cpp format)44 TEMP_FILE=$(mktemp /tmp/tmp.XXXXXX.binn)45 python3 -c "46import json47import sys48import struct49 50data = json.load(sys.stdin)51 52# Flatten all embeddings completely53flattened = []54for item in data:55 embedding = item['embedding']56 for token_embedding in embedding:57 flattened.extend(token_embedding)58 59print(f'Total embedding values: {len(flattened)}', file=sys.stderr)60 61# Write as binary floats - matches logitc.cpp fwrite format62with open('$TEMP_FILE', 'wb') as f:63 for value in flattened:64 f.write(struct.pack('f', value))65"66 CPP_EMBEDDINGS="$TEMP_FILE"67 trap "rm -f $TEMP_FILE" EXIT68fi69 70# Build the semantic_check.py command71SEMANTIC_CMD="python scripts/utils/semantic_check.py --model-path $MODEL_PATH \72 --python-embeddings data/pytorch-${MODEL_NAME}-embeddings.bin \73 --cpp-embeddings $CPP_EMBEDDINGS"74 75# Add prompts file if specified, otherwise use default prompt76if [ -n "$PROMPTS_FILE" ]; then77 SEMANTIC_CMD="$SEMANTIC_CMD --prompts-file \"$PROMPTS_FILE\""78else79 SEMANTIC_CMD="$SEMANTIC_CMD --prompt \"Hello world today\""80fi81 82# Execute the command83eval $SEMANTIC_CMD84 85 