Guide de l’inférence IA
Exemples de code
Exemples pour démarrer
Des points de départ pour des formes de SDK précises, et non des recettes de production intemporelles. Installez le paquet indiqué, choisissez un modèle présent au catalogue actuel du fournisseur, épinglez les versions des dépendances et testez les chemins d’erreur, d’expiration, d’annulation et de limite de ressources avant tout déploiement.
Exemple WebLLM en navigateur
// 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);Exemple 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 || '');
}Serveur local Ollama
Installez Ollama en suivant ses instructions officielles par plateforme et vérifiez que l’application de bureau ou le service est démarré.
# 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());Application de bureau LM Studio
Chargez un modèle dans LM Studio, puis démarrez son serveur local avec lms server start. L’exemple découvre l’identifiant réel du modèle local au lieu d’en supposer un.
// 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);Exemple d’API fournisseur (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 || '');
}Intégration d’un modèle de vision
Les schémas d’entrée visuelle et les identifiants de modèles pris en charge diffèrent selon les runtimes. Sélectionnez un modèle image-vers-texte ou multimodal actuellement pris en charge dans le catalogue du runtime, puis validez les limites de taille et de type d’image, l’orientation, l’accessibilité, la pression mémoire et le traitement des fichiers non fiables.
Consulter la documentation et les exemples Transformers.js à jourBonnes pratiques
Optimisation des performances
- • Mesurer les variantes quantifiées au regard des objectifs de qualité et de latence
- • Mettre en place des stratégies de cache adaptées
- • Optimiser les tailles de lot pour le débit
- • Surveiller l’usage mémoire et la libération des ressources
Expérience utilisateur
- • Afficher la progression du téléchargement des modèles
- • Mettre en place le streaming pour les longues réponses
- • Prévoir des solutions de repli
- • Traiter les erreurs proprement