Руководство по инференсу
Примеры кода
Примеры для начала работы
Это отправные точки под конкретную форму SDK, а не универсальные рецепты для эксплуатации без привязки к версиям. Установите показанный пакет, выберите модель из актуального каталога провайдера, зафиксируйте версии зависимостей и до развёртывания проверьте сценарии ошибок, тайм-аутов, отмены и исчерпания ресурсов.
Пример WebLLM в браузере
// npm install @mlc-ai/web-llm
import { CreateMLCEngine } from "@mlc-ai/web-llm";
// Initialize the engine
const engine = await CreateMLCEngine(
"Llama-3.2-1B-Instruct-q4f32_1-MLC",
{
initProgressCallback: (progress) => {
console.log('Loading:', Math.round(progress.progress * 100) + '%');
}
}
);
// Generate text
const response = await engine.chat.completions.create({
messages: [
{ role: "system", content: "You are a helpful assistant." },
{ role: "user", content: "Hello! How are you?" }
],
temperature: 0.8,
max_tokens: 100
});
console.log(response.choices[0].message.content);Пример BrowserAI
// npm install @browserai/browserai
import { BrowserAI } from '@browserai/browserai';
const browserAI = new BrowserAI();
// Load model with progress tracking
await browserAI.loadModel('llama-3.2-1b-instruct', {
quantization: 'q4f16_1',
onProgress: (progress) => console.log('Loading:', progress.progress + '%')
});
// Generate text
const response = await browserAI.generateText('Hello, how are you?');
console.log(response.choices[0].message.content);
// Streaming example
const chunks = await browserAI.generateText('Write a story', {
stream: true,
temperature: 0.8
});
for await (const chunk of chunks) {
console.log(chunk.choices[0]?.delta.content || '');
}Локальный сервер Ollama
Установите Ollama по официальной инструкции для вашей платформы и убедитесь, что настольное приложение или служба запущены.
# Terminal
ollama pull llama3.2:1b
ollama run llama3.2:1b "Hello, world!"// JavaScript (browser/devtools while the local service is running)
const response = await fetch('http://localhost:11434/api/generate', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
model: 'llama3.2:1b',
prompt: 'Hello!',
stream: false
})
});
if (!response.ok) throw new Error('Ollama request failed: ' + response.status);
console.log(await response.json());Настольное приложение LM Studio
Загрузите модель в LM Studio, затем запустите её локальный сервер командой lms server start. Пример определяет фактический идентификатор локальной модели, а не предполагает его.
// Discover the identifiers exposed by this LM Studio server
const modelsResponse = await fetch('http://localhost:1234/v1/models');
if (!modelsResponse.ok) throw new Error('Model list failed: ' + modelsResponse.status);
const models = await modelsResponse.json();
const model = models.data?.[0]?.id;
if (!model) throw new Error('Load at least one model in LM Studio');
const response = await fetch('http://localhost:1234/v1/chat/completions', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
model,
messages: [
{ role: 'system', content: 'You are a helpful assistant.' },
{ role: 'user', content: 'Hello!' }
],
temperature: 0.7,
max_tokens: 100
})
});
if (!response.ok) throw new Error('Completion failed: ' + response.status);
const data = await response.json();
console.log(data.choices[0].message.content);Пример API провайдера (Together AI)
// npm install together-ai
import Together from "together-ai";
const together = new Together({
apiKey: process.env.TOGETHER_API_KEY,
});
const model = process.env.TOGETHER_MODEL;
if (!model) throw new Error("Set TOGETHER_MODEL to an ID from the current serverless catalog");
const response = await together.chat.completions.create({
messages: [
{ role: "system", content: "You are a helpful assistant." },
{ role: "user", content: "Explain quantum computing in simple terms." }
],
model,
max_tokens: 500,
temperature: 0.7,
stream: true,
});
// Handle streaming response
for await (const chunk of response) {
process.stdout.write(chunk.choices[0]?.delta?.content || '');
}Подключение модели компьютерного зрения
Схемы ввода изображений и поддерживаемые идентификаторы моделей различаются от рантайма к рантайму. Выберите в каталоге рантайма поддерживаемую сейчас модель типа «изображение в текст» или мультимодальную, а затем проверьте ограничения на размер и тип изображения, ориентацию, доступность, нагрузку на память и обработку недоверенных файлов.
Использовать актуальную документацию и примеры Transformers.jsРекомендуемые практики
Оптимизация производительности
- • Сверяйте квантизованные варианты с целями по качеству и задержке
- • Реализуйте подходящие стратегии кэширования
- • Подбирайте размеры батча под пропускную способность
- • Следите за расходом памяти и её освобождением
Опыт пользователя
- • Показывайте прогресс загрузки моделей
- • Реализуйте стриминг для длинных ответов
- • Предусмотрите запасные варианты
- • Аккуратно обрабатывайте ошибки