npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2025 – Pkg Stats / Ryan Hefner

@rexdug7005/nvidia-llama4

v0.5.0

Published

Integración de NVIDIA Llama4 con LangChain.js, con soporte para Tools Agent de n8n

Downloads

21

Readme

@rexdug7005/nvidia-llama4

Esta biblioteca permite integrar modelos de NVIDIA Llama4 con el ecosistema de LangChain.js, facilitando el uso de modelos como Llama4 de Meta en aplicaciones de procesamiento de lenguaje natural.

Versión Actual: 0.4.1

En esta versión se añade soporte completo para herramientas (tools/agent) y mejoras en la detección y extracción de llamadas a herramientas en las respuestas del modelo.

Repositorio

GitHub: https://github.com/Alex66688/nvidia-llama4

Instalación

npm install @rexdug7005/nvidia-llama4 
yarn add @rexdug7005/nvidia-llama4 
pnpm add @rexdug7005/nvidia-llama4 

Requisitos

  • Node.js >= 18
  • Una clave API de NVIDIA

Modelos de Chat

import { ChatNvidiaLlama4, ChatNvidiaLlama4Input, ChatNvidiaLlama4CallOptions } from "@rexdug7005/nvidia-llama4";

// Creación del modelo de chat
const chatModel = new ChatNvidiaLlama4({
  apiKey: "tu-api-key-de-nvidia",
  model: "meta/llama-4-maverick-17b-128e-instruct",
  temperature: 0.7,
  maxTokens: 512
});

// Generación de respuesta simple
const respuesta = await chatModel.invoke("Traduce 'Hola mundo' al inglés");

// Uso con mensajes estructurados
import { HumanMessage, SystemMessage } from "@langchain/core/messages";
const messages = [
  new SystemMessage("Eres un asistente útil especializado en traducción"),
  new HumanMessage("Traduce 'Hola mundo' al inglés")
];
const chatResponse = await chatModel.invoke(messages);

// Streaming de respuestas
const stream = await chatModel.stream("Explica el concepto de inteligencia artificial");
for await (const chunk of stream) {
  console.log(chunk.content); // Muestra fragmentos de la respuesta conforme llegan
}

Uso de Herramientas (Tools)

La biblioteca soporta el uso de herramientas (tools) con los modelos de chat, permitiendo que el modelo utilice funciones externas para realizar tareas específicas.

import { ChatNvidiaLlama4 } from "@rexdug7005/nvidia-llama4";
import { z } from "zod";
import { StructuredTool } from "@langchain/core/tools";

// Definir una herramienta para obtener el clima
class GetWeatherTool extends StructuredTool {
  name = "get_current_weather";
  description = "Obtiene la información meteorológica actual";
  schema = z.object({
    location: z.string().describe("La ciudad para obtener el clima"),
  });

  async _call({ location }: z.infer<typeof this.schema>) {
    // Implementación real llamaría a una API del clima
    return `La temperatura en ${location} es de 22°C`;
  }
}

// Crear una instancia del modelo y la herramienta
const chatModel = new ChatNvidiaLlama4({
  apiKey: "tu-api-key-de-nvidia",
  model: "meta/llama-4-maverick-17b-128e-instruct"
});
const weatherTool = new GetWeatherTool();

// Vincular la herramienta al modelo
const chatModelWithTools = chatModel.bindTools([weatherTool]);

// Usar el modelo con herramientas
const response = await chatModelWithTools.invoke("¿Cuál es el clima en Barcelona?");

// La respuesta puede incluir llamadas a herramientas
console.log(response.content);
if (response.tool_calls && response.tool_calls.length > 0) {
  console.log("Herramientas usadas:", response.tool_calls);
}

También puedes utilizar múltiples herramientas y manejar conversaciones más complejas:

import { HumanMessage, SystemMessage } from "@langchain/core/messages";

// Definir más herramientas, por ejemplo:
class GetPopulationTool extends StructuredTool {
  name = "get_population";
  description = "Obtiene la población de una ciudad";
  schema = z.object({
    location: z.string().describe("La ciudad para obtener la población"),
  });

  async _call({ location }: z.infer<typeof this.schema>) {
    // Simulación
    return `La población de ${location} es de aproximadamente 1.6 millones de habitantes.`;
  }
}

// Vincular múltiples herramientas
const modelWithMultipleTools = chatModel.bindTools([
  new GetWeatherTool(),
  new GetPopulationTool()
]);

// Utilizar con una conversación compleja
const response = await modelWithMultipleTools.invoke([
  new SystemMessage("Utiliza las herramientas disponibles para proporcionar información precisa."),
  new HumanMessage("Compara el clima y la población de Madrid y Barcelona")
]);

Modelos de Lenguaje (LLMs)

import { NvidiaLlama4, NvidiaLlama4Input, NvidiaLlama4CallOptions } from "@rexdug7005/nvidia-llama4";

// Creación del modelo de texto
const llm = new NvidiaLlama4({
  apiKey: "tu-api-key-de-nvidia",
  model: "meta/llama-4-maverick-17b-128e-instruct",
  temperature: 0.5,
  topP: 0.9
});

// Generación de texto
const respuesta = await llm.invoke("Explica qué es la inteligencia artificial");

// Uso con imágenes (para modelos multimodales)
const respuestaMultimodal = await llm.invoke("¿Qué muestra esta imagen?", {
  images: ["data:image/jpeg;base64,/9j/4AAQSkZJRg..."]  // Imagen en base64
});

// Streaming de respuestas
for await (const chunk of await llm.stream("Escribe un poema sobre la tecnología")) {
  process.stdout.write(chunk); // Imprime cada fragmento según llega
}

Embeddings

import { NvidiaEmbeddings, NvidiaEmbeddingsParams } from "@rexdug7005/nvidia-llama4";

// Creación del modelo de embeddings
const embeddings = new NvidiaEmbeddings({
  apiKey: "tu-api-key-de-nvidia",
  model: "embd/llama-4-embd"
});

// Generar embeddings para un texto individual
const vectorQuery = await embeddings.embedQuery("Este es un texto de ejemplo");

// Generar embeddings para múltiples textos
const documentos = [
  "La inteligencia artificial es una rama de la informática.",
  "El aprendizaje automático es un subcampo de la IA.",
  "Las redes neuronales son modelos inspirados en el cerebro humano."
];
const vectoresDocumentos = await embeddings.embedDocuments(documentos);

Integración con LangChain

import { ChatNvidiaLlama4 } from '@rexdug7005/nvidia-llama4';
import { PromptTemplate } from '@langchain/core/prompts';
import { StringOutputParser } from '@langchain/core/output_parsers';
import { RunnableSequence } from '@langchain/core/runnables';

// Crear un modelo
const model = new ChatNvidiaLlama4({ 
  apiKey: "tu-api-key-de-nvidia",
  model: "meta/llama-4-maverick-17b-128e-instruct" 
});

// Crear una plantilla de prompt
const promptTemplate = PromptTemplate.fromTemplate(
  "Traduce el siguiente texto del español al {idioma}: {texto}"
);

// Crear una cadena (chain) de procesamiento
const chain = RunnableSequence.from([
  promptTemplate,
  model,
  new StringOutputParser()
]);

// Ejecutar la cadena
const resultado = await chain.invoke({
  idioma: "francés",
  texto: "Hola, ¿cómo estás?"
});
console.log(resultado);

Documentación de API

Para más detalles sobre las clases, interfaces y métodos disponibles, consulta la documentación completa.

Contribuir

Las contribuciones son bienvenidas. Para contribuir:

  1. Haz un fork del repositorio en https://github.com/Alex66688/nvidia-llama4
  2. Crea una rama con tu nueva característica (git checkout -b feature/amazing-feature)
  3. Haz commit de tus cambios (git commit -m 'Añadir nueva característica')
  4. Haz push a la rama (git push origin feature/amazing-feature)
  5. Abre un Pull Request