CodeGeeX-4
CodeGeeX4 é uma família multilingue de modelos de programação para geração, conclusão, explicação e reparação de código e perguntas sobre repositórios. Os seus guias nativos abrangem prompts específicos de tarefas, preenchimento de lacunas entre código existente e utilização de ficheiros relacionados para preparar alterações com caminhos de ficheiro explícitos.
- Ailoot Ultra · OpenAI Chat
POST /v1/chat/completionscodegeex-4 - Ailoot Ultra · Anthropic Messages
POST /v1/messagescodegeex-4
Sobre o modelo
Esta descrição apresenta as capacidades do modelo. As entradas, saídas e opções disponíveis no Ailoot para o método selecionado estão indicadas abaixo.
CodeGeeX4 é uma família multilingue de modelos de programação centrada na assistência à programação e no trabalho entre ficheiros de código-fonte relacionados. O fabricante publica CodeGeeX4-ALL-9B como membro de código aberto da série, desenvolvido através do treino continuado de GLM-4-9B. A documentação abrange geração e conclusão de código, perguntas de programação, análise de repositórios e fluxos de trabalho ligados que envolvem um interpretador de código, pesquisa na Web ou chamadas de funções. A saída habitual é texto: código, explicações, respostas ou alterações identificadas por ficheiro, consoante a instrução da tarefa.
Comece por escolher a operação e dar ao modelo o código necessário. O guia nativo de prompts de sistema tem instruções separadas para acrescentar comentários, explicar um programa, traduzir entre linguagens de programação, rever ou reparar código, gerar testes e responder a perguntas sobre um ficheiro. Para uma reparação, inclua o código com falha, o comportamento observado e o resultado pretendido. Para tradução, indique a linguagem de programação de destino e forneça a função relevante completa. Para comentários, a instrução de tarefa do fabricante preserva o código e acrescenta comentários; para várias tarefas que produzem código, pede apenas código. Estas distinções ajudam a tornar o resultado utilizável como conteúdo de código ou explicação, em vez de deixar implícito o formato de saída.
Os guias fornecem prompts de sistema em chinês e inglês. O idioma da instrução de sistema não determina, por si só, o idioma da resposta, por isso peça-o explicitamente quando precisar de uma explicação. As orientações especializadas de revisão descrevem saída em chinês; o prompt geral de assistente de programação oferece uma forma separada de pedir uma revisão noutro idioma de resposta. Alguns modelos de tarefa definem que o idioma dos comentários deve corresponder ao da fonte e excluem saída mista em chinês e inglês. Numa conversa contínua, repita a instrução relevante da tarefa ao mudar de operação, para que um pedido de explicação não seja confundido com o pedido anterior de saída apenas em código.
Para conclusão contextual, o formato nativo descreve o ficheiro de destino, a respetiva linguagem de programação e o código de ambos os lados do ponto de inserção. Utilize o caminho relativo do ficheiro com ###PATH: e inclua ###LANGUAGE:; o guia permite um valor de linguagem vazio quando esta é desconhecida. ###MODE: seleciona LINE para conclusão de uma única linha ou BLOCK para várias linhas, sendo BLOCK o valor predefinido documentado. A sequência de preenchimento intermédio apresenta primeiro o sufixo, depois o prefixo e depois a parte intermédia em falta, marcada com <|code_suffix|>, <|code_prefix|> e <|code_middle|>. O modelo de preenchimento do fabricante omite o prompt de sistema. Manter o sufixo dá ao modelo o fluxo de controlo envolvente e o código que deve permanecer após a inserção. O resultado é o código em falta proposto, que pode depois ser verificado na localização original.
A conclusão entre ficheiros acrescenta excertos relacionados como material de referência, cada um introduzido por ###REFERENCE: e pelo respetivo ###PATH:. Mantenha essas referências separadas do ficheiro de destino e do ponto de inserção. Por exemplo, ao completar uma função que chama uma função auxiliar existente, forneça a assinatura e a implementação dessa função auxiliar juntamente com o prefixo e o sufixo da função de destino. O guia de conclusão ao nível do projeto alarga esta abordagem à geração de um novo ficheiro a partir dos requisitos do projeto e do código existente relevante. Caminhos claros e dependências selecionadas permitem distinguir o código fornecido como prova do ficheiro que se pede ao modelo para completar.
As perguntas sobre repositórios utilizam uma disposição nativa diferente: enumere cada ficheiro sob ###PATH:, inclua o respetivo código e coloque depois a pergunta. Um pedido útil pode perguntar onde está definido um valor ou como uma chamada passa entre os módulos fornecidos. A edição de repositórios utiliza a sua própria instrução de sistema para acrescentar, eliminar ou modificar ficheiros e pede saída em ###PATH: {PATH} seguida do código. Prepare os ficheiros relevantes e descreva a alteração exigida, incluindo o ficheiro a acrescentar ou o comportamento a preservar. Leia os blocos devolvidos identificados por caminho como alterações propostas; não são prova de que um repositório já foi modificado nem de que o código foi executado.
Para o membro publicado CodeGeeX4-ALL-9B, o fabricante documenta um contexto de 128K e recomenda selecionar conteúdo relevante do repositório quando um projeto excede essa janela. A recuperação de excertos relacionados e a redução de entradas demasiado grandes são etapas de preparação no guia de repositórios. O contexto tem de acomodar as instruções, o código fornecido e a continuação gerada, por isso um conjunto de ficheiros direcionado é frequentemente mais útil do que um despejo indiferenciado do projeto. As definições de geração do exemplo do fabricante controlam o comprimento de uma execução específica; não definem um comprimento máximo universal de resposta para todas as edições CodeGeeX4.
A série descreve também fluxos de programação ligados a interpretadores, pesquisa e chamadas de funções. Um fluxo deste tipo exige que a aplicação envolvente forneça as ferramentas indicadas e devolva os resultados à conversa. Ao pedir código executável, indique a linguagem pretendida, as dependências e o comportamento esperado; ao pedir uma análise, peça referências aos ficheiros ou funções relevantes. Compile ou execute as alterações propostas no ambiente pretendido e verifique o comportamento face ao requisito fornecido antes de as integrar num projeto.
Ailoot Ultra · OpenAI Chat POST /v1/chat/completions codegeex-4
codegeex-4Introdução
CodeGeeX4 é uma família multilingue de modelos de programação para geração, conclusão, explicação e reparação de código e perguntas sobre repositórios. Os seus guias nativos abrangem prompts específicos de tarefas, preenchimento de lacunas entre código existente e utilização de ficheiros relacionados para preparar alterações com caminhos de ficheiro explícitos.
- Entradas aceites
- Texto
- Resultados
- Texto
Disponível no Ailoot · entradas e métodos
Ailoot Ultra · OpenAI Chat POST /v1/chat/completions
- Entrada
text- Saída
text- Formato de saída
- json ou SSE
| Campo | Tipo | Requisito | Valores e limites | Predefinição |
|---|---|---|---|---|
Campomodel | Tipostring | RequisitoObrigatório | Valores e limites codegeex-4 | Predefinição— |
Campomessages | Tipomessage[] | RequisitoObrigatório | Valores e limites Número mínimo de elementos: 1 | Predefinição— |
Campomessages[].role | Tipostring | RequisitoObrigatório | Valores e limites Depende do modelo | Predefinição— |
Campomessages[].content | Tipostring | RequisitoOpcional | Valores e limites Aplica-se quando: Conversação textual | Predefinição— |
Campostream | Tipoboolean | RequisitoOpcional | Valores e limites | Predefiniçãofalse |
Combinações de materiais de entrada
Texto · Texto UTF8
messages[].content
Parâmetros e ciclo de vida do método
| Parâmetro | Contrato |
|---|---|
Parâmetrocontent_type | Contratoapplication/json |
Parâmetrorequired | Contratomodel, messages |
Parâmetromaterial_types | Contratotext |
Parâmetromessages | ContratoLista de mensagens com estrutura role/content |
Parâmetrofile_material | ContratoDocumento UTF-8 real inserido como texto literal; nenhum ID de ficheiro inferido |
Parâmetrooptional_controls | Contratostream |
Parâmetrocontrol_scope | ContratoConversação textual; stream é um booleano e tem false como predefinição. |
Parâmetrooutput_modalities | Contratotext |
Parâmetrohosted_operations | Contratofalse |
Parâmetromultimodal_input_binding | Contratonull |
Aliases do método: /chat/completions
Ciclo de vida: synchronous_or_streamed
Envie o ID exato do modelo com messages.
O comprimento do contexto não é um limite de saída.
Um ficheiro de texto pode fornecer texto literal; as entradas de imagem/áudio/objeto de ficheiro exigem uma associação exata.
Tarifários
As referências tarifárias não acrescentam opções ao pedido. Os parâmetros suportados constam do método selecionado.
- Modo rápido
- Não especificado Quando o modo rápido está selecionado
- Modo flex
- Não especificado Quando o modo flex está selecionado
- Esforço máximo de raciocínio
- Não especificado Quando o esforço máximo de raciocínio usa o ajuste predefinido (default)
Tarifas Ailoot
Preços por configuração
| Configuração | Tabela de tarifas | Custo |
|---|---|---|
| ConfiguraçãoTarifas base dos tokens | Tabela de tarifasTarifa base | Custo Entrada · Tokens de entrada $0.028 / 1K tokens Saída · Tokens de saída $0.028 / 1K tokens Entrada · Leitura da cache $0 / 1K tokens Entrada · Escrita na cache $0 / 1K tokens Entrada · Escrita na cache, 1 hora — / 1K tokens |
O Ailoot reserva um montante estimado antes de um pedido. Após o resultado, liquida o custo final com base na utilização medida. No streaming, a liquidação usa o registo final de utilização. Como funcionam a reserva e a liquidação →
Exemplos de pedidos
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"))
Receber e guardar os resultados
Ailoot Ultra · OpenAI Chat
json ou SSE
Guardar todos os resultados concluídos
Guarde cada resposta, ficheiro e parte de conteúdo devolvidos na íntegra.
Conserve cada opção com o conteúdo, as chamadas de ferramentas e o raciocínio. Em SSE, junte os deltas por índice de opção e ferramenta e mantenha o motivo final de conclusão e os dados de utilização.
Se for necessário verificar a resposta original
Conserve os ID e cabeçalhos de pedido/resposta. Não é fornecido um URL genérico para obter uma tarefa textual.
Campos da resposta
| 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 |
Erros e passos seguintes
| Resposta | Condição | Passo seguinte |
|---|---|---|
Resposta400 · invalid_request_error | CondiçãoCampos obrigatórios, representação do material ou valor do parâmetro inválidos | Passo seguinteCorrija os campos indicados antes de um novo pedido de criação. |
Aliases
Aliases do modelo
Ailoot Ultra codegeex-4
Aliases dos caminhos dos métodos
/chat/completions
IDs de chamada relacionados
Ailoot Ultra · Anthropic Messages POST /v1/messages codegeex-4
codegeex-4Introdução
CodeGeeX4 é uma família multilingue de modelos de programação para geração, conclusão, explicação e reparação de código e perguntas sobre repositórios. Os seus guias nativos abrangem prompts específicos de tarefas, preenchimento de lacunas entre código existente e utilização de ficheiros relacionados para preparar alterações com caminhos de ficheiro explícitos.
- Entradas aceites
- Texto
- Resultados
- json · sse
Disponível no Ailoot · entradas e métodos
Ailoot Ultra · Anthropic Messages POST /v1/messages
- Entrada
text- Saída
json,sse- Formato de saída
- JSON ou SSE
| Campo | Tipo | Requisito | Valores e limites | Predefinição |
|---|---|---|---|---|
Campomodel | Tipostring | RequisitoObrigatório | Valores e limites codegeex-4 | Predefinição— |
Campomessages | Tipomessage[] | RequisitoObrigatório | Valores e limites | Predefinição— |
Campomessages[].role | Tipostring | RequisitoObrigatório | Valores e limites user, assistant | Predefinição— |
Campomessages[].content | Tipostring | RequisitoObrigatório | Valores e limites | Predefinição— |
Campomax_tokens | Tipointeger | RequisitoObrigatório | Valores e limites | Predefinição— |
Campostream | Tipoboolean | RequisitoOpcional | Valores e limites | Predefiniçãofalse |
Combinações de materiais de entrada
Texto · Texto UTF-8
Cadeia de caracteres messages[].content
Parâmetros e ciclo de vida do método
| 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 | ContratoLeia o documento UTF-8 real e coloque o texto na entrada indicada ou na cadeia de conteúdo da mensagem. |
Ciclo de vida: synchronous_or_streamed
Tarifários
As referências tarifárias não acrescentam opções ao pedido. Os parâmetros suportados constam do método selecionado.
- Modo rápido
- Não especificado Quando o modo rápido está selecionado
- Modo flex
- Não especificado Quando o modo flex está selecionado
- Esforço máximo de raciocínio
- Não especificado Quando o esforço máximo de raciocínio usa o ajuste predefinido (default)
Tarifas Ailoot
Preços por configuração
| Configuração | Tabela de tarifas | Custo |
|---|---|---|
| ConfiguraçãoTarifas base dos tokens | Tabela de tarifasTarifa base | Custo Entrada · Tokens de entrada $0.028 / 1K tokens Saída · Tokens de saída $0.028 / 1K tokens Entrada · Leitura da cache $0 / 1K tokens Entrada · Escrita na cache $0 / 1K tokens Entrada · Escrita na cache, 1 hora — / 1K tokens |
O Ailoot reserva um montante estimado antes de um pedido. Após o resultado, liquida o custo final com base na utilização medida. No streaming, a liquidação usa o registo final de utilização. Como funcionam a reserva e a liquidação →
Exemplos de pedidos
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))
Receber e guardar os resultados
Ailoot Ultra · Anthropic Messages
JSON ou SSE
Guardar todos os resultados concluídos
Guarde cada resposta, ficheiro e parte de conteúdo devolvidos na íntegra.
Conserve todos os blocos de conteúdo, as assinaturas de raciocínio e os ID reais de utilização de ferramentas. Junte todos os deltas de blocos SSE; o primeiro bloco de texto não é a saída completa.
Se for necessário verificar a resposta original
Conserve os ID e cabeçalhos de pedido/resposta. Não é fornecido um URL genérico para obter uma tarefa textual.
Campos da resposta
| Campo | Tipo |
|---|---|
Campoid | Tipostring |
Campomodel | Tipostring |
Campocontent[] | Tipotext|thinking|tool_use|other content block |
Campostop_reason | Tipostring|null |
Campousage | Tipoobject |
Erros e passos seguintes
| Resposta | Condição | Passo seguinte |
|---|---|---|
Resposta400 · invalid_request_error | CondiçãoCampos obrigatórios, representação do material ou valor do parâmetro inválidos | Passo seguinteCorrija os campos indicados antes de um novo pedido de criação. |
Aliases
Aliases do modelo
Ailoot Ultra codegeex-4
Aliases dos caminhos dos métodos
/chat/completions
IDs de chamada relacionados
FAQ · CodeGeeX-4
- Que entradas e resultados estão disponíveis?
POST /v1/chat/completions·codegeex-4:text→textPOST /v1/messages·codegeex-4:text→json,sse- Que campos utiliza o pedido?
POST /v1/chat/completions·codegeex-4:model,messages,streamPOST /v1/messages·codegeex-4:model,messages,max_tokens,stream- Que limites se aplicam?
POST /v1/chat/completions·codegeex-4:messages.min_items:1