Integración con el SDK de Anthropic (Python / TypeScript)
Llama a 1折AI con el SDK oficial de Anthropic: base_url es https://1zheai.com, con soporte nativo para caché, streaming, llamadas a herramientas y thinking.
El SDK oficial de Anthropic usa el endpoint nativo /v1/messages, y todos los parámetros de Claude se pueden usar directamente. Lo único que hay que cambiar es base_url y api_key.
Instalación
Sección titulada “Instalación”pip install anthropicnpm install @anthropic-ai/sdkLlamada
Sección titulada “Llamada”import osimport anthropic
client = anthropic.Anthropic( base_url="https://1zheai.com", api_key=os.environ["ONEZHE_API_KEY"],)
message = client.messages.create( model="claude-sonnet-5-5", max_tokens=1024, messages=[{"role": "user", "content": "用一句话介绍你自己"}],)print(message.model)print(message.content[0].text)print(message.usage)import Anthropic from "@anthropic-ai/sdk";
const client = new Anthropic({ baseURL: "https://1zheai.com", apiKey: process.env.ONEZHE_API_KEY,});
const message = await client.messages.create({ model: "claude-sonnet-5-5", max_tokens: 1024, messages: [{ role: "user", content: "用一句话介绍你自己" }],});console.log(message.model);console.log(message.content);console.log(message.usage);En base_url se indica la dirección raíz; no añadas /v1.
Salida en streaming
Sección titulada “Salida en streaming”with client.messages.stream( model="claude-sonnet-5-5", max_tokens=1024, messages=[{"role": "user", "content": "写一首四行的诗"}],) as stream: for text in stream.text_stream: print(text, end="", flush=True)const stream = client.messages.stream({ model: "claude-sonnet-5-5", max_tokens: 1024, messages: [{ role: "user", content: "写一首四行的诗" }],});stream.on("text", (text) => process.stdout.write(text));await stream.finalMessage();Llamada con caché
Sección titulada “Llamada con caché”Coloca el contenido largo y fijo en system y añade cache_control:
message = client.messages.create( model="claude-sonnet-5-5", max_tokens=1024, system=[ { "type": "text", "text": LONG_PROJECT_CONTEXT, # 每次都一样的长文本 "cache_control": {"type": "ephemeral"}, } ], messages=[{"role": "user", "content": "根据上面的说明回答:..."}],)print(message.usage.cache_creation_input_tokens, message.usage.cache_read_input_tokens)En la segunda llamada, si cache_read_input_tokens es mayor que 0, fue un acierto. Para más detalles, consulta Prompt Caching.
Uso de variables de entorno
Sección titulada “Uso de variables de entorno”El SDK oficial lee ANTHROPIC_BASE_URL y ANTHROPIC_API_KEY; también puedes no pasar parámetros al construir el cliente:
export ANTHROPIC_BASE_URL="https://1zheai.com"export ANTHROPIC_API_KEY="sk-你的Key"Luego, al construir el cliente, no pases parámetros:
client = anthropic.Anthropic() # 自动读取上面两个变量Si en esta máquina Claude Code también lee estas dos variables, ambas cambiarán a 1折AI, que normalmente es justo lo que quieres.
Preguntas frecuentes
Sección titulada “Preguntas frecuentes”404?
Se escribió de más /v1 en base_url. El SDK de Anthropic ensambla /v1/messages por sí mismo.
401?
Comprueba la clave de API (API key); además, si en el entorno también existe ANTHROPIC_AUTH_TOKEN (por ejemplo, un valor antiguo configurado antes para Claude Code), el SDK también lo leerá; elimina el valor antiguo y vuelve a intentarlo.
Estructura de solicitud y respuesta
Sección titulada “Estructura de solicitud y respuesta”Cuando necesites consultar system, los bloques de contenido y la razón de detención, consulta Detalles de la interfaz Messages. Un programa completo debe leer el texto según el tipo de bloque de contenido, sin asumir que el primer bloque siempre es text.
