Apexnova Consulting

Messages (compatibilidad Anthropic)

POST/anthropic/v1/messages

Endpoint del protocolo Anthropic Messages para Claude Code y el SDK de Anthropic. La petición/respuesta siguen la forma oficial de la API de Anthropic; se factura por tokens de entrada y salida.

Cuerpo de la solicitud

CampoTipoRequeridoDescripción
modelstringModelo a usar, como Public Model Name de la plataforma (p. ej. glm-4.6).
messagesarrayMensajes de la conversación; cada uno con role (user / assistant) y content.
systemstring or arrayNoPrompt del sistema, como cadena o array de bloques.
max_tokensintegerMáximo de tokens a generar (obligatorio).
streambooleanNoCuando es true, devuelve un flujo server-sent events. Por defecto: false.
temperaturenumberNoTemperatura de muestreo, 0–1.
top_pnumberNoMasa de probabilidad para nucleus sampling.
toolsarrayNoArray de definiciones de herramientas para que el modelo las invoque.
tool_choiceobject or stringNoEstrategia de selección de herramienta: auto / any / tool, o una herramienta concreta.
stop_sequencesarrayNoArray de secuencias de parada personalizadas; la generación se detiene al coincidir cualquiera.

Ejemplo de solicitud

bash
curl https://api.apexnova-consulting.com/anthropic/v1/messages \
  -H "x-api-key: sk-xxxxxxxx" \
  -H "anthropic-version: 2023-06-01" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "glm-4.6",
    "max_tokens": 1024,
    "messages": [{"role": "user", "content": "Hello"}]
  }'
python
from anthropic import Anthropic

client = Anthropic(
    base_url="https://api.apexnova-consulting.com/anthropic",
    api_key="sk-xxxxxxxx",
)

resp = client.messages.create(
    model="glm-4.6",
    max_tokens=1024,
    messages=[{"role": "user", "content": "Hello"}],
)
print(resp.content[0].text)

Ejemplo de respuesta

json
{
  "id": "msg_abc123",
  "type": "message",
  "role": "assistant",
  "model": "glm-4.6",
  "content": [
    { "type": "text", "text": "Hello! How can I help you today?" }
  ],
  "stop_reason": "end_turn",
  "usage": {
    "input_tokens": 8,
    "output_tokens": 12
  }
}

Avanzado: imagen, herramientas y streaming

Estos ejemplos muestran bloques de content nativos de Anthropic (text + image) y definiciones de tools; el BFF los traduce al formato function-calling + image_url de OpenAI para el upstream.

bash
curl https://api.apexnova-consulting.com/anthropic/v1/messages \
  -H "x-api-key: sk-xxxxxxxx" \
  -H "anthropic-version: 2023-06-01" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "glm-4.6",
    "max_tokens": 1024,
    "tools": [{
      "name": "get_weather",
      "description": "Get current weather for a city",
      "input_schema": {
        "type": "object",
        "properties": { "city": { "type": "string" } },
        "required": ["city"]
      }
    }],
    "messages": [{
      "role": "user",
      "content": [
        { "type": "text", "text": "What is in this image? Then get the weather for the city shown." },
        { "type": "image", "source": { "type": "url", "url": "https://example.com/city.jpg" } }
      ]
    }]
  }'
python
from anthropic import Anthropic

client = Anthropic(
    base_url="https://api.apexnova-consulting.com/anthropic",
    api_key="sk-xxxxxxxx",
)

# 流式:逐块打印 text delta
with client.messages.stream(
    model="glm-4.6",
    max_tokens=1024,
    messages=[{"role": "user", "content": "Count to 5."}],
) as stream:
    for text in stream.text_stream:
        print(text, end="", flush=True)

Uso con Claude Code

Define estas variables de entorno en tu shell y ejecuta claude. Usa el Public Model Name de cualquier modelo chat de la plataforma.

bash
# 把 Claude Code 指向 ApeXagent(任一 chat 模型的 Public Model Name)
export ANTHROPIC_BASE_URL=https://api.apexnova-consulting.com/anthropic
export ANTHROPIC_AUTH_TOKEN=sk-xxxxxxxx
export ANTHROPIC_MODEL=glm-4.6
# 后台小任务用(标题生成等);没合适的就设成同一个
export ANTHROPIC_SMALL_FAST_MODEL=glm-4.6

Notas

  • Cuando stream es true, la respuesta es un flujo SSE de Anthropic (message_start / content_block_delta / message_delta / message_stop); el usage se reparte entre message_start y message_delta.
  • El uso de herramientas requiere que el modelo soporte function calling; el BFF traduce las tools de Anthropic al formato function-calling de OpenAI del upstream.
  • El content de los mensajes admite bloques de imagen (base64 o url); el BFF los convierte al formato image_url de OpenAI para el modelo multimodal upstream.
  • model debe ser un modelo chat preciado y habilitado en la plataforma; sobreescribe el nombre claude-* por defecto de Claude Code con ANTHROPIC_MODEL.
  • Este endpoint es traducido entre los protocolos Anthropic y OpenAI por el BFF y luego reenviado a /v1/chat/completions, por lo que cualquier grupo de modelos chat sirve tanto a clientes OpenAI como Anthropic — sin necesidad de configurar modelos ni credenciales separadas para Anthropic.