ব্রাউজারে জাভাস্ক্রিপ্ট এবং টাইপস্ক্রিপ্টের জন্য LiteRT-LM-এর ওয়েব এপিআই। এটি একটি প্রাথমিক প্রিভিউ যা ওয়েবজিপিইউ-তে চালিত টেক্সট-ইন / টেক্সট-আউট সমর্থন করে।
ভূমিকা
জাভাস্ক্রিপ্ট এপিআই দিয়ে তৈরি একটি নমুনা REPL চ্যাট অ্যাপ নিচে দেওয়া হলো:
<div id="out" style="white-space: pre-wrap; font-family: monospace;"></div>
<input id="in" onkeydown="if(event.key === 'Enter') repl(this)">
<script type="module">
import { Engine } from 'https://cdn.jsdelivr.net/npm/@litert-lm/core/+esm';
const engine = await Engine.create({ model: '/path/to/model.litertlm' });
const chat = await engine.createConversation();
window.repl = async (el) => {
const text = el.value;
el.value = ''; // Clear immediately
out.append(`\n>>> ${text}\nAI: `);
for await (const chunk of chat.sendMessageStreaming(text)) {
out.append(chunk.content[0].text);
}
};
</script>
শুরু করা
LiteRT-LM একটি npm প্যাকেজ হিসেবে উপলব্ধ। আপনি npm থেকে সর্বশেষ সংস্করণটি ইনস্টল করতে পারেন অথবা সরাসরি একটি CDN থেকে এটি ইম্পোর্ট করতে পারেন:
# From npm
npm i --save @litert-lm/core
# From a CDN (in your JavaScript file)
import * as litertlm from 'https://cdn.jsdelivr.net/npm/@litert-lm/core/+esm';
ইঞ্জিন চালু করুন
Engine হলো এপিআই-এর প্রবেশদ্বার। এটি মডেল লোড করা, সেশন তৈরি করা এবং রিসোর্স ব্যবস্থাপনার কাজ করে। মডেলটির আর প্রয়োজন না হলে রিসোর্স মুক্ত করার জন্য ইঞ্জিনটি delete করতে মনে রাখবেন।
দ্রষ্টব্য: ইঞ্জিনটি চালু হতে এবং মডেলটি লোড হতে কয়েক সেকেন্ড সময় লাগতে পারে।
import {Engine, EngineSettings} from '@litert-lm/core';
const engineSettings = {
model: 'url/path/to/model.litertlm', // or a ReadableStream, or a Blob
} satisfies EngineSettings;
const engine = await Engine.create(engineSettings);
// ... Use the engine to create a conversation ...
// Delete the engine when done.
await engine.delete();
একটি কথোপকথন তৈরি করুন
ইঞ্জিনটি চালু হয়ে গেলে, একটি Conversation ইনস্ট্যান্স তৈরি করুন। এর আচরণ কাস্টমাইজ করার জন্য আপনি একটি ConversationConfig প্রদান করতে পারেন।
const conversation = await engine.createConversation({
preface: {
messages: [
{role: 'system', content: 'You are a helpful assistant'}
]
}
});
conversation.sendMessage({
role: 'user',
content: 'Write a poem',
});
বার্তা পাঠান
আপনি স্ট্রিমিং সহ বা স্ট্রিমিং ছাড়াই বার্তা পাঠাতে পারেন।
নন-স্ট্রিমিং উদাহরণ
// Simple string input
let response = await conversation.sendMessage("What is the capital of France?");
console.log(response.content[0].text);
// Or with full message structure
response = await conversation.sendMessage({role: 'user', content: '...'});
স্ট্রিমিং উদাহরণ
// sendMessageStreaming returns a ReadableStream of response chunks
const stream = conversation.sendMessageStreaming('Tell me a long story.');
for await (const chunk of stream) {
// Chunks are Records containing pieces of the response
for (const item of chunk.content) {
if (item.type === 'text') {
console.log(item.text);
}
}
}
বাতিল প্রজন্ম
আপনি Conversation ইনস্ট্যান্সে cancel() কল করে চলমান কোনো জেনারেশন স্পষ্টভাবে বাতিল করতে পারেন:
// Cancel any ongoing generation
conversation.cancel();
আপনি যদি রেসপন্সটি স্ট্রিম করে থাকেন, for await...of লুপ থেকে সময়ের আগে বেরিয়ে গেলে (যেমন break ব্যবহার করে) চলমান জেনারেশনটিও স্বয়ংক্রিয়ভাবে বাতিল হয়ে যাবে:
for await (const chunk of stream) {
if (shouldStop()) {
break; // Cancels the stream and underlying generation
}
}