Spaces:
Running
Running
<html> | |
<head> | |
<meta charset="utf-8" /> | |
<meta name="viewport" content="width=device-width" /> | |
<title>WebLLM Phi 3.5 Chat</title> | |
<link rel="stylesheet" href="styles/katex.min.css" /> | |
<link | |
rel="stylesheet" | |
href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.9.0/styles/default.min.css" | |
/> | |
<link rel="stylesheet" href="styles/style.css" /> | |
</head> | |
<body> | |
<main> | |
<h1>WebLLM Phi 3.5 Chat</h1> | |
<p> | |
This space enables AI chat with Phi 3.5 models directly in your local | |
browser, empowered by WebLLM. | |
</p> | |
<h2>Step 1: Configure And Download Model</h2> | |
<div class="card vertical"> | |
<form class="configure-form"> | |
<!-- Quantization --> | |
<div class="form-group"> | |
<label for="quantization">Quantization:</label> | |
<select id="quantization" name="quantization"> | |
<option value="q4f16">q4f16</option> | |
<option value="q4f32">q4f32</option> | |
</select> | |
</div> | |
<!-- Context Window --> | |
<div class="form-group"> | |
<label for="context">Context Window:</label> | |
<select id="context" name="context"> | |
<option value="1k">1024</option> | |
<option value="">4096</option> | |
</select> | |
</div> | |
<!-- Temperature --> | |
<div class="form-group"> | |
<label for="temperature" | |
>Temperature: | |
<span id="temperature-value" class="range-value">1.00</span></label | |
> | |
<input | |
type="range" | |
id="temperature" | |
name="temperature" | |
min="0.0" | |
max="1.0" | |
step="0.01" | |
value="1.0" | |
oninput="document.getElementById('temperature-value').textContent = Number(this.value).toFixed(2)" | |
/> | |
</div> | |
<!-- Top-p --> | |
<div class="form-group"> | |
<label for="top_p" | |
>Top-p: | |
<span id="top_p-value" class="range-value">1.00</span></label | |
> | |
<input | |
type="range" | |
id="top_p" | |
name="top_p" | |
min="0.01" | |
max="1.0" | |
step="0.01" | |
value="1.0" | |
oninput="document.getElementById('top_p-value').textContent = Number(this.value).toFixed(2)" | |
/> | |
</div> | |
<!-- Presence Penalty --> | |
<div class="form-group"> | |
<label for="presence_penalty" | |
>Presence Penalty: | |
<span id="presence_penalty-value" class="range-value" | |
>0.00</span | |
></label | |
> | |
<input | |
type="range" | |
id="presence_penalty" | |
name="presence_penalty" | |
min="0.0" | |
max="1.0" | |
step="0.01" | |
value="0.0" | |
oninput="document.getElementById('presence_penalty-value').textContent = Number(this.value).toFixed(2)" | |
/> | |
</div> | |
<!-- Frequency Penalty --> | |
<div class="form-group"> | |
<label for="frequency_penalty" | |
>Frequency Penalty: | |
<span id="frequency_penalty-value" class="range-value" | |
>0.00</span | |
></label | |
> | |
<input | |
type="range" | |
id="frequency_penalty" | |
name="frequency_penalty" | |
min="0.0" | |
max="1.0" | |
step="0.01" | |
value="0.0" | |
oninput="document.getElementById('frequency_penalty-value').textContent = Number(this.value).toFixed(2)" | |
/> | |
</div> | |
</form> | |
<button id="download">Download</button> | |
</div> | |
<p id="download-status" class="hidden"></p> | |
<h2>Step 2: Chat</h2> | |
<div class="chat-container"> | |
<div id="chat-box" class="chat-box"></div> | |
<div id="chat-stats" class="chat-stats hidden"></div> | |
<div class="chat-input-container"> | |
<div class="chat-input"> | |
<input | |
type="text" | |
id="user-input" | |
placeholder="Type a message..." | |
/> | |
<button id="send" disabled>Send</button> | |
</div> | |
</div> | |
</div> | |
</main> | |
<script src="./dist/index.js" type="module"></script> | |
</body> | |
</html> | |