Huggingface.js documentation
Perpustakaan JS 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…Perpustakaan JS Hugging Face
Ini adalah kumpulan pustaka JS untuk berinteraksi dengan API Hugging Face, dengan tipe TS disertakan.
- @huggingface/hub: Berinteraksi dengan huggingface.co untuk membuat atau menghapus repositori dan commit / mengunduh file
- @huggingface/inference: Gunakan semua Inference Providers (serverless) yang didukung atau beralih ke Inference Endpoints (dedicated) untuk melakukan panggilan ke 100.000+ model Machine Learning
- @huggingface/mcp-client: Klien Model Context Protocol (MCP), dan pustaka Agent kecil, dibangun di atas InferenceClient.
- @huggingface/gguf: Parser GGUF yang berfungsi pada file yang di-hosting secara jarak jauh.
- @huggingface/dduf: Paket serupa untuk DDUF (DDUF Diffusers Unified Format)
- @huggingface/lerobot: Parser untuk dataset robotika LeRobot, membaca tata letak v2.x dan v3.0 melalui permintaan HTTP berjangkauan.
- @huggingface/usd-web-viewer: Penampil OpenUSD untuk web: menyusun file
.usd,.usda,.usdc, dan.usdzdalam WebAssembly serta merendernya dengan three.js. - @huggingface/tasks: File definisi dan sumber kebenaran untuk primitif utama Hub seperti tugas pipeline, pustaka model, dan sebagainya.
- @huggingface/jinja: Implementasi JS minimalis dari mesin templating Jinja, untuk digunakan pada template chat ML.
- @huggingface/space-header: Gunakan Space
mini_headerdi luar Hugging Face - @huggingface/ollama-utils: Berbagai utilitas untuk menjaga kompatibilitas Ollama dengan model di Hugging Face Hub.
- @huggingface/tiny-agents: Perpustakaan kecil yang tidak bergantung pada model untuk membangun agen AI yang dapat menggunakan alat.
Kami menggunakan fitur modern untuk menghindari polyfill dan dependensi, sehingga pustaka hanya akan berfungsi pada browser modern / Node.js >= 18 / Bun / Deno.
Perpustakaan ini masih sangat muda, tolong bantu kami dengan membuka isu!
Instalasi
Dari NPM
Untuk menginstal melalui NPM, Anda dapat mengunduh pustaka sesuai kebutuhan:
npm install @huggingface/hub npm install @huggingface/inference npm install @huggingface/mcp-client
Lalu impor pustaka di kode Anda:
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";Dari CDN atau hosting statis
Anda dapat menjalankan paket kami dengan JS polos, tanpa bundler, dengan menggunakan CDN atau hosting statis. Dengan menggunakan modul ES, yaitu <script type="module">, Anda dapat mengimpor pustaka di kode Anda:
<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"Contoh penggunaan
Dapatkan token akses HF Anda di pengaturan akun.
contoh @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);contoh @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"]
});contoh @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);
}
}
}Tentu saja ada lebih banyak fitur, periksa README masing-masing pustaka!
Format & pengujian
sudo corepack enable pnpm install pnpm -r format:check pnpm -r lint:check pnpm -r test
Membangun
pnpm -r buildIni akan menghasilkan file javascript ESM dan CJS di packages/*/dist, misalnya packages/inference/dist/index.mjs.