CodeGeeX-4
CodeGeeX4 is een meertalige familie van programmeermodellen voor codegeneratie, aanvulling, uitleg, herstel en vragen over repositories. De eigen handleidingen behandelen taakspecifieke prompts, het invullen van gaten tussen bestaande code en het gebruik van gerelateerde bestanden om wijzigingen met expliciete bestandspaden voor te bereiden.
- Ailoot Ultra · OpenAI Chat
POST /v1/chat/completionscodegeex-4 - Ailoot Ultra · Anthropic Messages
POST /v1/messagescodegeex-4
Over het model
Deze beschrijving gaat over de mogelijkheden van het model. De via Ailoot beschikbare invoer, uitvoer en opties staan hieronder voor de geselecteerde methode.
CodeGeeX4 is een meertalige familie van programmeermodellen, gericht op programmeerondersteuning en werk in samenhangende bronbestanden. De ontwikkelaar publiceert CodeGeeX4-ALL-9B als opensourcelid van de reeks, ontwikkeld door GLM-4-9B verder te trainen. De documentatie behandelt codegeneratie en -aanvulling, programmeervragen, repositoryanalyse en aangesloten werkprocessen met een code-interpreter, webzoekfunctie of functieaanroepen. De gewone uitvoer is tekst: code, uitleg, antwoorden of wijzigingen met bestandslabels, afhankelijk van de taakinstructie.
Begin met het kiezen van de bewerking en geef het model de code die het nodig heeft. De eigen handleiding voor systeemprompts bevat afzonderlijke instructies voor het toevoegen van commentaar, het uitleggen van een programma, het vertalen tussen programmeertalen, het beoordelen of herstellen van code, het genereren van tests en het beantwoorden van vragen over een bestand. Voeg bij herstel de falende code, het waargenomen gedrag en het beoogde resultaat toe. Geef bij vertaling de doelprogrammeertaal aan en lever de volledige relevante functie aan. Voor commentaar behoudt de taakinstructie van de ontwikkelaar de code en voegt ze commentaar toe; voor meerdere codeproducerende taken vraagt ze uitsluitend om code. Deze verschillen helpen het resultaat bruikbaar te maken als code of uitleg, in plaats van de uitvoervorm impliciet te laten.
De handleidingen bieden Chinese en Engelse systeemprompts. De taal van de systeeminstructie bepaalt op zichzelf niet de antwoordtaal; vraag daarom expliciet om de gewenste antwoordtaal wanneer uitleg nodig is. De gespecialiseerde beoordelingsrichtlijn beschrijft Chinese uitvoer; de algemene prompt voor de programmeerassistent biedt een afzonderlijke manier om een beoordeling in een andere taal te vragen. Sommige taaksjablonen stellen de taal van commentaar gelijk aan die van de bron en sluiten gemengde Chinese en Engelse uitvoer uit. Herhaal in een doorlopend gesprek de relevante taakinstructie wanneer je van bewerking wisselt, zodat een verzoek om uitleg niet wordt verward met het voorgaande verzoek om alleen code.
Voor aanvulling op basis van context beschrijft het eigen formaat het doelbestand, de programmeertaal en de code aan weerszijden van het invoegpunt. Gebruik het relatieve bestandspad met ###PATH: en voeg ###LANGUAGE: toe; de handleiding staat een lege taalwaarde toe wanneer de taal onbekend is. ###MODE: kiest LINE voor een aanvulling van één regel of BLOCK voor meerdere regels, met BLOCK als gedocumenteerde standaard. De fill-in-the-middle-volgorde bestaat eerst uit het suffix, daarna het prefix en vervolgens het ontbrekende middendeel, gemarkeerd met <|code_suffix|>, <|code_prefix|> en <|code_middle|>. De invulsjabloon van de ontwikkelaar laat de systeemprompt weg. Door het suffix te behouden krijgt het model de omliggende besturingsstroom en de code die na de invoeging moet blijven staan. Het resultaat is de voorgestelde ontbrekende code, die vervolgens op de oorspronkelijke plaats kan worden gecontroleerd.
Aanvulling over meerdere bestanden voegt gerelateerde fragmenten toe als referentiemateriaal, elk ingeleid door ###REFERENCE: en een eigen ###PATH:. Houd deze referenties gescheiden van het doelbestand en het invoegpunt. Geef bijvoorbeeld bij het aanvullen van een functie die een bestaande hulpfunctie aanroept de signatuur en implementatie van die hulpfunctie naast het prefix en suffix van de doelfunctie. De handleiding voor aanvulling op projectniveau breidt deze aanpak uit naar het genereren van een nieuw bestand op basis van projectvereisten en relevante bestaande code. Duidelijke paden en geselecteerde afhankelijkheden maken het mogelijk om code die als bewijs is aangeleverd te onderscheiden van het bestand dat het model moet aanvullen.
Repositoryvragen gebruiken een andere eigen opmaak: vermeld elk bestand onder ###PATH:, voeg de code toe en stel daarna de vraag. Een bruikbare opdracht kan vragen waar een waarde is gedefinieerd of hoe een aanroep door de aangeleverde modules loopt. Repositorybewerking gebruikt een eigen systeeminstructie voor het toevoegen, verwijderen of wijzigen van bestanden en vraagt om uitvoer in de vorm ###PATH: {PATH}, gevolgd door de code. Bereid de relevante bestanden voor en beschrijf de vereiste wijziging, inclusief het toe te voegen bestand of het te behouden gedrag. Lees de teruggegeven blokken met padlabels als voorgestelde wijzigingen; ze bewijzen niet dat een repository al is aangepast of dat de code heeft gedraaid.
Voor het gepubliceerde lid CodeGeeX4-ALL-9B documenteert de ontwikkelaar een context van 128K en beveelt deze aan relevante repositoryinhoud te selecteren wanneer een project dat venster overschrijdt. Het ophalen van gerelateerde fragmenten en het inkorten van te grote invoer zijn voorbereidingsstappen in de repositoryhandleiding. De context moet ruimte bieden aan de instructies, aangeleverde code en gegenereerde voortzetting; daarom is een gerichte verzameling bestanden vaak bruikbaarder dan een ongesorteerde projectdump. De voorbeeldinstellingen van de ontwikkelaar bepalen de lengte van één specifieke generatieronde; ze definiëren geen universele maximale antwoordlengte voor elke CodeGeeX4-editie.
De reeks beschrijft ook aangesloten programmeerprocessen met interpreters, zoeken en functieaanroepen. Voor zo’n proces moet de omringende applicatie de genoemde tools aanbieden en hun resultaten teruggeven aan het gesprek. Geef bij een verzoek om uitvoerbare code de bedoelde taal, afhankelijkheden en het verwachte gedrag aan; vraag bij een analyse om verwijzingen naar de relevante bestanden of functies. Compileer of voer de voorgestelde wijzigingen uit in de bedoelde omgeving en controleer het gedrag aan de hand van de aangeleverde vereiste voordat je ze in een project opneemt.
Ailoot Ultra · OpenAI Chat POST /v1/chat/completions codegeex-4
codegeex-4Aan de slag
CodeGeeX4 is een meertalige familie van programmeermodellen voor codegeneratie, aanvulling, uitleg, herstel en vragen over repositories. De eigen handleidingen behandelen taakspecifieke prompts, het invullen van gaten tussen bestaande code en het gebruik van gerelateerde bestanden om wijzigingen met expliciete bestandspaden voor te bereiden.
- Toegestane invoer
- Tekst
- Resultaten
- Tekst
Beschikbaar in Ailoot · invoer en methoden
Ailoot Ultra · OpenAI Chat POST /v1/chat/completions
- Invoertypen
text- Uitvoertypen
text- Uitvoerformaat
- json of SSE
| Veld | Type | Vereiste | Waarden en limieten | Standaard |
|---|---|---|---|---|
Veldmodel | Typestring | VereisteVereist | Waarden en limieten codegeex-4 | Standaard— |
Veldmessages | Typemessage[] | VereisteVereist | Waarden en limieten Minimumaantal items: 1 | Standaard— |
Veldmessages[].role | Typestring | VereisteVereist | Waarden en limieten Afhankelijk van het model | Standaard— |
Veldmessages[].content | Typestring | VereisteOptioneel | Waarden en limieten Geldt wanneer: Tekstgesprek | Standaard— |
Veldstream | Typeboolean | VereisteOptioneel | Waarden en limieten | Standaardfalse |
Combinaties van invoermaterialen
Tekst · UTF8-tekst
messages[].content
Methodeparameters en levenscyclus
| Parameter | Contract |
|---|---|
Parametercontent_type | Contractapplication/json |
Parameterrequired | Contractmodel, messages |
Parametermaterial_types | Contracttext |
Parametermessages | Contractberichtenarray met de structuur role/content |
Parameterfile_material | Contractwerkelijk UTF-8-document ingevoegd als letterlijke tekst; er wordt geen bestands-ID afgeleid |
Parameteroptional_controls | Contractstream |
Parametercontrol_scope | ContractTekstgesprek; stream is een booleaanse waarde en is standaard false. |
Parameteroutput_modalities | Contracttext |
Parameterhosted_operations | Contractfalse |
Parametermultimodal_input_binding | Contractnull |
Methodealiasnamen: /chat/completions
Levenscyclus: synchronous_or_streamed
Stuur het exacte model-ID mee met messages.
Contextlengte is geen uitvoerlimiet.
Een tekstbestand kan letterlijke tekst aanleveren; beeld-, audio- en bestandsobjectinvoer vereisen een exacte koppeling.
Tarieven
Tariefverwijzingen voegen geen verzoekopties toe. Ondersteunde parameters staan bij de geselecteerde methode.
- Snelle modus
- Niet opgegeven Wanneer de snelle modus is geselecteerd
- Flexmodus
- Niet opgegeven Wanneer de modus flex is geselecteerd
- Maximale redeneerinspanning
- Niet opgegeven Wanneer bij maximale redeneerinspanning de default-aanpassing wordt gebruikt
Ailoot-tarieven
Prijzen per configuratie
| Configuratie | Tariefstaffel | Kosten |
|---|---|---|
| ConfiguratieBasistarieven voor tokens | TariefstaffelBasistarief | Kosten Invoer · Invoertokens $0.028 / 1K tokens Uitvoer · Uitvoertokens $0.028 / 1K tokens Invoer · Cache lezen $0 / 1K tokens Invoer · Cache schrijven $0 / 1K tokens Invoer · Cache schrijven, 1 uur — / 1K tokens |
Ailoot reserveert vóór een verzoek een geschat bedrag. Na het resultaat worden de uiteindelijke kosten afgerekend op basis van het gemeten verbruik. Bij streaming gebeurt de afrekening op basis van de definitieve verbruiksregistratie. Zo werken reservering en afrekening →
Voorbeeldverzoeken
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"))
Resultaten ophalen en opslaan
Ailoot Ultra · OpenAI Chat
json of SSE
Alle voltooide resultaten bewaren
Bewaar elk volledig teruggegeven antwoord, bestand en inhoudsonderdeel.
Bewaar elke keuze en de bijbehorende inhoud, toolaanroepen en redeneringen. Voeg in SSE delta’s samen per keuze-/toolindex en bewaar de uiteindelijke reden van beëindiging en de verbruiksgegevens.
Als het oorspronkelijke antwoord moet worden gecontroleerd
Bewaar aanvraag-/antwoord-ID’s en headers. Er wordt geen algemene URL meegeleverd om teksttaken op te halen.
Antwoordvelden
| Veld | Type |
|---|---|
Veldchoices[].index | Typeinteger |
Veldchoices[].message.content | Typestring|null |
Veldchoices[].message.tool_calls | Typetool_call[] |
Veldchoices[].message.reasoning_content | Typestring |
Veldchoices[].message.reasoning_details | Typeobject|array |
Veldchoices[].finish_reason | Typestring|null |
Veldusage | Typeobject |
Fouten en vervolgstappen
| Antwoord | Voorwaarde | Volgende stap |
|---|---|---|
Antwoord400 · invalid_request_error | VoorwaardeVerplichte velden, de materiaalrepresentatie of een parameterwaarde zijn ongeldig | Volgende stapCorrigeer de aangegeven velden vóór een nieuwe aanmaakaanvraag. |
Aliasnamen
Modelaliasnamen
Ailoot Ultra codegeex-4
Aliasnamen voor methodepaden
/chat/completions
Gerelateerde aanroeper-ID’s
Ailoot Ultra · Anthropic Messages POST /v1/messages codegeex-4
codegeex-4Aan de slag
CodeGeeX4 is een meertalige familie van programmeermodellen voor codegeneratie, aanvulling, uitleg, herstel en vragen over repositories. De eigen handleidingen behandelen taakspecifieke prompts, het invullen van gaten tussen bestaande code en het gebruik van gerelateerde bestanden om wijzigingen met expliciete bestandspaden voor te bereiden.
- Toegestane invoer
- Tekst
- Resultaten
- json · sse
Beschikbaar in Ailoot · invoer en methoden
Ailoot Ultra · Anthropic Messages POST /v1/messages
- Invoertypen
text- Uitvoertypen
json,sse- Uitvoerformaat
- JSON of SSE
| Veld | Type | Vereiste | Waarden en limieten | Standaard |
|---|---|---|---|---|
Veldmodel | Typestring | VereisteVereist | Waarden en limieten codegeex-4 | Standaard— |
Veldmessages | Typemessage[] | VereisteVereist | Waarden en limieten | Standaard— |
Veldmessages[].role | Typestring | VereisteVereist | Waarden en limieten user, assistant | Standaard— |
Veldmessages[].content | Typestring | VereisteVereist | Waarden en limieten | Standaard— |
Veldmax_tokens | Typeinteger | VereisteVereist | Waarden en limieten | Standaard— |
Veldstream | Typeboolean | VereisteOptioneel | Waarden en limieten | Standaardfalse |
Combinaties van invoermaterialen
Tekst · UTF-8-tekst
messages[].content als tekenreeks
Methodeparameters en levenscyclus
| Parameter | Contract |
|---|---|
Parametercontent_type | Contractapplication/json |
Parameterrequired | Contractmodel, messages, max_tokens |
Parameteroptional_controls | Contractstream |
Parametermaterial_types | Contracttext |
Parametertext_file_material | ContractLees het werkelijke UTF-8-document en plaats de tekst ervan in de aangegeven invoer of in de inhoudstekenreeks van een bericht. |
Levenscyclus: synchronous_or_streamed
Tarieven
Tariefverwijzingen voegen geen verzoekopties toe. Ondersteunde parameters staan bij de geselecteerde methode.
- Snelle modus
- Niet opgegeven Wanneer de snelle modus is geselecteerd
- Flexmodus
- Niet opgegeven Wanneer de modus flex is geselecteerd
- Maximale redeneerinspanning
- Niet opgegeven Wanneer bij maximale redeneerinspanning de default-aanpassing wordt gebruikt
Ailoot-tarieven
Prijzen per configuratie
| Configuratie | Tariefstaffel | Kosten |
|---|---|---|
| ConfiguratieBasistarieven voor tokens | TariefstaffelBasistarief | Kosten Invoer · Invoertokens $0.028 / 1K tokens Uitvoer · Uitvoertokens $0.028 / 1K tokens Invoer · Cache lezen $0 / 1K tokens Invoer · Cache schrijven $0 / 1K tokens Invoer · Cache schrijven, 1 uur — / 1K tokens |
Ailoot reserveert vóór een verzoek een geschat bedrag. Na het resultaat worden de uiteindelijke kosten afgerekend op basis van het gemeten verbruik. Bij streaming gebeurt de afrekening op basis van de definitieve verbruiksregistratie. Zo werken reservering en afrekening →
Voorbeeldverzoeken
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))
Resultaten ophalen en opslaan
Ailoot Ultra · Anthropic Messages
JSON of SSE
Alle voltooide resultaten bewaren
Bewaar elk volledig teruggegeven antwoord, bestand en inhoudsonderdeel.
Bewaar alle inhoudsblokken, handtekeningen van redeneringen en werkelijke toolgebruik-ID’s. Voeg alle SSE-blokdelta’s samen; het eerste tekstblok is niet de volledige uitvoer.
Als het oorspronkelijke antwoord moet worden gecontroleerd
Bewaar aanvraag-/antwoord-ID’s en headers. Er wordt geen algemene URL meegeleverd om teksttaken op te halen.
Antwoordvelden
| Veld | Type |
|---|---|
Veldid | Typestring |
Veldmodel | Typestring |
Veldcontent[] | Typetext|thinking|tool_use|other content block |
Veldstop_reason | Typestring|null |
Veldusage | Typeobject |
Fouten en vervolgstappen
| Antwoord | Voorwaarde | Volgende stap |
|---|---|---|
Antwoord400 · invalid_request_error | VoorwaardeVerplichte velden, de materiaalrepresentatie of een parameterwaarde zijn ongeldig | Volgende stapCorrigeer de aangegeven velden vóór een nieuwe aanmaakaanvraag. |
Aliasnamen
Modelaliasnamen
Ailoot Ultra codegeex-4
Aliasnamen voor methodepaden
/chat/completions
Gerelateerde aanroeper-ID’s
FAQ · CodeGeeX-4
- Welke invoer en resultaten zijn beschikbaar?
POST /v1/chat/completions·codegeex-4:text→textPOST /v1/messages·codegeex-4:text→json,sse- Welke velden gebruikt het verzoek?
POST /v1/chat/completions·codegeex-4:model,messages,streamPOST /v1/messages·codegeex-4:model,messages,max_tokens,stream- Welke limieten gelden?
POST /v1/chat/completions·codegeex-4:messages.min_items:1