CodeGeeX-4
CodeGeeX4 es una familia de modelos de programación multilingüe para generar, completar, explicar y reparar código y responder preguntas sobre repositorios. Sus guías nativas cubren prompts específicos de tareas, rellenado de huecos entre código existente y uso de archivos relacionados para preparar cambios con rutas explícitas.
- Ailoot Ultra · OpenAI Chat
POST /v1/chat/completionscodegeex-4 - Ailoot Ultra · Anthropic Messages
POST /v1/messagescodegeex-4
Sobre el modelo
Esta descripción cubre las capacidades del modelo. Las entradas, salidas y opciones disponibles en Ailoot se indican a continuación para el método seleccionado.
CodeGeeX4 es una familia de modelos de programación multilingüe centrada en la asistencia de programación y el trabajo entre archivos de código relacionados. El fabricante publica CodeGeeX4-ALL-9B como miembro de código abierto de la serie, desarrollado mediante entrenamiento continuado de GLM-4-9B. Su documentación cubre generación y completado de código, preguntas de programación, análisis de repositorios y flujos conectados que incluyen un intérprete de código, búsqueda web o llamadas a funciones. La salida habitual es texto: código, explicaciones, respuestas o cambios etiquetados por archivo, según la instrucción de la tarea.
Empiece por elegir la operación y dar al modelo el código que necesita. La guía nativa de prompts de sistema tiene instrucciones separadas para añadir comentarios, explicar un programa, traducir entre lenguajes de programación, revisar o reparar código, generar pruebas y responder preguntas sobre un archivo. Para una reparación, incluya el código que falla, el comportamiento observado y el resultado previsto. Para traducir, indique el lenguaje de programación de destino y aporte la función pertinente completa. Para comentarios, la instrucción de tarea del fabricante conserva el código y añade comentarios; para varias tareas que producen código, pide únicamente código. Estas distinciones ayudan a que el resultado sea utilizable como artefacto de código o explicación en lugar de dejar implícito el formato de salida.
Las guías proporcionan prompts de sistema en chino e inglés. El idioma de la instrucción de sistema no determina por sí mismo el idioma de la respuesta, por lo que debe solicitar explícitamente el idioma cuando necesite una explicación. Las indicaciones especializadas de revisión describen salida en chino; el prompt general de asistente de programación proporciona otra forma de pedir una revisión en un idioma de respuesta diferente. Algunas plantillas de tareas establecen que el idioma de los comentarios coincida con el original y excluyen la salida mixta en chino e inglés. En una conversación continuada, repita la instrucción pertinente de tarea al cambiar de operación para que una solicitud de explicación no se confunda con la solicitud anterior de salida exclusivamente de código.
Para el completado contextual, el formato nativo describe el archivo de destino, su lenguaje de programación y el código a ambos lados del punto de inserción. Utilice la ruta relativa del archivo con ###PATH: e incluya ###LANGUAGE:; la guía permite un valor de idioma vacío cuando se desconoce. ###MODE: selecciona LINE para completado de una línea o BLOCK para varias líneas, con BLOCK como valor predeterminado documentado. La secuencia de rellenado intermedio coloca primero el sufijo, después el prefijo y después la parte intermedia que falta, marcados con <|code_suffix|>, <|code_prefix|> y <|code_middle|>. La plantilla de rellenado del fabricante omite el prompt de sistema. Conservar el sufijo proporciona al modelo el flujo de control circundante y el código que debe permanecer después de la inserción. El resultado es el código ausente propuesto, que después puede comprobarse en su ubicación original.
El completado entre archivos añade fragmentos relacionados como material de referencia, cada uno introducido por ###REFERENCE: y su propio ###PATH:. Mantenga estas referencias separadas del archivo de destino y de su punto de inserción. Por ejemplo, al completar una función que llama a una función auxiliar existente, proporcione la firma y la implementación de la función auxiliar junto con el prefijo y el sufijo de la función de destino. La guía de completado a nivel de proyecto amplía este enfoque a generar un archivo nuevo a partir de los requisitos del proyecto y del código existente pertinente. Las rutas claras y las dependencias seleccionadas permiten distinguir el código aportado como prueba del archivo que se pide completar al modelo.
Las preguntas sobre repositorios usan otra disposición nativa: enumere cada archivo bajo ###PATH:, incluya su código y después formule la pregunta. Un encargo útil puede preguntar dónde se define un valor o cómo pasa una llamada entre los módulos proporcionados. La edición de repositorios utiliza su propia instrucción de sistema para añadir, eliminar o modificar archivos y solicita salida en ###PATH: {PATH} seguida del código. Prepare los archivos pertinentes y describa el cambio requerido, incluido el archivo que añadir o el comportamiento que conservar. Lea los bloques devueltos con etiquetas de ruta como cambios propuestos; no son pruebas de que ya se haya modificado un repositorio ni de que se haya ejecutado el código.
Para el miembro publicado CodeGeeX4-ALL-9B, el fabricante documenta un contexto de 128K y recomienda seleccionar contenido pertinente del repositorio cuando un proyecto supere esa ventana. La recuperación de fragmentos relacionados y el recorte de entradas demasiado grandes son pasos de preparación de la guía de repositorios. El contexto debe albergar las instrucciones, el código proporcionado y la continuación generada, por lo que un conjunto enfocado de archivos suele ser más útil que un volcado indiferenciado del proyecto. Los ajustes de generación de ejemplo del fabricante controlan la longitud de una ejecución concreta; no definen una longitud máxima universal de respuesta para todas las ediciones CodeGeeX4.
La serie también describe flujos de programación conectados con intérpretes, búsqueda y llamadas a funciones. Un flujo así necesita que la aplicación que lo rodea proporcione las herramientas indicadas y devuelva sus resultados a la conversación. Al pedir código ejecutable, indique el lenguaje previsto, las dependencias y el comportamiento esperado; al pedir un análisis, solicite las referencias pertinentes a archivos o funciones. Compile o ejecute los cambios propuestos en el entorno previsto y contraste el comportamiento con el requisito proporcionado antes de incorporarlos a un proyecto.
Ailoot Ultra · OpenAI Chat POST /v1/chat/completions codegeex-4
codegeex-4Primeros pasos
CodeGeeX4 es una familia de modelos de programación multilingüe para generar, completar, explicar y reparar código y responder preguntas sobre repositorios. Sus guías nativas cubren prompts específicos de tareas, rellenado de huecos entre código existente y uso de archivos relacionados para preparar cambios con rutas explícitas.
- Entradas aceptadas
- Texto
- Resultados
- Texto
Disponible en Ailoot · entradas y métodos
Ailoot Ultra · OpenAI Chat POST /v1/chat/completions
- Tipos de entrada
text- Tipos de salida
text- Formato de salida
- json o SSE
| Campo | Tipo | Requisito | Valores y límites | Predeterminado |
|---|---|---|---|---|
Campomodel | Tipostring | RequisitoObligatorio | Valores y límites codegeex-4 | Predeterminado— |
Campomessages | Tipomessage[] | RequisitoObligatorio | Valores y límites Número mínimo de elementos: 1 | Predeterminado— |
Campomessages[].role | Tipostring | RequisitoObligatorio | Valores y límites Depende del modelo | Predeterminado— |
Campomessages[].content | Tipostring | RequisitoOpcional | Valores y límites Se aplica cuando: Conversación textual | Predeterminado— |
Campostream | Tipoboolean | RequisitoOpcional | Valores y límites | Predeterminadofalse |
Combinaciones de materiales de entrada
Texto · Texto UTF8
messages[].content
Parámetros del método y ciclo de vida
| Parámetro | Contrato |
|---|---|
Parámetrocontent_type | Contratoapplication/json |
Parámetrorequired | Contratomodel, messages |
Parámetromaterial_types | Contratotext |
Parámetromessages | Contratomatriz de mensajes con estructura role/content |
Parámetrofile_material | Contratodocumento real en UTF-8 insertado como texto literal; no se deduce ningún ID de archivo |
Parámetrooptional_controls | Contratostream |
Parámetrocontrol_scope | ContratoConversación textual; stream es un booleano y su valor predeterminado es false. |
Parámetrooutput_modalities | Contratotext |
Parámetrohosted_operations | Contratofalse |
Parámetromultimodal_input_binding | Contratonull |
Alias de método: /chat/completions
Ciclo de vida: synchronous_or_streamed
Envía el ID exacto del modelo junto con messages.
La longitud del contexto no es un límite máximo de salida.
Un archivo de texto puede aportar texto literal; las entradas de imagen, audio u objetos de archivo requieren una vinculación exacta.
Planes
Las referencias tarifarias no añaden opciones a la solicitud. Los parámetros admitidos se indican en el método seleccionado.
- Modo rápido
- Sin especificar Cuando se selecciona el modo rápido
- Modo flex
- Sin especificar Cuando se selecciona el modo flex
- Esfuerzo máximo de razonamiento
- Sin especificar Cuando el esfuerzo máximo de razonamiento utiliza el ajuste predeterminado (default)
Tarifas de Ailoot
Precios por configuración
| Configuración | Tabla de tarifas | Cargo |
|---|---|---|
| ConfiguraciónTarifas base por token | Tabla de tarifasTarifa base | Cargo Entrada · Tokens de entrada $0.028 / 1K tokens Salida · Tokens de salida $0.028 / 1K tokens Entrada · Lectura de caché $0 / 1K tokens Entrada · Escritura en caché $0 / 1K tokens Entrada · Escritura en caché, 1 hora — / 1K tokens |
Ailoot reserva un importe estimado antes de la solicitud. Tras obtener el resultado, liquida el cargo definitivo según el uso medido. En las respuestas en flujo, la liquidación usa el registro de uso final. Cómo funcionan la reserva y la liquidación →
Solicitudes de ejemplo
Ailoot Ultra · OpenAI Chat
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model":"codegeex-4","messages":[{"role":"user","content":"hello"}],"stream":false}')
Path("request.json").write_text(json.dumps(p,ensure_ascii=False))
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/chat/completions \
-H "Authorization: Bearer $AILOOT_API_KEY" -H 'Content-Type: application/json' \
--data-binary @request.json -D response-headers.txt -o result.json
python3 - <<'PY_RESULT'
import json
from pathlib import Path
r=json.loads(Path("result.json").read_text())
for x in r.get("choices",[]):
if x.get("message",{}).get("content"): print(x["message"]["content"])
PY_RESULT
from openai import OpenAI
import os
if not os.environ.get("AILOOT_API_KEY", "").strip(): raise SystemExit("Set AILOOT_API_KEY before making a request")
client=OpenAI(base_url="https://api.ailoot.ai/v1",api_key=os.environ["AILOOT_API_KEY"],max_retries=0)
result=client.chat.completions.create(model="codegeex-4", messages=[{"role":"user","content":"hello"}], stream=False)
import base64, json
from pathlib import Path
def save_result(data, stem="result"):
# Keep every field, including usage, IDs, reasoning and tool requests.
Path(stem + ".json").write_text(json.dumps(data, ensure_ascii=False, indent=2), encoding="utf-8")
print(json.dumps(data, ensure_ascii=False, indent=2))
def save_blob(encoded, suffix, label):
raw = base64.b64decode(encoded, altchars=b"-_", validate=True)
ext = "png" if raw.startswith(b"\x89PNG\r\n\x1a\n") else "jpg" if raw.startswith(b"\xff\xd8") else "webp" if raw[:4] == b"RIFF" and raw[8:12] == b"WEBP" else suffix
file = Path(stem + "-" + label + "." + ext)
file.write_bytes(raw)
print("Saved", file)
for index, block in enumerate(data.get("content") or []):
print("Content", index, json.dumps(block, ensure_ascii=False))
for choice in data.get("choices") or []:
print("Choice", choice.get("index"), json.dumps(choice.get("message", choice.get("delta", {})), ensure_ascii=False))
for index, item in enumerate(data.get("output") or []):
print("Output", index, json.dumps(item, ensure_ascii=False))
if item.get("type") == "image_generation_call" and item.get("result"):
save_blob(item["result"], item.get("output_format") or "bin", "output-" + str(index))
for ci, candidate in enumerate(data.get("candidates") or []):
for pi, part in enumerate((candidate.get("content") or {}).get("parts") or []):
print("Candidate/part", ci, pi, json.dumps(part, ensure_ascii=False))
blob = part.get("inlineData") or part.get("inline_data")
if blob and blob.get("data"):
mime = blob.get("mimeType") or blob.get("mime_type")
suffix = {"image/png":"png", "image/jpeg":"jpg", "image/webp":"webp", "audio/wav":"wav", "audio/mpeg":"mp3", "video/mp4":"mp4"}.get(mime, "bin")
save_blob(blob["data"], suffix, "candidate-" + str(ci) + "-part-" + str(pi))
save_result(result.to_dict(mode="json"))
Recibir y guardar resultados
Ailoot Ultra · OpenAI Chat
json o SSE
Conserva todos los resultados completados
Conserva todas las respuestas, archivos y partes de contenido completos recibidos.
Conserva cada alternativa y su contenido, llamadas de herramientas y razonamiento. En SSE, ensambla los fragmentos incrementales por índice de alternativa/herramienta y conserva el motivo final de terminación y el uso.
Si es necesario revisar la respuesta original
Conserva los ID de solicitud y respuesta y las cabeceras. No se proporciona una URL genérica para recuperar tareas de texto.
Campos de respuesta
| Campo | Tipo |
|---|---|
Campochoices[].index | Tipointeger |
Campochoices[].message.content | Tipostring|null |
Campochoices[].message.tool_calls | Tipotool_call[] |
Campochoices[].message.reasoning_content | Tipostring |
Campochoices[].message.reasoning_details | Tipoobject|array |
Campochoices[].finish_reason | Tipostring|null |
Campousage | Tipoobject |
Errores y siguientes pasos
| Respuesta | Condición | Siguiente paso |
|---|---|---|
Respuesta400 · invalid_request_error | CondiciónCampos obligatorios, representación del material o valor del parámetro no válidos | Siguiente pasoCorrige los campos indicados antes de una nueva solicitud de creación. |
Alias
Alias del modelo
Ailoot Ultra codegeex-4
Alias de rutas de métodos
/chat/completions
ID de modelo relacionados
Ailoot Ultra · Anthropic Messages POST /v1/messages codegeex-4
codegeex-4Primeros pasos
CodeGeeX4 es una familia de modelos de programación multilingüe para generar, completar, explicar y reparar código y responder preguntas sobre repositorios. Sus guías nativas cubren prompts específicos de tareas, rellenado de huecos entre código existente y uso de archivos relacionados para preparar cambios con rutas explícitas.
- Entradas aceptadas
- Texto
- Resultados
- json · sse
Disponible en Ailoot · entradas y métodos
Ailoot Ultra · Anthropic Messages POST /v1/messages
- Tipos de entrada
text- Tipos de salida
json,sse- Formato de salida
- JSON o SSE
| Campo | Tipo | Requisito | Valores y límites | Predeterminado |
|---|---|---|---|---|
Campomodel | Tipostring | RequisitoObligatorio | Valores y límites codegeex-4 | Predeterminado— |
Campomessages | Tipomessage[] | RequisitoObligatorio | Valores y límites | Predeterminado— |
Campomessages[].role | Tipostring | RequisitoObligatorio | Valores y límites user, assistant | Predeterminado— |
Campomessages[].content | Tipostring | RequisitoObligatorio | Valores y límites | Predeterminado— |
Campomax_tokens | Tipointeger | RequisitoObligatorio | Valores y límites | Predeterminado— |
Campostream | Tipoboolean | RequisitoOpcional | Valores y límites | Predeterminadofalse |
Combinaciones de materiales de entrada
Texto · Texto UTF-8
cadena messages[].content
Parámetros del método y ciclo de vida
| Parámetro | Contrato |
|---|---|
Parámetrocontent_type | Contratoapplication/json |
Parámetrorequired | Contratomodel, messages, max_tokens |
Parámetrooptional_controls | Contratostream |
Parámetromaterial_types | Contratotext |
Parámetrotext_file_material | ContratoLee el documento real en UTF-8 y coloca su texto en el campo input indicado o en la cadena de contenido del mensaje. |
Ciclo de vida: synchronous_or_streamed
Planes
Las referencias tarifarias no añaden opciones a la solicitud. Los parámetros admitidos se indican en el método seleccionado.
- Modo rápido
- Sin especificar Cuando se selecciona el modo rápido
- Modo flex
- Sin especificar Cuando se selecciona el modo flex
- Esfuerzo máximo de razonamiento
- Sin especificar Cuando el esfuerzo máximo de razonamiento utiliza el ajuste predeterminado (default)
Tarifas de Ailoot
Precios por configuración
| Configuración | Tabla de tarifas | Cargo |
|---|---|---|
| ConfiguraciónTarifas base por token | Tabla de tarifasTarifa base | Cargo Entrada · Tokens de entrada $0.028 / 1K tokens Salida · Tokens de salida $0.028 / 1K tokens Entrada · Lectura de caché $0 / 1K tokens Entrada · Escritura en caché $0 / 1K tokens Entrada · Escritura en caché, 1 hora — / 1K tokens |
Ailoot reserva un importe estimado antes de la solicitud. Tras obtener el resultado, liquida el cargo definitivo según el uso medido. En las respuestas en flujo, la liquidación usa el registro de uso final. Cómo funcionan la reserva y la liquidación →
Solicitudes de ejemplo
Ailoot Ultra · Anthropic Messages
{
"model": "codegeex-4",
"max_tokens": 128,
"messages": [
{
"role": "user",
"content": "Summarize the incident report."
}
],
"stream": false
}set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_TEXT_FILE:?Set your actual UTF-8 document}"
export AILOOT_TEXT_FILE
python3 - <<'PY_REQUEST'
import json, os
from pathlib import Path
source_file = Path(os.environ['AILOOT_TEXT_FILE'])
if not source_file.is_file():
raise SystemExit('Set AILOOT_TEXT_FILE to your actual UTF-8 document')
text = source_file.read_text(encoding='utf-8')
if not text.strip():
raise SystemExit('Choose a document containing text')
payload = {'model': 'codegeex-4', 'max_tokens': 128, 'messages': [{'role': 'user', 'content': 'Summarize the incident report.'}]}
payload['messages'][0]['content'] = 'Summarize this material and quote supporting source passages.\n\n' + text
Path('request.json').write_text(json.dumps(payload, ensure_ascii=False), encoding='utf-8')
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/messages \
-H "x-api-key: $AILOOT_API_KEY" -H 'anthropic-version: 2023-06-01' -H 'Content-Type: application/json' \
--data-binary @request.json -D response-headers.txt -o result.json
python3 - <<'PY_RESULT'
import json
from pathlib import Path
result = json.loads(Path('result.json').read_text(encoding='utf-8'))
print(json.dumps(result, ensure_ascii=False, indent=2))
PY_RESULT
import json, os
from pathlib import Path
source_file = Path(os.environ['AILOOT_TEXT_FILE'])
if not source_file.is_file():
raise SystemExit('Set AILOOT_TEXT_FILE to your actual UTF-8 document')
text = source_file.read_text(encoding='utf-8')
if not text.strip():
raise SystemExit('Choose a document containing text')
payload = {'model': 'codegeex-4', 'max_tokens': 128, 'messages': [{'role': 'user', 'content': 'Summarize the incident report.'}]}
payload['messages'][0]['content'] = 'Summarize this material and quote supporting source passages.\n\n' + text
from urllib.request import Request, urlopen
from urllib.error import HTTPError
api_key = os.environ['AILOOT_API_KEY']
if not api_key.strip():
raise SystemExit('Set AILOOT_API_KEY before making a request')
headers = {'x-api-key': 'PLACEHOLDER_KEY', 'anthropic-version': '2023-06-01', 'Content-Type': 'application/json'}
headers['x-api-key'] = api_key
request = Request('https://api.ailoot.ai/v1/messages', data=json.dumps(payload, ensure_ascii=False).encode('utf-8'), headers=headers, method='POST')
try:
with urlopen(request, timeout=120) as response:
raw = response.read()
Path('response-headers.txt').write_text(str(response.headers), encoding='utf-8')
except HTTPError as error:
Path('result.json').write_bytes(error.read())
Path('response-headers.txt').write_text(str(error.headers), encoding='utf-8')
raise
Path('result.json').write_bytes(raw)
import json
from pathlib import Path
result = json.loads(Path('result.json').read_text(encoding='utf-8'))
print(json.dumps(result, ensure_ascii=False, indent=2))
Recibir y guardar resultados
Ailoot Ultra · Anthropic Messages
JSON o SSE
Conserva todos los resultados completados
Conserva todas las respuestas, archivos y partes de contenido completos recibidos.
Conserva todos los bloques de contenido, las firmas de razonamiento y los ID reales de uso de herramientas. Ensambla todos los fragmentos incrementales de los bloques SSE; el primer bloque de texto no constituye la salida completa.
Si es necesario revisar la respuesta original
Conserva los ID de solicitud y respuesta y las cabeceras. No se proporciona una URL genérica para recuperar tareas de texto.
Campos de respuesta
| Campo | Tipo |
|---|---|
Campoid | Tipostring |
Campomodel | Tipostring |
Campocontent[] | Tipotext|thinking|tool_use|other content block |
Campostop_reason | Tipostring|null |
Campousage | Tipoobject |
Errores y siguientes pasos
| Respuesta | Condición | Siguiente paso |
|---|---|---|
Respuesta400 · invalid_request_error | CondiciónCampos obligatorios, representación del material o valor del parámetro no válidos | Siguiente pasoCorrige los campos indicados antes de una nueva solicitud de creación. |
Alias
Alias del modelo
Ailoot Ultra codegeex-4
Alias de rutas de métodos
/chat/completions
ID de modelo relacionados
FAQ · CodeGeeX-4
- ¿Qué entradas y resultados están disponibles?
POST /v1/chat/completions·codegeex-4:text→textPOST /v1/messages·codegeex-4:text→json,sse- ¿Qué campos utiliza la solicitud?
POST /v1/chat/completions·codegeex-4:model,messages,streamPOST /v1/messages·codegeex-4:model,messages,max_tokens,stream- ¿Qué límites se aplican?
POST /v1/chat/completions·codegeex-4:messages.min_items:1