73 lines
1.8 KiB
JavaScript
Executable File
73 lines
1.8 KiB
JavaScript
Executable File
import request from 'needle';
|
|
|
|
( async () => {
|
|
const color = {
|
|
PURPLE : '\x1b[95m',
|
|
CYAN : '\x1b[96m',
|
|
DARKCYAN : '\x1b[36m',
|
|
BLUE : '\x1b[94m',
|
|
GREEN : '\x1b[92m',
|
|
YELLOW : '\x1b[93m',
|
|
RED : '\x1b[91m',
|
|
BOLD : '\x1b[1m',
|
|
UNDERLINE : '\x1b[4m',
|
|
END : '\x1b[0m'
|
|
};
|
|
|
|
let payload = {
|
|
model : 'vicuna-v1-7b',
|
|
messages: [{"role": "user", "content": "Write a haiku"}],
|
|
stream: false
|
|
};
|
|
|
|
const print = ( str ) => {
|
|
process.stdout.write(str);
|
|
};
|
|
|
|
const newline = () => {
|
|
print('\n');
|
|
}
|
|
|
|
newline();
|
|
print(color.BOLD + "Without streaming:" + color.END);
|
|
newline();
|
|
|
|
let r = await request("post", "http://127.0.0.1:8000/v1/chat/completions", payload, {json: true});
|
|
|
|
print(color.GREEN + r.body.choices[0].message.content + color.END);
|
|
print('\n');
|
|
// Reset the chat
|
|
r = await request("post", "http://127.0.0.1:8000/v1/chat/completions", payload, {json: true});
|
|
print(color.BOLD + "Reset chat" + color.END);
|
|
newline();
|
|
|
|
// Get a response using a prompt with streaming
|
|
|
|
payload = {
|
|
"model": "vicuna-v1-7b",
|
|
"messages": [{"role": "user", "content": "Write a haiku"}],
|
|
"stream": true
|
|
}
|
|
|
|
print( color.BOLD + "With streaming:" + color.END);
|
|
newline();
|
|
r = request.post( "http://127.0.0.1:8000/v1/chat/completions", payload, {json: true})
|
|
.on('readable', function() {
|
|
let jsData = '';
|
|
let data = '';
|
|
while (data = this.read()) {
|
|
const chunk = data.toString().substring(6);
|
|
if (chunk.trim() === "[DONE]") break;
|
|
jsData = JSON.parse(chunk);
|
|
print(color.GREEN + jsData.choices[0].delta.content + color.END);
|
|
}
|
|
})
|
|
.on('done', async function () {
|
|
newline();
|
|
let txtresp = await request("get", "http://127.0.0.1:8000/stats");
|
|
print(color.BOLD + "Runtime stats:" + color.END + txtresp.body);
|
|
|
|
})
|
|
|
|
})()
|