Close Menu
techwavedispatch.com

    Subscribe to Updates

    Get the latest creative news from FooBar about art, design and business.

    What's Hot

    Screenless GPS: Slate Auto says, “Remember the road atlas”

    November 13, 2026

    ElevenLabs’ new app combines meeting note-taking and dictation for teams

    November 13, 2026

    Open ML Considerations in the EU AI Act

    November 13, 2026
    Facebook X (Twitter) Instagram
    Trending
    • Screenless GPS: Slate Auto says, “Remember the road atlas”
    • ElevenLabs’ new app combines meeting note-taking and dictation for teams
    • Open ML Considerations in the EU AI Act
    • Meta discussed attacking Jonathan Haidt β€” now even his haters are annoyed
    • The Motorola Signature 27 Is A Beast
    • FOE-Dreamer: Deployment-Efficient Learning of Cyber Defense Policies in Operational Networks
    • Scientists warn 1.5Β°C climate change threshold could arrive by 2029
    • Give tools to your LLMs using JavaScript
    Facebook X (Twitter) Instagram
    techwavedispatch.com
    Subscribe
    Friday, November 13
    • Home
    • AI Tools & Software
    • Machine Learning
    • Generative AI
    • Robotics & Automation
    • Future Tech & Hardware
    • AI in Business
    • Ethics & Regulations
    • More
      • Gadgets & Smart Devices
      • Cybersecurity & AI
      • Tech Breakthroughs
    techwavedispatch.com
    Home»AI Tools & Software»Give tools to your LLMs using JavaScript
    AI Tools & Software

    Give tools to your LLMs using JavaScript

    adminBy adminNovember 13, 2026No Comments5 Mins Read
    Facebook Twitter Pinterest LinkedIn Tumblr Email
    Give tools to your LLMs using JavaScript
    Share
    Facebook Twitter LinkedIn Pinterest Email

    We have recently been working on Agents.js at huggingface.js. It’s a new library for giving tool access to LLMs from JavaScript in either the browser or the server. It ships with a few multi-modal tools out of the box and can easily be extended with your own tools and language models.



    Installation

    Getting started is very easy, you can grab the library from npm with the following:

    npm install @huggingface/agents
    



    Usage

    The library exposes the HfAgent object which is the entry point to the library. You can instantiate it like this:

    import { HfAgent } from "@huggingface/agents";
    
    const HF_ACCESS_TOKEN = "hf_..."; 
    
    const agent = new HfAgent(HF_ACCESS_TOKEN);
    

    Afterward, using the agent is easy. You give it a plain-text command and it will return some messages.

    const code = await agent.generateCode(
      "Draw a picture of a rubber duck with a top hat, then caption this picture."
    );
    

    which in this case generated the following code

    
    async function generate() {
      const output = await textToImage("rubber duck with a top hat");
      message("We generate the duck picture", output);
      const caption = await imageToText(output);
      message("Now we caption the image", caption);
      return output;
    }
    

    Then the code can be evaluated as such:

    const messages = await agent.evaluateCode(code);
    

    The messages returned by the agent are objects with the following shape:

    export interface Update {
        message: string;
        data: undefined | string | Blob;
    

    where message is an info text and data can contain either a string or a blob. The blob can be used to display images or audio.

    If you trust your environment (see warning), you can also run the code directly from the prompt with run :

    const messages = await agent.run(
      "Draw a picture of a rubber duck with a top hat, then caption this picture."
    );
    



    Usage warning

    Currently using this library will mean evaluating arbitrary code in the browser (or in Node). This is a security risk and should not be done in an untrusted environment. We recommend that you use generateCode and evaluateCode instead of run in order to check what code you are running.



    Custom LLMs πŸ’¬

    By default HfAgent will use OpenAssistant/oasst-sft-4-pythia-12b-epoch-3.5 hosted Inference API as the LLM. This can be customized however.

    When instancing your HfAgent you can pass a custom LLM. A LLM in this context is any async function that takes a string input and returns a promise for a string. For example if you have an OpenAI API key you could make use of it like this:

    import { Configuration, OpenAIApi } from "openai";
    
    const HF_ACCESS_TOKEN = "hf_...";
    const api = new OpenAIApi(new Configuration({ apiKey: "sk-..." }));
    
    const llmOpenAI = async (prompt: string): Promise<string> => {
      return (
        (
          await api.createCompletion({
            model: "text-davinci-003",
            prompt: prompt,
            max_tokens: 1000,
          })
        ).data.choices[0].text ?? ""
      );
    };
    
    const agent = new HfAgent(HF_ACCESS_TOKEN, llmOpenAI);
    



    Custom Tools πŸ› οΈ

    Agents.js was designed to be easily expanded with custom tools & examples. For example if you wanted to add a tool that would translate text from English to German you could do it like this:

    import type { Tool } from "@huggingface/agents/src/types";
    
    const englishToGermanTool: Tool = {
      name: "englishToGerman",
      description:
        "Takes an input string in english and returns a german translation. ",
      examples: [
        {
          prompt: "translate the string 'hello world' to german",
          code: `const output = englishToGerman("hello world")`,
          tools: ["englishToGerman"],
        },
        {
          prompt:
            "translate the string 'The quick brown fox jumps over the lazy dog` into german",
          code: `const output = englishToGerman("The quick brown fox jumps over the lazy dog")`,
          tools: ["englishToGerman"],
        },
      ],
      call: async (input, inference) => {
        const data = await input;
        if (typeof data !== "string") {
          throw new Error("Input must be a string");
        }
        const result = await inference.translation({
          model: "t5-base",
          inputs: input,
        });
        return result.translation_text;
      },
    };
    

    Now this tool can be added to the list of tools when initiating your agent.

    import { HfAgent, LLMFromHub, defaultTools } from "@huggingface/agents";
    
    const HF_ACCESS_TOKEN = "hf_...";
    
    const agent = new HfAgent(HF_ACCESS_TOKEN, LLMFromHub("hf_..."), [
      englishToGermanTool,
      ...defaultTools,
    ]);
    



    Passing input files to the agent πŸ–ΌοΈ

    The agent can also take input files to pass along to the tools. You can pass an optional FileList to generateCode and evaluateCode as such:

    If you have the following html:

    <input id="fileItem" type="file" />
    

    Then you can do:

    const agent = new HfAgent(HF_ACCESS_TOKEN);
    const files = document.getElementById("fileItem").files; 
    const code = agent.generateCode(
      "Caption the image and then read the text out loud.",
      files
    );
    

    Which generated the following code when passing an image:

    
    async function generate(image) {
      const caption = await imageToText(image);
      message("First we caption the image", caption);
      const output = await textToSpeech(caption);
      message("Then we read the caption out loud", output);
      return output;
    }
    



    Demo πŸŽ‰

    We’ve been working on a demo for Agents.js that you can try out here. It’s powered by the same Open Assistant 30B model that we use on HuggingChat and uses tools called from the hub. πŸš€

    Give JavaScript LLMs tools
    Share. Facebook Twitter Pinterest LinkedIn Tumblr Email
    admin
    • Website

    Related Posts

    Open ML Considerations in the EU AI Act

    November 13, 2026

    Stable Diffusion XL on Mac with Advanced Core ML Quantization

    November 13, 2026

    A stronger foundation for the local AI ecosystem

    November 13, 2026
    Leave A Reply Cancel Reply

    Top Posts

    NVIDIA Is Investigating Reports That CEO Jensen Huang Was The Target Of Chinese Spy Efforts

    November 8, 202619 Views

    ADIndex: Layer-Adaptive Sparse Attention Indexing via Group-Level Distillation

    November 11, 20265 Views

    Anthropic releases new Mythos and Fable models amid RSI concerns

    November 9, 20265 Views

    Anthropic says AI is eroding Nvidia’s CUDA lead, cutting an AMD chip switch from months to three days

    November 11, 20264 Views
    Don't Miss
    Tech Breakthroughs

    Screenless GPS: Slate Auto says, “Remember the road atlas”

    By adminNovember 13, 20260

    Whether it’s nostalgia or a sense that technology has gotten a bit too pervasive, there’s…

    ElevenLabs’ new app combines meeting note-taking and dictation for teams

    November 13, 2026

    Open ML Considerations in the EU AI Act

    November 13, 2026

    Meta discussed attacking Jonathan Haidt β€” now even his haters are annoyed

    November 13, 2026
    About Us

    Welcome to TechWave Dispatch

    At TechWave Dispatch, we bring you the latest news, insights, and developments from the ever-evolving world of technology. Our mission is to keep readers informed about the innovations shaping our digital future.

    From artificial intelligence and machine learning to cybersecurity, robotics, smart devices, and groundbreaking technologies, we cover the topics that matter in today's fast-moving tech landscape.

    Our Picks

    Screenless GPS: Slate Auto says, “Remember the road atlas”

    November 13, 2026

    ElevenLabs’ new app combines meeting note-taking and dictation for teams

    November 13, 2026

    Open ML Considerations in the EU AI Act

    November 13, 2026
    Most Popular

    Who Controls Scientific Discovery? – O’Reilly

    November 6, 20260 Views

    After blocking Muse, Amazon now lets users text Alexa to help them shop

    November 6, 20260 Views

    A controlled world for robot learning and evaluation

    November 6, 20260 Views
    Facebook X (Twitter) Instagram Pinterest
    • Terms and Conditions
    • Privacy Policy
    • Contact Us
    • About Us
    Β© 2026 TechWave Dispatch. All Rights Reserved.

    Type above and press Enter to search. Press Esc to cancel.