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:
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);
});