UNPKG

@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
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>; }