ES ▾
Obtener clave de API

InicioGuía

Clave de API de AnythingLLM: Conecta un endpoint personalizado de OpenAI de OpenAI

Para usar una clave de API de AnythingLLM con un endpoint personalizado, selecciona el proveedor Generic OpenAI e ingresa una base URL, una clave y un ID de modelo. Los pasos y las pruebas están abajo.

¿A qué clave de API te refieres?

Las personas que buscan anything llm api key generalmente se refieren a una de dos cosas, y las dos se confunden fácilmente. La primera es la clave que AnythingLLM envía a un proveedor de modelos para que pueda generar respuestas. La segunda es una clave de API de desarrollador que crea la propia AnythingLLM, para que otros programas puedan llamar a la API de AnythingLLM. Son claves diferentes con funciones diferentes.

Este artículo cubre el primero: proporcionar a AnythingLLM una clave y un endpoint para una API de chat compatible con OpenAI. Tomarás la clave de la página de clave de API, la pegarás en AnythingLLM junto con la base URL https://api.llmapisource.com/v1, y usarás el ID de modelo uncensored. Si en cambio necesitas llamar a AnythingLLM desde tu propio código, genera esa clave dentro de la configuración de AnythingLLM; no tiene nada que ver con esta clave de proveedor.

Antes de comenzar: prueba la clave fuera de AnythingLLM

La mitad de las preguntas de soporte sobre endpoints personalizados resultan ser una clave incorrecta o un error tipográfico en la URL. Una prueba de treinta segundos con curl separa "el endpoint está mal" de "la aplicación está configurada mal". Lista los modelos primero:

curl https://api.llmapisource.com/v1/models \
  -H "Authorization: Bearer YOUR_KEY" | grep uncensored

Deberías ver una línea que incluye uncensored. Luego envía una petición de chat:

curl https://api.llmapisource.com/v1/chat/completions \
  -H "Authorization: Bearer YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "uncensored",
    "messages": [{"role": "user", "content": "Reply with the word ready."}],
    "max_tokens": 20
  }'

Si ambas llamadas funcionan, la clave y la URL son correctas y cualquier cosa que falle después es una configuración dentro de la aplicación. Si aún no tienes una clave, regístrate con Google o con correo electrónico y contraseña. Los nuevos usuarios pueden reclamar $0.50 de crédito de prueba con un clic en la página de clave, que no requiere tarjeta y es válido por 7 días. Eso es suficiente para completar toda esta configuración y probarla.

Configuración en AnythingLLM

AnythingLLM admite varios proveedores de LLM, y una de ellas es una opción genérica compatible con OpenAI. La redacción de los menús cambia entre versiones, así que trata los nombres de abajo como una guía en lugar de un script exacto.

  1. Abre la configuración de AnythingLLM y busca la preferencia LLM (a veces etiquetada como proveedor LLM).
  2. Elige Generic OpenAI de la lista de proveedores.
  3. Configura la Base URL en https://api.llmapisource.com/v1. Incluye el /v1 y omite el final /chat/completions; la aplicación añade la ruta ella misma.
  4. Pega tu clave en el campo API Key. La aplicación la envía como Authorization: Bearer, que es lo que esta API espera.
  5. Configura el Chat Model Name en uncensored.
  6. Configura el Token context window en 100000. La ventana del modelo es de 100.000 tokens, prompt más completion, y un valor bajo aquí hace que AnythingLLM recorte tu historial antes de lo necesario.
  7. Deja max_tokens vacío o establece un límite con el que te sientas cómodo. Es opcional en el lado de la API.
  8. Guarda, abre un espacio de trabajo y envía un mensaje.

Si el espacio de trabajo tiene sus propias configuraciones de chat, verifica que esté usando el proveedor predeterminado del sistema en lugar de una anulación anterior. Un espacio de trabajo fijado a un proveedor anterior es una razón común por la que un cambio parece no hacer nada.

Los embeddings y los documentos necesitan una pieza separada

AnythingLLM hace dos cosas. Chatea con un modelo e indexa tus documentos para que el modelo pueda responder basándose en ellos. La segunda tarea usa un modelo de embedding, y esta API no ofrece embeddings. Expone POST /v1/chat/completions y GET /v1/models, con texto de entrada y texto de salida.

Eso no te bloquea. AnythingLLM te permite elegir el incrustador por separado del modelo de chat, y puede usar un incrustador local integrado u otro proveedor que configures. Configura el incrustador en algo que no sea este endpoint, y usa este endpoint solo para el modelo de chat. Lo mismo aplica para funciones de imagen o audio: el modelo es solo de texto, sin generación de imagen, audio o video ni fine-tuning.

Cuando chateas con documentos, los fragmentos recuperados se pegan en el prompt, por lo que los tokens de entrada crecen. A $0.15 por 1M de tokens de entrada, un prompt de 6.000 tokens con 500 tokens de salida cuesta 6.000 x $0.15 / 1.000.000 = $0.0009 para entrada más 500 x $0.50 / 1.000.000 = $0.00025 para salida, o $0.00115 por pregunta. Los workspaces con muchos documentos cuestan más que el chat simple, pero aún una fracción de centavo por pregunta.

Verificando streaming, herramientas y modo JSON

AnythingLLM transmite respuestas, y la API admite Server-Sent Events con stream: true, terminando con un fragmento de uso. Si tus respuestas aparecen todas a la vez en lugar de token por token, el problema suele ser un proxy delante de la aplicación que almacena en búfer las respuestas, no el endpoint. Puedes verificar la transmisión desde un script con el SDK de Python de OpenAI:

from openai import OpenAI

client = OpenAI(
    base_url="https://api.llmapisource.com/v1",
    api_key="YOUR_KEY",
)

stream = client.chat.completions.create(
    model="uncensored",
    messages=[{"role": "user", "content": "List three uses of a local knowledge base."}],
    stream=True,
    stream_options={"include_usage": True},
)

for chunk in stream:
    if chunk.choices and chunk.choices[0].delta.content:
        print(chunk.choices[0].delta.content, end="", flush=True)
    if chunk.usage:
        print("\ntokens:", chunk.usage.prompt_tokens, chunk.usage.completion_tokens)

Las llamadas a herramientas y el modo JSON funcionan a través del mismo endpoint de chat, lo cual es importante si construyes agentes o flujos alrededor de la aplicación. El modo JSON es un solo campo:

curl https://api.llmapisource.com/v1/chat/completions \
  -H "Authorization: Bearer YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "uncensored",
    "response_format": {"type": "json_object"},
    "messages": [
      {"role": "system", "content": "Return a JSON object with keys title and summary."},
      {"role": "user", "content": "Summarize: a notes app that works offline."}
    ]
  }'

Las herramientas usan los campos habituales tools y tool_choice, con los resultados devueltos como mensajes role: "tool". Si AnythingLLM expone una función de agente concreta depende de la versión de la aplicación, así que prueba la llamada en un script primero y luego la función en la app. La documentación muestra un ejemplo completo de llamadas a herramientas.

Solución de errores comunes

SíntomaCausa probableSolución
Error 401 o error de autenticaciónClave pegada con un espacio, o una clave antiguaCopia la clave nuevamente desde la página de clave y pégala sin espacios
404 o "no encontrado"Falta la base URL /v1, o tiene /chat/completions al finalUsa exactamente https://api.llmapisource.com/v1
Modelo no encontradoNombre del modelo escrito de forma diferenteUsa uncensored, en minúsculas, nada añadido
429 con rate_limitedMás de 300 peticiones por minuto (60 en una clave de prueba)Ralentiza o agrupa menos agresivamente
429 con concurrencyMás de 8 peticiones a la vez (2 en una clave de prueba)Reduce los espacios de trabajo paralelos o agentes; una transmisión mantiene su recurso hasta que termina
429 con un encabezado Retry-After: 5Sobrecarga temporalEspera 5 segundos y reintenta
Respuestas cortadas tempranomáximo de tokens bajo en la aplicaciónAuméntalo o bórralo

El encabezado X-Request-Id en cada respuesta ayuda si contactas a soporte sobre una llamada específica. El saldo en X-Balance-USD también te dice rápidamente si un fallo es simplemente una cuenta vacía.

Obteniendo mejores respuestas de un espacio de trabajo

Una vez que la conexión funciona, algunos hábitos del espacio de trabajo marcan una diferencia visible. Escribe un prompt del sistema para el espacio de trabajo que indique el rol, el tono y qué hacer cuando los documentos no contienen la respuesta. Sin esa última instrucción, un modelo a menudo adivinará, y una adivinanza que suena segura es peor que un simple "No encontré eso en los documentos".

Temperature es la otra palanca. Para responder preguntas sobre tus propios archivos, un valor bajo como 0.2 a 0.4 mantiene las respuestas cerca del texto recuperado. Para lluvia de ideas o redacción, súbelo hacia 0.8. La API pasa temperature, top_p, stop, seed y las penalizaciones a través, así que lo que la aplicación envía llega al modelo sin cambios.

Mantén un ojo en cuántos fragmentos adjunta el espacio de trabajo a cada pregunta. Cada fragmento extra son más tokens de entrada, y con una ventana de 100.000 tokens tienes espacio, pero también pagas por cada uno en cada turno. Comienza con un número pequeño de fragmentos y súbelo solo cuando las respuestas no incluyan material relevante.

Notas de privacidad y costos

Los prompts enviados a través de la API no se utilizan para entrenamiento. Tus documentos aún viajan al endpoint dentro de los prompts cuando AnythingLLM recupera pasajes, así que decide qué espacios de trabajo te sientes cómodo enviando. Para material que nunca debe salir de tu máquina, usa un modelo local en su lugar.

La facturación es de pago por uso desde el crédito prepago: $0,15 por cada 1M de tokens de entrada y $0,50 por cada 1M de tokens de salida, recargas desde $20 hasta $500, con bonificaciones del 5% desde $50, 10% desde $100 y 15% desde $200. El crédito no caduca, y las peticiones fallidas o rechazadas no se cobran. La página de precios lista los métodos de pago.

Preguntas y respuestas

¿Qué opción de proveedor elijo en AnythingLLM?

Elige Generic OpenAI. Ingresa https://api.llmapisource.com/v1 como la base URL, tu clave como la clave de API, y uncensored como el nombre del modelo de chat.

¿Qué ventana de contexto de tokens debo ingresar?

Usa 100000, que coincide con la ventana de 100,000 tokens del modelo para prompt más completion.

¿Puedo usar este endpoint para embeddings en AnythingLLM?

No. La API sirve solo chat completions y una lista de modelos. Elige un embedder diferente en AnythingLLM y mantén este endpoint para el modelo de chat.

¿La clave de API de desarrollador de AnythingLLM es lo mismo?

No. Esa clave se crea dentro de AnythingLLM para que otros programas puedan llamar a la app. La clave de este servicio es lo que AnythingLLM envía al endpoint de chat.

Escena isométrica de un bloque de aplicación conectado a un servidor por un cable brillante y una clave, mostrando una conexión de clave de API