hsuwill000 commited on
Commit
0cfacc3
·
verified ·
1 Parent(s): bbb7584

Update index.js

Browse files
Files changed (1) hide show
  1. index.js +85 -79
index.js CHANGED
@@ -1,79 +1,85 @@
1
- import { Client } from "@gradio/client";
2
- chatDisplay.appendChild(wrap);
3
- chatDisplay.scrollTop = chatDisplay.scrollHeight;
4
- }
5
-
6
-
7
- // connect to gradio back-end
8
- async function connectClient(){
9
- pushMessage('assistant','Connecting to model...');
10
- try{
11
- client = await Client.connect('amd/gpt-oss-120b-chatbot');
12
- isConnected = true;
13
- pushMessage('assistant','Connected. You can send messages.');
14
- }catch(err){
15
- pushMessage('assistant','Failed to connect: ' + String(err));
16
- console.error(err);
17
- }
18
- }
19
-
20
-
21
- // send a chat request
22
- async function sendChat(){
23
- if(!isConnected){
24
- await connectClient();
25
- if(!isConnected) return;
26
- }
27
-
28
-
29
- const message = userInput.value.trim();
30
- const system_prompt = systemInput.value;
31
- if(!message) return;
32
-
33
-
34
- // UI lock
35
- sendBtn.disabled = true;
36
-
37
-
38
- // show user message immediately
39
- pushMessage('user', message);
40
-
41
-
42
- try{
43
- // call gradio predict endpoint
44
- const result = await client.predict('/chat', {
45
- message,
46
- system_prompt,
47
- temperature: 0,
48
- });
49
-
50
-
51
- // gradio client returns result.data per example
52
- // Some backends may return streaming or different structure — adjust if needed
53
- const assistantText = (result && result.data) ? String(result.data) : 'No response';
54
- pushMessage('assistant', assistantText);
55
- }catch(err){
56
- console.error(err);
57
- pushMessage('assistant','Error: ' + String(err));
58
- }finally{
59
- sendBtn.disabled = false;
60
- userInput.value = '';
61
- userInput.focus();
62
- }
63
- }
64
-
65
-
66
- // wire events
67
- sendBtn.addEventListener('click', sendChat);
68
- userInput.addEventListener('keydown', (e) => {
69
- // Enter to send
70
- if(e.key === 'Enter'){
71
- e.preventDefault();
72
- sendChat();
73
- }
74
- });
75
-
76
-
77
- // initial connect in background
78
- connectClient();
79
- })();
 
 
 
 
 
 
 
1
+ // index.js
2
+ import { Client } from "https://cdn.jsdelivr.net/npm/@gradio/client/dist/index.min.js";
3
+
4
+ (async () => {
5
+ const sendBtn = document.getElementById('sendBtn');
6
+ const userInput = document.getElementById('userMessage');
7
+ const systemInput = document.getElementById('systemPrompt');
8
+ const chatDisplay = document.getElementById('chatDisplay');
9
+
10
+ let client;
11
+ let isConnected = false;
12
+
13
+ function pushMessage(role, text){
14
+ const wrap = document.createElement('div');
15
+ wrap.className = `message ${role}`;
16
+
17
+ const bubble = document.createElement('div');
18
+ bubble.className = 'bubble';
19
+ bubble.textContent = text;
20
+
21
+ wrap.appendChild(bubble);
22
+ chatDisplay.appendChild(wrap);
23
+ chatDisplay.scrollTop = chatDisplay.scrollHeight;
24
+ }
25
+
26
+ async function connectClient(){
27
+ pushMessage('assistant','Connecting to model...');
28
+ try{
29
+ client = await Client.connect("amd/gpt-oss-120b-chatbot");
30
+ isConnected = true;
31
+ pushMessage('assistant','Connected. You can send messages.');
32
+ console.log("✅ Connected to Gradio Space");
33
+ }catch(err){
34
+ pushMessage('assistant','Failed to connect: ' + String(err));
35
+ console.error("❌ Connect error",err);
36
+ }
37
+ }
38
+
39
+ async function sendChat(){
40
+ if(!isConnected){
41
+ await connectClient();
42
+ if(!isConnected) return;
43
+ }
44
+
45
+ const message = userInput.value.trim();
46
+ const system_prompt = systemInput.value.trim();
47
+ if(!message) return;
48
+
49
+ sendBtn.disabled = true;
50
+
51
+ pushMessage('user', message);
52
+
53
+ try{
54
+ console.log("Sending to /chat",{message,system_prompt});
55
+ const result = await client.predict("/chat", {
56
+ message,
57
+ system_prompt,
58
+ temperature: 0,
59
+ });
60
+
61
+ console.log("Received result",result);
62
+
63
+ const assistantText = (result && result.data) ? String(result.data) : 'No response';
64
+ pushMessage('assistant', assistantText);
65
+ }catch(err){
66
+ console.error("❌ Predict error",err);
67
+ pushMessage('assistant','Error: ' + String(err));
68
+ }finally{
69
+ sendBtn.disabled = false;
70
+ userInput.value = '';
71
+ userInput.focus();
72
+ }
73
+ }
74
+
75
+ sendBtn.addEventListener('click', sendChat);
76
+ userInput.addEventListener('keydown', (e) => {
77
+ if(e.key === 'Enter'){
78
+ e.preventDefault();
79
+ sendChat();
80
+ }
81
+ });
82
+
83
+ // connect on load
84
+ connectClient();
85
+ })();