Usa los modelos Claude y GPT a través de un único endpoint al estilo de OpenAI.
BASE URLhttps://api.apivai.com/v1
APIVAI usa el formato HTTP de OpenAI, así que las herramientas y SDK que aceptan una base URL personalizada funcionan sin código de integración adicional. Cambia la base URL y la clave; el resto de tu código sigue igual.
Endpoints
Método y ruta
Uso
Notas
GET /v1/models
Listar modelos
Llámalo antes de fijar un nombre de modelo en el código.
POST /v1/chat/completions
Chat completions
Recibe un array messages al estilo de OpenAI.
POST /v1/chat/completions
Chat en streaming
Añade "stream": true para recibir server-sent events.
# 1) List the models available to your key
curl https://api.apivai.com/v1/models \
-H "Authorization: Bearer $APIVAI_API_KEY"
# 2) Send a minimal chat request
curl https://api.apivai.com/v1/chat/completions \
-H "Authorization: Bearer $APIVAI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "YOUR_MODEL_NAME",
"messages": [{"role": "user", "content": "Return one short sentence."}]
}'
OpenAI SDK
Python
from openai import OpenAI
client = OpenAI(
api_key="YOUR_APIVAI_API_KEY",
base_url="https://api.apivai.com/v1",
)
resp = client.chat.completions.create(
model="YOUR_MODEL_NAME",
messages=[
{"role": "system", "content": "You are a concise technical assistant."},
{"role": "user", "content": "Explain API gateways in 2 sentences."},
],
temperature=0.2,
)
print(resp.choices[0].message.content)
Node.js
import OpenAI from "openai";
const client = new OpenAI({
apiKey: process.env.APIVAI_API_KEY,
baseURL: "https://api.apivai.com/v1",
});
const resp = await client.chat.completions.create({
model: "YOUR_MODEL_NAME",
messages: [{ role: "user", content: "Explain API gateways in 2 sentences." }],
});
console.log(resp.choices[0]?.message?.content);
Streaming
Define stream en true y lee el cuerpo de la respuesta de forma incremental. Los fragmentos llegan como líneas que empiezan por "data:"; el stream termina con [DONE] o cuando se cierra la conexión.
stream = client.chat.completions.create(
model="YOUR_MODEL_NAME",
messages=[{"role": "user", "content": "Write a short deployment checklist."}],
stream=True,
)
for chunk in stream:
if chunk.choices and chunk.choices[0].delta.content:
print(chunk.choices[0].delta.content, end="")
Llamada a funciones
Funciona el flujo estándar en dos pasos: el modelo devuelve una llamada a herramienta, tú la ejecutas y envías el resultado para obtener la respuesta final.
import json
TOOLS = [{
"type": "function",
"function": {
"name": "get_weather",
"description": "Get the current weather for a city.",
"parameters": {
"type": "object",
"properties": {"city": {"type": "string"}},
"required": ["city"],
},
},
}]
messages = [{"role": "user", "content": "What's the weather in Tokyo?"}]
first = client.chat.completions.create(model=MODEL, messages=messages, tools=TOOLS)
choice = first.choices[0].message
messages.append(choice)
for call in choice.tool_calls or []:
args = json.loads(call.function.arguments)
messages.append({
"role": "tool",
"tool_call_id": call.id,
"content": json.dumps({"city": args["city"], "temp_c": 21}),
})
final = client.chat.completions.create(model=MODEL, messages=messages, tools=TOOLS)
print(final.choices[0].message.content)
Frameworks
LangChain
from langchain_openai import ChatOpenAI
llm = ChatOpenAI(
base_url="https://api.apivai.com/v1",
api_key="YOUR_APIVAI_API_KEY",
model="YOUR_MODEL_NAME",
)
print(llm.invoke("Explain API gateways in 2 sentences.").content)
LlamaIndex
from llama_index.llms.openai_like import OpenAILike
llm = OpenAILike(
model="YOUR_MODEL_NAME",
api_base="https://api.apivai.com/v1",
api_key="YOUR_APIVAI_API_KEY",
is_chat_model=True,
)
print(llm.complete("Explain API gateways in 2 sentences."))
Cómo elegir un modelo
Llama a GET /v1/models con tu clave API.
Elige un ID de modelo de la respuesta.
Haz una pequeña solicitud de chat con él.
Solo entonces pon el nombre del modelo en la configuración de tu aplicación.
Qué significa «compatible»
El formato de las solicitudes es deliberadamente familiar, pero no todos los parámetros de cada endpoint de OpenAI se admiten en todos los contextos. Al migrar una integración existente, empieza con el cuerpo de solicitud más pequeño, confirma el modelo y luego añade los parámetros opcionales de uno en uno.