Huggingface.js documentation
Bibliothèques JS de Hugging Face
// Programmatically interact with the Hub
await createRepo({
repo: { type: "model", name: "my-user/nlp-model" },
accessToken: HF_TOKEN
});
await uploadFile({
repo: "my-user/nlp-model",
accessToken: HF_TOKEN,
// Can work with native File in browsers
file: {
path: "pytorch_model.bin",
content: new Blob(...)
}
});
// Use all supported Inference Providers!
await inference.chatCompletion({
model: "meta-llama/Llama-3.1-8B-Instruct",
provider: "sambanova", // or together, fal-ai, replicate, cohere …
messages: [
{
role: "user",
content: "Hello, nice to meet you!",
},
],
max_tokens: 512,
temperature: 0.5,
});
await inference.textToImage({
model: "black-forest-labs/FLUX.1-dev",
provider: "replicate",
inputs: "a picture of a green bird",
});
// and much more…Bibliothèques JS de Hugging Face
Il s'agit d'une collection de bibliothèques JS pour interagir avec l'API Hugging Face, avec les types TS inclus.
- @huggingface/hub : Interagit avec huggingface.co pour créer ou supprimer des dépôts et committer / télécharger des fichiers
- @huggingface/inference : utilisez tous les Inference Providers (serverless) pris en charge ou passez aux Inference Endpoints (dédiés) pour effectuer des appels à plus de 100 000 modèles de Machine Learning
- @huggingface/mcp-client : un client Model Context Protocol (MCP) et une petite bibliothèque d'agents, construits sur la base d'InferenceClient.
- @huggingface/gguf : un parseur GGUF qui fonctionne sur des fichiers hébergés à distance.
- @huggingface/dduf : Paquet similaire pour DDUF (DDUF Diffusers Unified Format)
- @huggingface/lerobot : un analyseur pour les jeux de données robotiques LeRobot, lisant les structures v2.x et v3.0 via des requêtes HTTP à plage.
- @huggingface/usd-web-viewer : un visualiseur OpenUSD pour le web : compose des fichiers
.usd,.usda,.usdcet.usdzen WebAssembly et les rend avec three.js. - @huggingface/tasks : les fichiers de définition et la source de vérité des primitives principales du Hub, telles que les tâches de pipeline, les bibliothèques de modèles, etc.
- @huggingface/jinja : une implémentation JS minimaliste du moteur de templates Jinja, destinée aux templates de chat ML.
- @huggingface/space-header : utiliser l’en-tête
mini_headerdu Space en dehors de Hugging Face - @huggingface/ollama-utils : Divers utilitaires pour maintenir la compatibilité d'Ollama avec les modèles du Hugging Face Hub.
- @huggingface/tiny-agents : une petite bibliothèque indépendante du modèle pour créer des agents IA capables d'utiliser des outils.
Nous utilisons des fonctionnalités modernes pour éviter les polyfills et les dépendances, de sorte que les bibliothèques ne fonctionneront que sur les navigateurs modernes / Node.js >= 18 / Bun / Deno.
Les bibliothèques sont encore très jeunes, merci de nous aider en ouvrant des tickets !
Installation
Depuis NPM
Pour installer via NPM, vous pouvez télécharger les bibliothèques au besoin :
npm install @huggingface/hub npm install @huggingface/inference npm install @huggingface/mcp-client
Importez ensuite les bibliothèques dans votre code :
import { createRepo, commit, deleteRepo, listFiles } from "@huggingface/hub";
import { InferenceClient } from "@huggingface/inference";
import { McpClient } from "@huggingface/mcp-client";
import type { RepoId } from "@huggingface/hub";Depuis un CDN ou un hébergement statique
Vous pouvez exécuter nos packages avec du JS vanilla, sans aucun bundler, en utilisant un CDN ou un hébergement statique. En utilisant des modules ES, c’est-à-dire <script type="module">, vous pouvez importer les bibliothèques dans votre code :
<script type="module">
import { InferenceClient } from 'https://cdn.jsdelivr.net/npm/@huggingface/inference@4.13.32/+esm';
import { createRepo, commit, deleteRepo, listFiles } from "https://cdn.jsdelivr.net/npm/@huggingface/hub@2.17.10/+esm";
</script>Deno
// esm.sh
import { InferenceClient } from "https://esm.sh/@huggingface/inference"
import { createRepo, commit, deleteRepo, listFiles } from "https://esm.sh/@huggingface/hub"
// or npm:
import { InferenceClient } from "npm:@huggingface/inference"
import { createRepo, commit, deleteRepo, listFiles } from "npm:@huggingface/hub"Exemples d'utilisation
Obtenez votre jeton d'accès HF dans vos paramètres de compte.
Exemples de @huggingface/inference
import { InferenceClient } from "@huggingface/inference";
const HF_TOKEN = "hf_...";
const client = new InferenceClient(HF_TOKEN);
// Chat completion API
const out = await client.chatCompletion({
model: "meta-llama/Llama-3.1-8B-Instruct",
messages: [{ role: "user", content: "Hello, nice to meet you!" }],
max_tokens: 512
});
console.log(out.choices[0].message);
// Streaming chat completion API
for await (const chunk of client.chatCompletionStream({
model: "meta-llama/Llama-3.1-8B-Instruct",
messages: [{ role: "user", content: "Hello, nice to meet you!" }],
max_tokens: 512
})) {
console.log(chunk.choices[0].delta.content);
}
/// Using a third-party provider:
await client.chatCompletion({
model: "meta-llama/Llama-3.1-8B-Instruct",
messages: [{ role: "user", content: "Hello, nice to meet you!" }],
max_tokens: 512,
provider: "sambanova", // or together, fal-ai, replicate, cohere …
})
await client.textToImage({
model: "black-forest-labs/FLUX.1-dev",
inputs: "a picture of a green bird",
provider: "fal-ai",
})
// You can also omit "model" to use the recommended model for the task
await client.translation({
inputs: "My name is Wolfgang and I live in Amsterdam",
parameters: {
src_lang: "en",
tgt_lang: "fr",
},
});
// pass multimodal files or URLs as inputs
await client.imageToText({
model: 'nlpconnect/vit-gpt2-image-captioning',
data: await (await fetch('https://picsum.photos/300/300')).blob(),
})
// Using your own dedicated inference endpoint: https://hf.co/docs/inference-endpoints/
const gpt2Client = client.endpoint('https://xyz.eu-west-1.aws.endpoints.huggingface.cloud/gpt2');
const { generated_text } = await gpt2Client.textGeneration({ inputs: 'The answer to the universe is' });
// Chat Completion
const llamaEndpoint = client.endpoint(
"https://huggingface.co/proxy/router.huggingface.co/hf-inference/models/meta-llama/Llama-3.1-8B-Instruct"
);
const out = await llamaEndpoint.chatCompletion({
model: "meta-llama/Llama-3.1-8B-Instruct",
messages: [{ role: "user", content: "Hello, nice to meet you!" }],
max_tokens: 512,
});
console.log(out.choices[0].message);Exemples de @huggingface/hub
import { createRepo, uploadFile, deleteFiles } from "@huggingface/hub";
const HF_TOKEN = "hf_...";
await createRepo({
repo: "my-user/nlp-model", // or { type: "model", name: "my-user/nlp-test" },
accessToken: HF_TOKEN
});
await uploadFile({
repo: "my-user/nlp-model",
accessToken: HF_TOKEN,
// Can work with native File in browsers
file: {
path: "pytorch_model.bin",
content: new Blob(...)
}
});
await deleteFiles({
repo: { type: "space", name: "my-user/my-space" }, // or "spaces/my-user/my-space"
accessToken: HF_TOKEN,
paths: ["README.md", ".gitattributes"]
});Exemple de @huggingface/mcp-client
import { Agent } from '@huggingface/mcp-client';
const HF_TOKEN = "hf_...";
const agent = new Agent({
provider: "auto",
model: "Qwen/Qwen2.5-72B-Instruct",
apiKey: HF_TOKEN,
servers: [
{
// Playwright MCP
command: "npx",
args: ["@playwright/mcp@latest"],
},
],
});
await agent.loadTools();
for await (const chunk of agent.run("What are the top 5 trending models on Hugging Face?")) {
if ("choices" in chunk) {
const delta = chunk.choices[0]?.delta;
if (delta.content) {
console.log(delta.content);
}
}
}Il existe bien sûr d'autres fonctionnalités, consultez le README de chaque bibliothèque !
Mise en forme et tests
sudo corepack enable pnpm install pnpm -r format:check pnpm -r lint:check pnpm -r test
Construction
pnpm -r buildCela générera des fichiers javascript ESM et CJS dans packages/*/dist, par exemple packages/inference/dist/index.mjs.