CodeGeeX-4
CodeGeeX4 je rodina vícejazyčných programátorských modelů pro generování, doplňování, vysvětlování a opravy kódu i otázky k repozitáři. Nativní příručky zahrnují zadání specifická pro úlohu, doplňování mezer ve stávajícím kódu a využití souvisejících souborů při přípravě změn s výslovnými cestami k souborům.
- Ailoot Ultra · OpenAI Chat
POST /v1/chat/completionscodegeex-4 - Ailoot Ultra · Anthropic Messages
POST /v1/messagescodegeex-4
O modelu
Tento popis zahrnuje schopnosti modelu. Vstupy, výstupy a možnosti dostupné v Ailoot jsou uvedeny níže pro vybranou metodu.
CodeGeeX4 je rodina vícejazyčných programátorských modelů zaměřená na asistenci při programování a práci napříč souvisejícími zdrojovými soubory. Výrobce zveřejňuje CodeGeeX4-ALL-9B jako člena série s otevřeným zdrojovým kódem, vyvinutého pokračujícím trénováním GLM-4-9B. Dokumentace zahrnuje generování a doplňování kódu, programátorské otázky, analýzu repozitáře a propojené postupy zahrnující interpret kódu, webové vyhledávání nebo volání funkcí. Běžným výstupem je text: kód, vysvětlení, odpovědi nebo změny označené soubory podle instrukce úlohy.
Začněte volbou operace a dodejte modelu potřebný kód. Nativní průvodce systémovým zadáním obsahuje samostatné instrukce pro přidávání komentářů, vysvětlování programu, překlad mezi programovacími jazyky, kontrolu či opravu kódu, generování testů a odpovídání na otázky k souboru. U opravy zahrňte chybující kód, pozorované chování a zamýšlený výsledek. U překladu určete cílový programovací jazyk a dodejte celou relevantní funkci. U komentářů instrukce výrobce zachovává kód a přidává komentáře; u několika úloh vytvářejících kód požaduje pouze kód. Tyto rozdíly pomáhají vytvořit použitelný kódový výstup nebo vysvětlení místo ponechání formátu výstupu nevysloveného.
Příručky poskytují čínská a anglická systémová zadání. Jazyk systémové instrukce sám neurčuje jazyk odpovědi, proto při potřebě vysvětlení výslovně požadujte jazyk odpovědi. Specializované pokyny pro kontrolu popisují čínský výstup; obecné zadání programátorského asistenta nabízí samostatný způsob, jak žádat kontrolu v jiném jazyce odpovědi. Některé šablony úloh nastavují jazyk komentářů podle zdroje a vylučují smíšený čínský a anglický výstup. Při pokračující konverzaci zopakujte příslušnou instrukci při změně operace, aby se požadavek na vysvětlení nezaměnil s předchozím požadavkem na výstup obsahující pouze kód.
Pro doplňování podle kontextu nativní formát popisuje cílový soubor, jeho programovací jazyk a kód na obou stranách místa vložení. Použijte relativní cestu k souboru s ###PATH: a zahrňte ###LANGUAGE:; průvodce umožňuje prázdnou hodnotu jazyka, pokud není znám. ###MODE: volí LINE pro doplnění jednoho řádku nebo BLOCK pro několik řádků; zdokumentovanou výchozí hodnotou je BLOCK. Sekvence doplňování středu uvádí nejprve suffix, potom prefix a nakonec chybějící prostředek, označené <|code_suffix|>, <|code_prefix|> a <|code_middle|>. Šablona doplňování výrobce vynechává systémové zadání. Zachování suffixu dává modelu okolní tok řízení a kód, který musí po vložení zůstat. Výsledkem je navržený chybějící kód, který pak lze ověřit na původním místě.
Doplňování napříč soubory přidává související úryvky jako referenční materiál, každý uvedený pomocí ###REFERENCE: a vlastního ###PATH:. Tyto reference oddělujte od cílového souboru a jeho místa vložení. Například při doplňování funkce volající existující pomocnou funkci dodejte signaturu a implementaci pomocné funkce vedle prefixu a suffixu cílové funkce. Průvodce doplňováním na úrovni projektu rozšiřuje tento přístup na generování nového souboru podle požadavků projektu a relevantního existujícího kódu. Jasné cesty a vybrané závislosti umožňují odlišit kód dodaný jako důkaz od souboru, který má model doplnit.
Otázky k repozitáři používají jiné nativní uspořádání: každý soubor uveďte pod ###PATH:, vložte jeho kód a poté položte otázku. Užitečné zadání se může ptát, kde je definována hodnota nebo jak volání přechází mezi dodanými moduly. Úpravy repozitáře používají vlastní systémovou instrukci pro přidání, odstranění či změnu souborů a požadují výstup ve tvaru ###PATH: {PATH} následovaný kódem. Připravte relevantní soubory a popište požadovanou změnu včetně souboru, který se má přidat, nebo chování, které se má zachovat. Vrácené bloky označené cestami čtěte jako navržené změny; nedokládají, že repozitář už byl upraven nebo že kód běžel.
U zveřejněného člena CodeGeeX4-ALL-9B výrobce dokumentuje kontext 128K a doporučuje vybírat relevantní obsah repozitáře, pokud projekt toto okno přesahuje. Vyhledání souvisejících úryvků a zkracování příliš velkých vstupů jsou přípravnými kroky v průvodci repozitářem. Kontext musí pojmout instrukce, dodaný kód a vygenerované pokračování, proto cílená sada souborů bývá užitečnější než nerozlišený výpis projektu. Ukázková nastavení generování výrobce řídí délku konkrétního běhu; nedefinují univerzální maximální délku odpovědi pro každou variantu CodeGeeX4.
Série popisuje také propojené programátorské postupy s interprety, vyhledáváním a voláním funkcí. Takový postup vyžaduje, aby okolní aplikace poskytla pojmenované nástroje a vrátila jejich výsledky do konverzace. Při požadavku na spustitelný kód určete zamýšlený jazyk, závislosti a očekávané chování; u analýzy žádejte odkazy na příslušné soubory nebo funkce. Před začleněním do projektu navržené změny zkompilujte nebo spusťte v zamýšleném prostředí a zkontrolujte chování podle dodaného požadavku.
Ailoot Ultra · OpenAI Chat POST /v1/chat/completions codegeex-4
codegeex-4Úvod
CodeGeeX4 je rodina vícejazyčných programátorských modelů pro generování, doplňování, vysvětlování a opravy kódu i otázky k repozitáři. Nativní příručky zahrnují zadání specifická pro úlohu, doplňování mezer ve stávajícím kódu a využití souvisejících souborů při přípravě změn s výslovnými cestami k souborům.
- Přijímané vstupy
- Text
- Výsledky
- Text
Dostupné v Ailoot · vstupy a metody
Ailoot Ultra · OpenAI Chat POST /v1/chat/completions
- Vstup
text- Výstup
text- Výstupní formát
- json nebo SSE
| Pole | Typ | Požadavek | Hodnoty a limity | Výchozí |
|---|---|---|---|---|
Polemodel | Typstring | PožadavekPovinné | Hodnoty a limity codegeex-4 | Výchozí— |
Polemessages | Typmessage[] | PožadavekPovinné | Hodnoty a limity Minimální počet položek: 1 | Výchozí— |
Polemessages[].role | Typstring | PožadavekPovinné | Hodnoty a limity Závisí na modelu | Výchozí— |
Polemessages[].content | Typstring | PožadavekVolitelné | Hodnoty a limity Platí, když: Textová konverzace | Výchozí— |
Polestream | Typboolean | PožadavekVolitelné | Hodnoty a limity | Výchozífalse |
Kombinace vstupních materiálů
Text · text UTF8
messages[].content
Parametry a životní cyklus metody
| Parametr | Kontrakt |
|---|---|
Parametrcontent_type | Kontraktapplication/json |
Parametrrequired | Kontraktmodel, messages |
Parametrmaterial_types | Kontrakttext |
Parametrmessages | Kontraktpole zpráv se strukturou role/content |
Parametrfile_material | Kontraktskutečný dokument UTF-8 vložený jako doslovný text; ID souboru se neodvozuje |
Parametroptional_controls | Kontraktstream |
Parametrcontrol_scope | KontraktTextová konverzace; stream je booleovská hodnota a ve výchozím nastavení je false. |
Parametroutput_modalities | Kontrakttext |
Parametrhosted_operations | Kontraktfalse |
Parametrmultimodal_input_binding | Kontraktnull |
Aliasy metody: /chat/completions
Životní cyklus: synchronous_or_streamed
Odešlete přesné ID modelu spolu s messages.
Délka kontextu není limitem výstupu.
Textový soubor může dodat doslovný text; obrazové/zvukové vstupy a vstupy v podobě souborových objektů vyžadují přesnou vazbu.
Tarify
Údaje o tarifech nepřidávají možnosti požadavku. Podporované parametry jsou uvedeny u vybrané metody.
- Rychlý režim
- Neuvedeno Při výběru rychlého režimu
- Režim flex
- Neuvedeno Při výběru režimu flex
- Maximální intenzita uvažování
- Neuvedeno Když se při maximální intenzitě uvažování použije výchozí úprava (default)
Sazby Ailoot
Ceny podle konfigurace
| Konfigurace | Tabulka sazeb | Poplatek |
|---|---|---|
| KonfiguraceZákladní sazby za tokeny | Tabulka sazebZákladní sazba | Poplatek Vstup · Vstupní tokeny $0.028 / 1K tokenů Výstup · Výstupní tokeny $0.028 / 1K tokenů Vstup · Čtení z mezipaměti $0 / 1K tokenů Vstup · Zápis do mezipaměti $0 / 1K tokenů Vstup · Zápis do mezipaměti, 1 hodina — / 1K tokenů |
Ailoot před požadavkem rezervuje odhadovanou částku. Po výsledku vyúčtuje konečný poplatek podle naměřeného využití. Při streamování se účtování řídí konečným záznamem využití. Jak funguje rezervace a vyúčtování →
Příklady požadavků
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"))
Přijímání a ukládání výsledků
Ailoot Ultra · OpenAI Chat
json nebo SSE
Uchovejte všechny dokončené výsledky
Uchovejte každou úplnou vrácenou odpověď, soubor i část obsahu.
Zachovejte každou volbu a její obsah/volání nástrojů/uvažování. V SSE sestavujte přírůstky podle indexu volby/nástroje a zachovejte konečný důvod ukončení i údaje o využití.
Pokud je nutné ověřit původní odpověď
Zachovejte ID požadavků/odpovědí a hlavičky. Není dodána obecná URL pro načtení textové úlohy.
Pole odpovědi
| Pole | Typ |
|---|---|
Polechoices[].index | Typinteger |
Polechoices[].message.content | Typstring|null |
Polechoices[].message.tool_calls | Typtool_call[] |
Polechoices[].message.reasoning_content | Typstring |
Polechoices[].message.reasoning_details | Typobject|array |
Polechoices[].finish_reason | Typstring|null |
Poleusage | Typobject |
Chyby a další kroky
| Odpověď | Podmínka | Další krok |
|---|---|---|
Odpověď400 · invalid_request_error | PodmínkaNeplatná povinná pole, reprezentace podkladů nebo hodnota parametru | Další krokPřed novým požadavkem na vytvoření opravte uvedená pole. |
Aliasy
Aliasy modelu
Ailoot Ultra codegeex-4
Aliasy cest metod
/chat/completions
Související ID modelů
Ailoot Ultra · Anthropic Messages POST /v1/messages codegeex-4
codegeex-4Úvod
CodeGeeX4 je rodina vícejazyčných programátorských modelů pro generování, doplňování, vysvětlování a opravy kódu i otázky k repozitáři. Nativní příručky zahrnují zadání specifická pro úlohu, doplňování mezer ve stávajícím kódu a využití souvisejících souborů při přípravě změn s výslovnými cestami k souborům.
- Přijímané vstupy
- Text
- Výsledky
- json · sse
Dostupné v Ailoot · vstupy a metody
Ailoot Ultra · Anthropic Messages POST /v1/messages
- Vstup
text- Výstup
json,sse- Výstupní formát
- JSON nebo SSE
| Pole | Typ | Požadavek | Hodnoty a limity | Výchozí |
|---|---|---|---|---|
Polemodel | Typstring | PožadavekPovinné | Hodnoty a limity codegeex-4 | Výchozí— |
Polemessages | Typmessage[] | PožadavekPovinné | Hodnoty a limity | Výchozí— |
Polemessages[].role | Typstring | PožadavekPovinné | Hodnoty a limity user, assistant | Výchozí— |
Polemessages[].content | Typstring | PožadavekPovinné | Hodnoty a limity | Výchozí— |
Polemax_tokens | Typinteger | PožadavekPovinné | Hodnoty a limity | Výchozí— |
Polestream | Typboolean | PožadavekVolitelné | Hodnoty a limity | Výchozífalse |
Kombinace vstupních materiálů
Text · text UTF-8
řetězec messages[].content
Parametry a životní cyklus metody
| Parametr | Kontrakt |
|---|---|
Parametrcontent_type | Kontraktapplication/json |
Parametrrequired | Kontraktmodel, messages, max_tokens |
Parametroptional_controls | Kontraktstream |
Parametrmaterial_types | Kontrakttext |
Parametrtext_file_material | KontraktPřečtěte skutečný dokument UTF-8 a vložte jeho text do uvedeného pole input nebo do řetězce obsahu zprávy. |
Životní cyklus: synchronous_or_streamed
Tarify
Údaje o tarifech nepřidávají možnosti požadavku. Podporované parametry jsou uvedeny u vybrané metody.
- Rychlý režim
- Neuvedeno Při výběru rychlého režimu
- Režim flex
- Neuvedeno Při výběru režimu flex
- Maximální intenzita uvažování
- Neuvedeno Když se při maximální intenzitě uvažování použije výchozí úprava (default)
Sazby Ailoot
Ceny podle konfigurace
| Konfigurace | Tabulka sazeb | Poplatek |
|---|---|---|
| KonfiguraceZákladní sazby za tokeny | Tabulka sazebZákladní sazba | Poplatek Vstup · Vstupní tokeny $0.028 / 1K tokenů Výstup · Výstupní tokeny $0.028 / 1K tokenů Vstup · Čtení z mezipaměti $0 / 1K tokenů Vstup · Zápis do mezipaměti $0 / 1K tokenů Vstup · Zápis do mezipaměti, 1 hodina — / 1K tokenů |
Ailoot před požadavkem rezervuje odhadovanou částku. Po výsledku vyúčtuje konečný poplatek podle naměřeného využití. Při streamování se účtování řídí konečným záznamem využití. Jak funguje rezervace a vyúčtování →
Příklady požadavků
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))
Přijímání a ukládání výsledků
Ailoot Ultra · Anthropic Messages
JSON nebo SSE
Uchovejte všechny dokončené výsledky
Uchovejte každou úplnou vrácenou odpověď, soubor i část obsahu.
Zachovejte všechny bloky obsahu, podpisy uvažování a skutečná ID použití nástrojů. Sestavte všechny přírůstky bloků SSE; první textový blok není úplný výstup.
Pokud je nutné ověřit původní odpověď
Zachovejte ID požadavků/odpovědí a hlavičky. Není dodána obecná URL pro načtení textové úlohy.
Pole odpovědi
| Pole | Typ |
|---|---|
Poleid | Typstring |
Polemodel | Typstring |
Polecontent[] | Typtext|thinking|tool_use|other content block |
Polestop_reason | Typstring|null |
Poleusage | Typobject |
Chyby a další kroky
| Odpověď | Podmínka | Další krok |
|---|---|---|
Odpověď400 · invalid_request_error | PodmínkaNeplatná povinná pole, reprezentace podkladů nebo hodnota parametru | Další krokPřed novým požadavkem na vytvoření opravte uvedená pole. |
Aliasy
Aliasy modelu
Ailoot Ultra codegeex-4
Aliasy cest metod
/chat/completions
Související ID modelů
FAQ · CodeGeeX-4
- Jaké vstupy a výsledky jsou dostupné?
POST /v1/chat/completions·codegeex-4:text→textPOST /v1/messages·codegeex-4:text→json,sse- Jaká pole požadavek používá?
POST /v1/chat/completions·codegeex-4:model,messages,streamPOST /v1/messages·codegeex-4:model,messages,max_tokens,stream- Jaké limity platí?
POST /v1/chat/completions·codegeex-4:messages.min_items:1