Saltar a contenido

Integrar la Inteligencia de Claude a tu Chatbot

Integrar Claude en tu chatbot permite alternar entre las capacidades de OpenAI y Claude, ampliando las formas de interacción y personalización. Este tutorial te guiará paso a paso en la configuración de un asistente que utiliza Claude.


Introducción

Claude se configura como una "layer" (capa o acción). Esto significa que para ajustar sus parámetros, debes envolverla en otra acción que retorne la capa de Claude. En términos simples, es una función que retorna otra función.

Requisitos previos

  • Proveer la API Key de Claude:
  • Se puede definir directamente o mediante variables de entorno: ANTHROPIC_API_KEY.
  • Entender los parámetros básicos que controlan el comportamiento de Claude.

Parámetros Personalizables

Claude ofrece varios parámetros para personalizar su comportamiento. A continuación, te explicamos los principales:

1. functions

Un array de funciones de JavaScript que están relacionadas con los schemas de Claude.

Ejemplo de schema y función:

const schemaEjemplo = {
    "name": "funcionEjemplo",
    "description": "Es una función de ejemplo",
    "input_schema": {
        type: "object",
        properties: {},
        required: []
    }
}

const funcionEjemplo = () => {
    return "Soy una función de ejemplo";
};

Nota: El nombre del schema (name) debe coincidir con el nombre de la función, ya que se mapean automáticamente. Este mapeo permite obtener el resultado esperado al disparar el evento call_functions de Claude.

2. history_length

Define la cantidad de mensajes del historial que se usan para evaluar la ventana de contexto necesaria para el modelo.


3. instructions

Un prompt personalizado que ajusta el comportamiento del asistente según tus necesidades.


4. invoke_params

Parámetros adicionales que difieren ligeramente de la API de Assistant, pero son igual de intuitivos.

Dentro de invoke_params encontramos:

  • params: El objeto principal de configuración. Ejemplo:
params: {
    tool_choice: { type: "auto" } // Modo automático para elegir funciones
}
  • tools: Las funciones definidas en los schemas de Claude. Estas herramientas deben estar vinculadas a funciones de JavaScript.
  • additional_instructions: Instrucciones opcionales adicionales para refinar el comportamiento del asistente.

Implementación: Paso a Paso

Aquí tienes un ejemplo completo de cómo configurar Claude en tu chatbot:

import { Assistant, ClaudeAssistant } from "@elimeleth/vct-layers";
/* OTRAS IMPORTACIONES */

.addAction(async (ctx, methods) => {
    await ClaudeAssistant.layer({
        claude_params: {
            functions: [], // Array con las funciones del schema
            history_length: 6, // Mensajes del historial a usar
            instructions: "Eres un asistente amigable y eficiente", // Prompt personalizado
        },
        invoke_params: {
            extra: {
                params: {
                    tool_choice: { type: "auto" }, // Modo automático
                },
                tools: claude_tools, // Schemas definidos
                additional_instructions: "Responde de manera concisa y clara.", // Instrucciones opcionales
            }
        }
    })(ctx, methods);
});

Consideraciones Finales

  • Modularidad: Mantén las funciones y los schemas bien organizados para facilitar la mantenibilidad.
  • Pruebas: Asegúrate de probar cada función antes de incluirla en el esquema final.
  • Documentación: Revisa la documentación oficial de Claude para más detalles sobre su configuración.

Código completo

import { Assistant, ClaudeAssistant } from "@elimeleth/vct-layers";
import { Workflow } from "@elimeleth/vct-flow"

const schema = {
    "name": "fecha",
    "description": "Indica el dia exacto usando esta función",
    "input_schema": {
        type: "object",
        properties: {},
        required: []
    }
}

const fecha = () => {
    return new Date().toLocaleString());
};

export default new Workflow("any")
.addAction({ wait: 5000 }, async (ctx, methods) => {
    await ClaudeAssistant.layer({
        claude_params: {
            functions: [fecha], // Array con las funciones del schema
            history_length: 6, // Mensajes del historial a usar
            instructions: "Eres un asistente amigable y eficiente", // Prompt personalizado
        },
        invoke_params: {
            extra: {
                params: {
                    tool_choice: { type: "auto" }, // Modo automático
                },
                tools: [schema], // Schemas definidos
                additional_instructions: "Responde de manera concisa y clara.", // Instrucciones opcionales
            }
        }
    })(ctx, methods);
});