Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
50 changes: 50 additions & 0 deletions tools/flaskIfc/flaskIfc.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,56 @@
def index():
return render_template('index.html')

@app.route('/llama-cli', methods=['GET'])
def serial_command():
# Currently the port is hard coded to /dev/ttyUSB3 but can be parameterized
port = '/dev/ttyUSB3'
#port = request.args.get('port')

# Currently the baudrate is hard coded to 921600 but can be parameterized
#baudrate = request.args.get('baudrate')
baudrate = '921600'
#./run_platform_test.sh "my cat's name" "10" "tinyllama-vo-5m-para.gguf" "none"
model = request.args.get('model')
backend = request.args.get('backend')
tokens = request.args.get('tokens')
prompt = request.args.get('prompt')

# Define the model path (update with actual paths)
model_paths = {
"tiny-llama": "tinyllama-vo-5m-para.gguf",
"Tiny-llama-F32": "Tiny-Llama-v0.3-FP32-1.1B-F32.gguf"
}

model_path = model_paths.get(model, "")
if not model_path:
return f"<h2>Error: Model path not found for '{model}'</h2>"

# Build llama-cli command
#command = [
# "./llama-cli",
# "-p", prompt,
# "-m", model_path,
# "--device", backend,
# "--temp", "0",
# "--n-predict", tokens,
# "--repeat-penalty", "1",
# "--top-k", "0",
# "--top-p", "1"
#]
# URL to Test this end point is as follows
# http://10.50.30.167:5001/llama-cli?model=tiny-llama&backend=tSavorite&tokens=5&prompt=Hello+How+are+you
script_path = "/usr/bin/tsi/v0.1.1.tsv31_06_06_2025/bin/run_platform_test.sh"
command = f"{script_path} \"{prompt}\" {tokens} {model_path} {backend}"

try:
result = subprocess.run(['python3', 'serial_script.py', port, baudrate, command], capture_output=True, text=True, check=True)
return result.stdout, 200
except subprocess.CalledProcessError as e:
return f"Error executing script: {e.stderr}", 500



@app.route('/submit', methods=['POST'])
def submit():
global job_status
Expand Down
12 changes: 9 additions & 3 deletions tools/flaskIfc/serial_script.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,15 +6,21 @@ def send_serial_command(port, baudrate, command):
ser = serial.Serial(port, baudrate)

ser.write((command + '\n').encode()) # Send command with newline

# Wait to read the serial port
data = '\0'
while True:
try:
line = ser.readline()
# read byte by byte to find either a new line character or a prompt marker
# instead of new line using line = ser.readline()
line = b""
while True:
byte = ser.read(1) # Read one byte at a time
if (byte == b"\n") or (byte == b"#"): # Stop when delimiter is found
break
line += byte
if line: # Check if line is not empty
read_next_line = line.decode('utf-8')
if ("run-platform-done" in read_next_line) or ("@agilex7_dk_si_agf014ea" in read_next_line):
if ("run-platform-done" in read_next_line.strip()) or ("@agilex7_dk_si_agf014ea" in read_next_line.strip()) or ("imx8mpevk" in read_next_line.strip()):
break
data += read_next_line # Keep the line as-is with newline
else:
Expand Down