@rexdug7005/nvidia-llama4
Version:
Integración de NVIDIA Llama4 con LangChain.js, con soporte para Tools Agent de n8n
129 lines (128 loc) • 4.34 kB
TypeScript
import { BaseChatModel, BaseChatModelCallOptions, BaseChatModelParams } from "@langchain/core/language_models/chat_models";
import { BaseMessage } from "@langchain/core/messages";
import { CallbackManagerForLLMRun } from "@langchain/core/callbacks/manager";
import { ChatGenerationChunk } from "@langchain/core/outputs";
import { Tool } from "@langchain/core/tools";
/**
* Interfaz para las opciones de entrada del modelo de chat
*/
export interface ChatNvidiaLlama4ToolsInput extends BaseChatModelParams {
/** Clave API para NVIDIA Llama4 */
apiKey: string;
/** URL para las llamadas a la API. Por defecto es la URL de NVIDIA para chat */
baseUrl?: string;
/** El modelo a utilizar (por defecto: meta/llama-4-maverick-17b-128e-instruct) */
model?: string;
/** Habilitar o deshabilitar streaming */
streaming?: boolean;
/** Temperatura para la generación de texto (0-1) */
temperature?: number;
/** Número máximo de tokens a generar */
maxTokens?: number;
/** Valor de Top-P para muestreo de tokens */
topP?: number;
/** Valor de Top-K para muestreo de tokens */
topK?: number;
/** Penalización por presencia */
presencePenalty?: number;
/** Penalización por frecuencia */
frequencyPenalty?: number;
/** Tokens de parada */
stop?: string[];
/** Habilitar el soporte de herramientas */
tools?: boolean | Tool[];
/** Opción para elegir herramientas */
toolChoice?: "auto" | "none" | {
type: string;
function: {
name: string;
};
};
}
/**
* Interfaz para las opciones de llamada del modelo de chat
*/
export interface ChatNvidiaLlama4ToolsCallOptions extends BaseChatModelCallOptions {
/** Lista de URLs de imágenes en formato base64 para entrada multimodal */
images?: string[];
/** Lista de herramientas para usar con el modelo */
tools?: Tool[];
/** Opción para elegir una herramienta específica o auto para selección automática */
tool_choice?: "auto" | "none" | {
type: string;
function: {
name: string;
};
};
/** Configuraciones adicionales que se pasarán directamente a la API */
[key: string]: unknown;
}
/**
* Formato de herramienta compatible con OpenAI/NVIDIA
*/
export interface OpenAITool {
type: string;
function: {
name: string;
description?: string;
parameters: Record<string, unknown>;
};
}
/**
* Formato para conversiones de mensajes
*/
export interface NvidiaMessage {
role: "system" | "user" | "assistant";
content: string | Array<string | {
type: string;
[key: string]: unknown;
}>;
}
/**
* Implementación mejorada del modelo de chat NVIDIA Llama4 para n8n
* Optimizada para trabajar con Tools Agent
*/
export declare class ChatNvidiaLlama4Tools extends BaseChatModel<ChatNvidiaLlama4ToolsCallOptions> {
apiKey: string;
baseUrl: string;
modelName: string;
streaming: boolean;
defaultOptions: Record<string, unknown>;
private linkedTools;
toolCallModel: boolean;
static lc_name(): string;
constructor(fields: ChatNvidiaLlama4ToolsInput);
_llmType(): string;
/**
* Método requerido por n8n Tools Agent para vincular herramientas
*/
bindTools(tools: Tool[]): this;
/**
* Convierte una herramienta al formato compatible con OpenAI/NVIDIA
*/
private convertToOpenAITool;
/**
* Prepara los mensajes para la API de NVIDIA
*/
private formatMessagesForNvidia;
/**
* Obtiene los parámetros para la llamada a la API
*/
private getParams;
/**
* Procesa una respuesta de la API a formato LangChain
*/
private convertResponseToMessage;
/**
* Genera una respuesta sincrónica (no streaming)
*/
_generate(messages: BaseMessage[], options?: ChatNvidiaLlama4ToolsCallOptions): Promise<any>;
/**
* Procesa la respuesta de streaming de la API
*/
_streamResponseChunks(messages: BaseMessage[], options?: ChatNvidiaLlama4ToolsCallOptions, runManager?: CallbackManagerForLLMRun): AsyncGenerator<ChatGenerationChunk>;
/**
* Método principal para llamar al modelo
*/
_call(messages: BaseMessage[], options?: ChatNvidiaLlama4ToolsCallOptions): Promise<string>;
}