Huggingface.js documentation

Perpustakaan JS Hugging Face

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started


huggingface javascript library logo

// 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 .usdz dalam 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_header di 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 build

Ini akan menghasilkan file javascript ESM dan CJS di packages/*/dist, misalnya packages/inference/dist/index.mjs.

Update on GitHub