9router/gitbook/content/es/integration/other-tools.md
2026-05-11 11:50:24 +07:00

9.4 KiB

Integración con otras herramientas

9Router es compatible con cualquier herramienta que soporte el formato de API de OpenAI. Esta guía cubre patrones de integración genéricos para varias herramientas y aplicaciones personalizadas.

Resumen

9Router proporciona un endpoint de API compatible con OpenAI que funciona con:

  • Scripts y aplicaciones personalizadas
  • Clientes de API y herramientas de testing
  • Herramientas CLI y utilidades
  • Integraciones de terceros
  • Frameworks de desarrollo

Patrón de configuración genérico

Cualquier herramienta compatible con OpenAI puede conectarse a 9Router usando estas configuraciones:

9Router local:

Base URL: http://localhost:20128/v1
API Key: your-api-key-from-dashboard
Model: cualquier modelo de 9Router (cc/*, cx/*, glm/*, etc.)

9Router en la nube:

Base URL: https://9router.com/v1
API Key: your-api-key-from-dashboard
Model: cualquier modelo de 9Router (cc/*, cx/*, glm/*, etc.)

Modelos disponibles

Modelos Claude (Anthropic)

  • cc/claude-opus-4-5-20251101
  • cc/claude-sonnet-4-20250514
  • cc/claude-haiku-4-20250514

Modelos DeepSeek

  • cx/deepseek-chat
  • cx/deepseek-reasoner

Modelos GLM (Zhipu AI)

  • glm/glm-4-plus
  • glm/glm-4-flash

Ejemplos de integración

Python con OpenAI SDK

from openai import OpenAI

client = OpenAI(
    api_key="your-api-key-from-dashboard",
    base_url="http://localhost:20128/v1"
)

response = client.chat.completions.create(
    model="cc/claude-sonnet-4-20250514",
    messages=[
        {"role": "user", "content": "Hello, how are you?"}
    ]
)

print(response.choices[0].message.content)

Node.js con OpenAI SDK

import OpenAI from "openai";

const client = new OpenAI({
  apiKey: "your-api-key-from-dashboard",
  baseURL: "http://localhost:20128/v1"
});

const response = await client.chat.completions.create({
  model: "cc/claude-sonnet-4-20250514",
  messages: [
    { role: "user", content: "Hello, how are you?" }
  ]
});

console.log(response.choices[0].message.content);

Comando cURL

curl http://localhost:20128/v1/chat/completions \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer your-api-key-from-dashboard" \
  -d '{
    "model": "cc/claude-sonnet-4-20250514",
    "messages": [
      {"role": "user", "content": "Hello, how are you?"}
    ]
  }'

Cliente HTTP (Postman, Insomnia)

Solicitud:

POST http://localhost:20128/v1/chat/completions

Headers:

Content-Type: application/json
Authorization: Bearer your-api-key-from-dashboard

Body:

{
  "model": "cc/claude-sonnet-4-20250514",
  "messages": [
    {"role": "user", "content": "Hello, how are you?"}
  ],
  "temperature": 0.7,
  "max_tokens": 1000
}

Integración con LangChain

from langchain.chat_models import ChatOpenAI
from langchain.schema import HumanMessage

llm = ChatOpenAI(
    model_name="cc/claude-sonnet-4-20250514",
    openai_api_key="your-api-key-from-dashboard",
    openai_api_base="http://localhost:20128/v1",
    temperature=0.7
)

messages = [HumanMessage(content="Explain quantum computing")]
response = llm(messages)
print(response.content)

Integración con LlamaIndex

from llama_index.llms import OpenAI

llm = OpenAI(
    model="cc/claude-sonnet-4-20250514",
    api_key="your-api-key-from-dashboard",
    api_base="http://localhost:20128/v1"
)

response = llm.complete("What is machine learning?")
print(response.text)

Ejemplos de scripts personalizados

Script de procesamiento por lotes

import openai
import json

openai.api_key = "your-api-key-from-dashboard"
openai.api_base = "http://localhost:20128/v1"

def process_batch(prompts, model="cx/deepseek-chat"):
    results = []
    for prompt in prompts:
        response = openai.ChatCompletion.create(
            model=model,
            messages=[{"role": "user", "content": prompt}]
        )
        results.append({
            "prompt": prompt,
            "response": response.choices[0].message.content
        })
    return results

prompts = [
    "Explain AI in one sentence",
    "What is machine learning?",
    "Define neural networks"
]

results = process_batch(prompts)
print(json.dumps(results, indent=2))

Manejador de respuestas streaming

import OpenAI from "openai";

const client = new OpenAI({
  apiKey: "your-api-key-from-dashboard",
  baseURL: "http://localhost:20128/v1"
});

async function streamResponse(prompt) {
  const stream = await client.chat.completions.create({
    model: "cc/claude-sonnet-4-20250514",
    messages: [{ role: "user", content: prompt }],
    stream: true
  });

  for await (const chunk of stream) {
    const content = chunk.choices[0]?.delta?.content || "";
    process.stdout.write(content);
  }
}

streamResponse("Write a short story about AI");

Comparación multi-modelo

from openai import OpenAI

client = OpenAI(
    api_key="your-api-key-from-dashboard",
    base_url="http://localhost:20128/v1"
)

models = [
    "cc/claude-sonnet-4-20250514",
    "cx/deepseek-chat",
    "glm/glm-4-plus"
]

prompt = "Explain quantum computing in simple terms"

for model in models:
    response = client.chat.completions.create(
        model=model,
        messages=[{"role": "user", "content": prompt}]
    )
    print(f"\n=== {model} ===")
    print(response.choices[0].message.content)

Patrones comunes de integración

Variables de entorno

Almacena credenciales de forma segura:

# .env file
ROUTER_API_KEY=your-api-key-from-dashboard
ROUTER_BASE_URL=http://localhost:20128/v1
ROUTER_MODEL=cc/claude-sonnet-4-20250514
import os
from openai import OpenAI

client = OpenAI(
    api_key=os.getenv("ROUTER_API_KEY"),
    base_url=os.getenv("ROUTER_BASE_URL")
)

Manejo de errores

from openai import OpenAI, OpenAIError

client = OpenAI(
    api_key="your-api-key",
    base_url="http://localhost:20128/v1"
)

try:
    response = client.chat.completions.create(
        model="cc/claude-sonnet-4-20250514",
        messages=[{"role": "user", "content": "Hello"}]
    )
    print(response.choices[0].message.content)
except OpenAIError as e:
    print(f"Error: {e}")

Lógica de reintentos

import time
from openai import OpenAI, RateLimitError

client = OpenAI(
    api_key="your-api-key",
    base_url="http://localhost:20128/v1"
)

def chat_with_retry(prompt, max_retries=3):
    for attempt in range(max_retries):
        try:
            response = client.chat.completions.create(
                model="cc/claude-sonnet-4-20250514",
                messages=[{"role": "user", "content": prompt}]
            )
            return response.choices[0].message.content
        except RateLimitError:
            if attempt < max_retries - 1:
                time.sleep(2 ** attempt)  # Exponential backoff
            else:
                raise

Solución de problemas

Problemas de conexión

Problema: No se puede conectar a 9Router

# Verifica si 9Router está corriendo
curl http://localhost:20128/health

# Respuesta esperada:
{"status": "ok"}

Solución:

  • Verifica que 9Router esté corriendo
  • Verifica que el puerto 20128 no esté bloqueado
  • Asegúrate de tener la URL base correcta (incluir /v1)

Errores de autenticación

Problema: 401 Unauthorized

Error: Invalid API key

Solución:

  • Verifica la API key desde el dashboard
  • Verifica el formato del header de Authorization: Bearer your-api-key
  • Asegúrate de no tener espacios extras o saltos de línea en la API key

Modelo no encontrado

Problema: 404 Model not found

Error: Model 'cc/claude-opus' not found

Solución:

  • Usa el nombre exacto del modelo (sensible a mayúsculas)
  • Verifica los modelos disponibles: curl http://localhost:20128/v1/models
  • Verifica que el modelo esté habilitado en tu plan

Problemas de timeout

Problema: Request timeout

Error: Request timed out after 30s

Solución:

  • Aumenta el timeout en la configuración del cliente
  • Usa modelos más rápidos para tareas sensibles al tiempo
  • Verifica la conexión de red a 9Router

Rate limiting

Problema: 429 Too Many Requests

Error: Rate limit exceeded

Solución:

  • Implementa exponential backoff
  • Reduce la frecuencia de solicitudes
  • Verifica los límites de tasa en el dashboard
  • Considera actualizar tu plan

Mejores prácticas

Seguridad

  • Almacena las API keys en variables de entorno
  • Nunca subas las API keys al control de versiones
  • Usa HTTPS para despliegues en la nube
  • Rota las API keys regularmente

Rendimiento

  • Usa modelos apropiados para la complejidad de la tarea
  • Implementa caché para consultas repetidas
  • Usa streaming para respuestas largas
  • Agrupa solicitudes cuando sea posible

Manejo de errores

  • Siempre implementa bloques try-catch
  • Agrega lógica de reintento con exponential backoff
  • Registra errores para debugging
  • Proporciona mecanismos de fallback

Optimización de costos

  • Elige modelos costo-efectivos para tareas simples
  • Cachea respuestas cuando sea apropiado
  • Monitorea el uso en el dashboard
  • Establece límites de solicitudes en el código

Próximos pasos