| <!DOCTYPE html> |
| <html> |
| <head> |
| <title>FunctionGemma Physics Demo</title> |
| <script type="module"> |
| import * as webllm from "https://esm.run/@mlc-ai/web-llm"; |
| |
| const appConfig = { |
| model_list: [ |
| { |
| model: "https://huggingface.co/2796gauravc/functiongemma-mlc", |
| model_id: "functiongemma-physics", |
| |
| model_lib: "https://raw.githubusercontent.com/mlc-ai/binary-mlc-llm-libs/main/gemma-2b-it-q4f16_1-ctx4k_cs1k-webgpu.wasm" |
| } |
| ] |
| }; |
| |
| async function initModel() { |
| const statusDiv = document.getElementById("status"); |
| statusDiv.textContent = "Loading model..."; |
| |
| try { |
| const engine = await webllm.CreateMLCEngine( |
| "functiongemma-physics", |
| { |
| appConfig, |
| initProgressCallback: (progress) => { |
| statusDiv.textContent = progress.text; |
| } |
| } |
| ); |
| |
| statusDiv.textContent = "Model loaded! Type a message."; |
| |
| document.getElementById("send").onclick = async () => { |
| const input = document.getElementById("input").value; |
| const output = document.getElementById("output"); |
| |
| output.textContent = "Thinking..."; |
| |
| const response = await engine.chat.completions.create({ |
| messages: [{ role: "user", content: input }], |
| stream: false |
| }); |
| |
| output.textContent = response.choices[0].message.content; |
| }; |
| } catch (error) { |
| statusDiv.textContent = "Error: " + error.message; |
| } |
| } |
| |
| window.onload = initModel; |
| </script> |
| </head> |
| <body> |
| <h1>FunctionGemma Physics Game Assistant</h1> |
| <div id="status">Initializing...</div> |
| <br> |
| <input type="text" id="input" placeholder="Ask about physics..." style="width:400px"> |
| <button id="send">Send</button> |
| <br><br> |
| <div id="output" style="border:1px solid #ccc; padding:10px; min-height:100px;"></div> |
| </body> |
| </html> |
|
|