- Notifications
You must be signed in to change notification settings - Fork2
Utilities to use the Hugging Face Hub API
License
Nutlope/huggingface.js
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
// Programatically interact with the HubawaitcreateRepo({repo:{type:"model",name:"my-user/nlp-model"},accessToken:HF_TOKEN});awaituploadFile({repo:"my-user/nlp-model",accessToken:HF_TOKEN,// Can work with native File in browsersfile:{path:"pytorch_model.bin",content:newBlob(...)}});// Use HF Inference API, or external Inference Providers!awaitinference.chatCompletion({model:"meta-llama/Llama-3.1-8B-Instruct",messages:[{role:"user",content:"Hello, nice to meet you!",},],max_tokens:512,temperature:0.5,provider:"sambanova",// or together, fal-ai, replicate, …});awaitinference.textToImage({model:"black-forest-labs/FLUX.1-dev",inputs:"a picture of a green bird",});// and much more…
This is a collection of JS libraries to interact with the Hugging Face API, with TS types included.
- @huggingface/inference: Use Inference API (serverless), Inference Endpoints (dedicated) and third-party Inference providers to make calls to 100,000+ Machine Learning models
- @huggingface/hub: Interact with huggingface.co to create or delete repos and commit / download files
- @huggingface/agents: Interact with HF models through a natural language interface
- @huggingface/gguf: A GGUF parser that works on remotely hosted files.
- @huggingface/dduf: Similar package for DDUF (DDUF Diffusers Unified Format)
- @huggingface/tasks: The definition files and source-of-truth for the Hub's main primitives like pipeline tasks, model libraries, etc.
- @huggingface/jinja: A minimalistic JS implementation of the Jinja templating engine, to be used for ML chat templates.
- @huggingface/space-header: Use the Space
mini_header
outside Hugging Face
We use modern features to avoid polyfills and dependencies, so the libraries will only work on modern browsers / Node.js >= 18 / Bun / Deno.
The libraries are still very young, please help us by opening issues!
To install via NPM, you can download the libraries as needed:
npm install @huggingface/inferencenpm install @huggingface/hubnpm install @huggingface/agents
Then import the libraries in your code:
import{HfInference}from"@huggingface/inference";import{HfAgent}from"@huggingface/agents";import{createRepo,commit,deleteRepo,listFiles}from"@huggingface/hub";importtype{RepoId}from"@huggingface/hub";
You can run our packages with vanilla JS, without any bundler, by using a CDN or static hosting. UsingES modules, i.e.<script type="module">
, you can import the libraries in your code:
<scripttype="module">import{HfInference}from'https://cdn.jsdelivr.net/npm/@huggingface/inference@3.0.0/+esm';import{createRepo,commit,deleteRepo,listFiles}from"https://cdn.jsdelivr.net/npm/@huggingface/hub@1.0.0/+esm";</script>
// esm.shimport{HfInference}from"https://esm.sh/@huggingface/inference"import{HfAgent}from"https://esm.sh/@huggingface/agents";import{createRepo,commit,deleteRepo,listFiles}from"https://esm.sh/@huggingface/hub"// or npm:import{HfInference}from"npm:@huggingface/inference"import{HfAgent}from"npm:@huggingface/agents";import{createRepo,commit,deleteRepo,listFiles}from"npm:@huggingface/hub"
Get your HF access token in youraccount settings.
import{HfInference}from"@huggingface/inference";constHF_TOKEN="hf_...";constinference=newHfInference(HF_TOKEN);// Chat completion APIconstout=awaitinference.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 APIforawait(constchunkofinference.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:awaitinference.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, …})awaitinference.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 taskawaitinference.translation({inputs:"My name is Wolfgang and I live in Amsterdam",parameters:{src_lang:"en",tgt_lang:"fr",},});// pass multimodal files or URLs as inputsawaitinference.imageToText({model:'nlpconnect/vit-gpt2-image-captioning',data:await(awaitfetch('https://picsum.photos/300/300')).blob(),})// Using your own dedicated inference endpoint: https://hf.co/docs/inference-endpoints/constgpt2=inference.endpoint('https://xyz.eu-west-1.aws.endpoints.huggingface.cloud/gpt2');const{ generated_text}=awaitgpt2.textGeneration({inputs:'The answer to the universe is'});// Chat CompletionconstllamaEndpoint=inference.endpoint("https://api-inference.huggingface.co/models/meta-llama/Llama-3.1-8B-Instruct");constout=awaitllamaEndpoint.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);
import{createRepo,uploadFile,deleteFiles}from"@huggingface/hub";constHF_TOKEN="hf_...";awaitcreateRepo({repo:"my-user/nlp-model",// or { type: "model", name: "my-user/nlp-test" },accessToken:HF_TOKEN});awaituploadFile({repo:"my-user/nlp-model",accessToken:HF_TOKEN,// Can work with native File in browsersfile:{path:"pytorch_model.bin",content:newBlob(...)}});awaitdeleteFiles({repo:{type:"space",name:"my-user/my-space"},// or "spaces/my-user/my-space"accessToken:HF_TOKEN,paths:["README.md",".gitattributes"]});
import{HfAgent,LLMFromHub,defaultTools}from'@huggingface/agents';constHF_TOKEN="hf_...";constagent=newHfAgent(HF_TOKEN,LLMFromHub(HF_TOKEN),[...defaultTools]);// you can generate the code, inspect it and then run itconstcode=awaitagent.generateCode("Draw a picture of a cat wearing a top hat. Then caption the picture and read it out loud.");console.log(code);constmessages=awaitagent.evaluateCode(code)console.log(messages);// contains the data// or you can run the code directly, however you can't check that the code is safe to execute this way, use at your own risk.constmessages=awaitagent.run("Draw a picture of a cat wearing a top hat. Then caption the picture and read it out loud.")console.log(messages);
There are more features of course, check each library's README!
sudo corepack enablepnpm installpnpm -r format:checkpnpm -r lint:checkpnpm -r test
pnpm -r build
This will generate ESM and CJS javascript files inpackages/*/dist
, egpackages/inference/dist/index.mjs
.
About
Utilities to use the Hugging Face Hub API
Resources
License
Uh oh!
There was an error while loading.Please reload this page.
Stars
Watchers
Forks
Packages0
Languages
- TypeScript71.7%
- Svelte16.2%
- JavaScript11.4%
- CSS0.4%
- Python0.2%
- Shell0.1%