Messages (compatibilidad Anthropic)
POST
/anthropic/v1/messagesEndpoint 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
| Campo | Tipo | Requerido | Descripción |
|---|---|---|---|
model | string | Sí | Modelo a usar, como Public Model Name de la plataforma (p. ej. glm-4.6). |
messages | array | Sí | Mensajes de la conversación; cada uno con role (user / assistant) y content. |
system | string or array | No | Prompt del sistema, como cadena o array de bloques. |
max_tokens | integer | Sí | Máximo de tokens a generar (obligatorio). |
stream | boolean | No | Cuando es true, devuelve un flujo server-sent events. Por defecto: false. |
temperature | number | No | Temperatura de muestreo, 0–1. |
top_p | number | No | Masa de probabilidad para nucleus sampling. |
tools | array | No | Array de definiciones de herramientas para que el modelo las invoque. |
tool_choice | object or string | No | Estrategia de selección de herramienta: auto / any / tool, o una herramienta concreta. |
stop_sequences | array | No | Array 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.