CodeGeeX-4
A CodeGeeX4 többnyelvű kódolási modellcsalád kódgeneráláshoz, kiegészítéshez, magyarázathoz, javításhoz és kódtárral kapcsolatos kérdésekhez. Natív útmutatói feladatspecifikus utasításokat, meglévő kódrészletek közötti hiányok kitöltését és kapcsolódó fájlok használatát fedik le, kifejezett fájlútvonalakkal készített módosításokhoz.
- Ailoot Ultra · OpenAI Chat
POST /v1/chat/completionscodegeex-4 - Ailoot Ultra · Anthropic Messages
POST /v1/messagescodegeex-4
A modellről
Ez a leírás a modell képességeit ismerteti. Az Ailootban elérhető bemenetek, kimenetek és lehetőségek alább, a kiválasztott metódusnál láthatók.
A CodeGeeX4 többnyelvű kódolási modellcsalád, amely a programozási segítségre és az összefüggő forrásfájlokon végzett munkára épül. A gyártó a CodeGeeX4-ALL-9B-t a sorozat nyílt forrású tagjaként teszi közzé, a GLM-4-9B továbbtanításával fejlesztve. Dokumentációja kódgenerálást és kiegészítést, programozási kérdéseket, kódtárelemzést és kódértelmezőt, webes keresést vagy függvényhívásokat használó csatlakoztatott munkafolyamatokat fed le. A szokásos kimenet szöveg: kód, magyarázat, válasz vagy fájlcímkékkel ellátott módosítás, a feladatutasítás szerint.
Először válassza ki a műveletet, és adja meg a modellnek a szükséges kódot. A natív rendszerutasítás-útmutató külön utasításokat tartalmaz kommentek hozzáadására, program magyarázatára, programnyelvek közötti fordításra, kód felülvizsgálatára vagy javítására, tesztgenerálásra és fájlra vonatkozó kérdések megválaszolására. Javításhoz mellékelje a hibás kódot, a megfigyelt viselkedést és a kívánt eredményt. Fordításnál adja meg a célprogramnyelvet és a teljes releváns függvényt. Kommentelésnél a gyártó feladatutasítása megőrzi a kódot és kommenteket ad hozzá; több kódot előállító feladatnál kizárólag kódot kér. Ezek a különbségek segítenek abban, hogy az eredmény használható kódanyag vagy magyarázat legyen, és a kimeneti formátum ne maradjon kimondatlan.
Az útmutatók kínai és angol rendszerutasításokat adnak. A rendszerutasítás nyelve önmagában nem határozza meg a válasz nyelvét, ezért magyarázat kérésekor kifejezetten adja meg a válasznyelvet. A specializált felülvizsgálati útmutató kínai kimenetet ír le; az általános programozási asszisztensutasítás külön lehetőséget ad más válasznyelvű felülvizsgálat kérésére. Egyes feladatsablonok a komment nyelvét a forráshoz igazítják, és kizárják a vegyes kínai és angol kimenetet. Folyamatos beszélgetésben műveletváltáskor ismételje meg a releváns feladatutasítást, hogy a magyarázatkérés ne keveredjen az előző, kizárólag kódot kérő utasítással.
Kontextusalapú kiegészítéshez a natív formátum leírja a célfájlt, a programnyelvét és a beszúrási pont mindkét oldalán található kódot. A relatív fájlútvonalat a ###PATH: jelöléssel használja, és adja meg a ###LANGUAGE: mezőt; az útmutató megengedi az üres nyelvértéket, ha a nyelv ismeretlen. A ###MODE: mező LINE értéke egysoros, BLOCK értéke többsoros kiegészítést választ, a dokumentált alapértelmezés a BLOCK. A középső rész kitöltésének sorrendje először az utótag, majd az előtag, végül a hiányzó középső rész, a <|code_suffix|>, <|code_prefix|> és <|code_middle|> jelölésekkel. A gyártó kitöltési sablonja kihagyja a rendszerutasítást. Az utótag megtartása megmutatja a modellnek a környező vezérlési folyamatot és a beszúrás után megmaradó kódot. Az eredmény a javasolt hiányzó kód, amely az eredeti helyén ellenőrizhető.
A fájlok közötti kiegészítés kapcsolódó részleteket ad hozzá referenciaanyagként, mindegyiket ###REFERENCE: jelöléssel és saját ###PATH: mezővel bevezetve. E referenciákat tartsa külön a célfájltól és annak beszúrási pontjától. Például meglévő segédfüggvényt hívó függvény kiegészítésekor adja meg a segéd aláírását és megvalósítását a célfüggvény elő- és utótagja mellett. A projektszintű kiegészítési útmutató ezt a megközelítést új fájl generálására terjeszti ki a projektkövetelményekből és a releváns meglévő kódból. Az egyértelmű útvonalak és kiválasztott függőségek lehetővé teszik a bizonyítékként megadott kód megkülönböztetését attól a fájltól, amelyet a modellnek ki kell egészítenie.
A kódtárra vonatkozó kérdések eltérő natív elrendezést használnak: sorolja fel az egyes fájlokat ###PATH: alatt, mellékelje a kódjukat, majd tegye fel a kérdést. Hasznos feladatleírás rákérdezhet arra, hol definiálnak egy értéket vagy hogyan halad egy hívás a megadott modulok között. A kódtár szerkesztése saját rendszerutasítást használ fájlok hozzáadásához, törléséhez vagy módosításához, és ###PATH: {PATH}, majd kód formájú kimenetet kér. Készítse elő a releváns fájlokat, és írja le a szükséges változtatást, beleértve a hozzáadandó fájlt vagy a megőrzendő viselkedést. A visszaadott, útvonallal jelölt blokkokat javasolt módosításokként olvassa; nem bizonyítják, hogy egy kódtár már módosult vagy a kód lefutott.
A közzétett CodeGeeX4-ALL-9B taghoz a gyártó 128K kontextust dokumentál, és a releváns kódtártartalom kiválasztását ajánlja, ha a projekt meghaladja ezt az ablakot. A kapcsolódó részletek visszakeresése és a túlméretes bemenetek rövidítése a kódtár-útmutató előkészítési lépései. A kontextusnak az utasításokat, a megadott kódot és a generált folytatást is be kell fogadnia, ezért a célzott fájlkészlet gyakran hasznosabb, mint a teljes projekt válogatás nélküli bemásolása. A gyártó példabeli generálási beállításai egy adott futás hosszát szabályozzák; nem határoznak meg egyetemes maximális válaszhosszt minden CodeGeeX4 kiadáshoz.
A sorozat értelmezőkkel, kereséssel és függvényhívásokkal összekapcsolt programozási munkafolyamatokat is leír. Az ilyen munkafolyamathoz a környező alkalmazásnak biztosítania kell a megnevezett eszközöket és vissza kell adnia eredményeiket a beszélgetésbe. Futtatható kód kérésekor adja meg a célzott nyelvet, függőségeket és elvárt viselkedést; elemzés kérésekor a releváns fájl- vagy függvényhivatkozásokat kérje. A javasolt módosításokat fordítsa le vagy futtassa a tervezett környezetben, és ellenőrizze a viselkedést a megadott követelmény alapján, mielőtt beépítené a projektbe.
Ailoot Ultra · OpenAI Chat POST /v1/chat/completions codegeex-4
codegeex-4Kezdő lépések
A CodeGeeX4 többnyelvű kódolási modellcsalád kódgeneráláshoz, kiegészítéshez, magyarázathoz, javításhoz és kódtárral kapcsolatos kérdésekhez. Natív útmutatói feladatspecifikus utasításokat, meglévő kódrészletek közötti hiányok kitöltését és kapcsolódó fájlok használatát fedik le, kifejezett fájlútvonalakkal készített módosításokhoz.
- Elfogadott bemenetek
- Szöveg
- Eredmények
- Szöveg
Elérhető az Ailootban · bemenetek és metódusok
Ailoot Ultra · OpenAI Chat POST /v1/chat/completions
- Bemenet
text- Kimenet
text- Kimeneti formátum
- json vagy SSE
| Mező | Típus | Követelmény | Értékek és korlátok | Alapértelmezett |
|---|---|---|---|---|
Mezőmodel | Típusstring | KövetelményKötelező | Értékek és korlátok codegeex-4 | Alapértelmezett— |
Mezőmessages | Típusmessage[] | KövetelményKötelező | Értékek és korlátok Minimális elemszám: 1 | Alapértelmezett— |
Mezőmessages[].role | Típusstring | KövetelményKötelező | Értékek és korlátok Modelltől függ | Alapértelmezett— |
Mezőmessages[].content | Típusstring | KövetelményOpcionális | Értékek és korlátok Akkor alkalmazandó, ha: Szöveges beszélgetés | Alapértelmezett— |
Mezőstream | Típusboolean | KövetelményOpcionális | Értékek és korlátok | Alapértelmezettfalse |
Bemeneti anyagok kombinációi
Szöveg · UTF8 szöveg
messages[].content
Metódus paraméterei és életciklusa
| Paraméter | Szerződés |
|---|---|
Paramétercontent_type | Szerződésapplication/json |
Paraméterrequired | Szerződésmodel, messages |
Paramétermaterial_types | Szerződéstext |
Paramétermessages | Szerződésüzenettömb role/content szerkezettel |
Paraméterfile_material | Szerződésa tényleges UTF-8 dokumentum szó szerinti szövegként beillesztve; nincs kikövetkeztetett fájlazonosító |
Paraméteroptional_controls | Szerződésstream |
Paramétercontrol_scope | SzerződésSzöveges beszélgetés; a stream logikai érték, alapértéke false. |
Paraméteroutput_modalities | Szerződéstext |
Paraméterhosted_operations | Szerződésfalse |
Paramétermultimodal_input_binding | Szerződésnull |
Metódus álnevei: /chat/completions
Életciklus: synchronous_or_streamed
Küldje el a pontos modellazonosítót a messages mellett.
A kontextushossz nem kimeneti felső korlát.
Egy szövegfájl szó szerinti szöveget adhat meg; a kép-/hang-/fájlobjektum-bemenetek pontos hozzárendelést igényelnek.
Díjcsomagok
A díjszabás nem ad új kérési lehetőségeket. A támogatott paraméterek a kiválasztott módszernél szerepelnek.
- Gyors mód
- Nincs megadva Ha a gyors mód van kiválasztva
- Flex mód
- Nincs megadva Ha a flex mód van kiválasztva
- Maximális gondolkodási ráfordítás
- Nincs megadva Ha a maximális gondolkodási ráfordításra a default beállításhoz tartozó korrekció vonatkozik
Ailoot-díjak
Árak beállításonként
| Beállítás | Díjtáblázat | Díj |
|---|---|---|
| BeállításTokenenkénti alapárak | DíjtáblázatAlapdíj | Díj Bemenet · Bemeneti tokenek $0.028 / 1K token Kimenet · Kimeneti tokenek $0.028 / 1K token Bemenet · Gyorsítótár olvasása $0 / 1K token Bemenet · Írás a gyorsítótárba $0 / 1K token Bemenet · Írás a gyorsítótárba, 1 óra — / 1K token |
Az Ailoot a kérés előtt becsült összeget foglal le. Az eredmény után a mért használat alapján elszámolja a végső díjat. Folyamatos átvitel esetén a végső használati rekordot használja. A foglalás és az elszámolás működése →
Példakérések
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"))
Eredmények fogadása és mentése
Ailoot Ultra · OpenAI Chat
json vagy SSE
Őrizzen meg minden elkészült eredményt
Őrizzen meg minden teljes visszaadott választ, fájlt és tartalomrészt.
Őrizze meg az összes válaszváltozatot és azok tartalmát/eszközhívásait/gondolkodási tartalmát. SSE esetén válaszváltozat- és eszközindex szerint állítsa össze a részleges frissítéseket, és tartsa meg a végső befejezési okot és a használati adatokat.
Ha az eredeti választ ellenőrizni kell
Őrizze meg a kérés-/válaszazonosítókat és a fejléceket. Nincs megadva általános URL a szöveges feladatok lekéréséhez.
Válaszmezők
| Mező | Típus |
|---|---|
Mezőchoices[].index | Típusinteger |
Mezőchoices[].message.content | Típusstring|null |
Mezőchoices[].message.tool_calls | Típustool_call[] |
Mezőchoices[].message.reasoning_content | Típusstring |
Mezőchoices[].message.reasoning_details | Típusobject|array |
Mezőchoices[].finish_reason | Típusstring|null |
Mezőusage | Típusobject |
Hibák és következő lépések
| Válasz | Feltétel | Következő lépés |
|---|---|---|
Válasz400 · invalid_request_error | FeltételÉrvénytelen kötelező mezők, az anyag érvénytelen reprezentációja vagy érvénytelen paraméterérték | Következő lépésJavítsa a jelzett mezőket egy új létrehozási kérés előtt. |
Álnevek
Modell álnevei
Ailoot Ultra codegeex-4
Metódusútvonalak álnevei
/chat/completions
Kapcsolódó modellazonosítók
Ailoot Ultra · Anthropic Messages POST /v1/messages codegeex-4
codegeex-4Kezdő lépések
A CodeGeeX4 többnyelvű kódolási modellcsalád kódgeneráláshoz, kiegészítéshez, magyarázathoz, javításhoz és kódtárral kapcsolatos kérdésekhez. Natív útmutatói feladatspecifikus utasításokat, meglévő kódrészletek közötti hiányok kitöltését és kapcsolódó fájlok használatát fedik le, kifejezett fájlútvonalakkal készített módosításokhoz.
- Elfogadott bemenetek
- Szöveg
- Eredmények
- json · sse
Elérhető az Ailootban · bemenetek és metódusok
Ailoot Ultra · Anthropic Messages POST /v1/messages
- Bemenet
text- Kimenet
json,sse- Kimeneti formátum
- JSON vagy SSE
| Mező | Típus | Követelmény | Értékek és korlátok | Alapértelmezett |
|---|---|---|---|---|
Mezőmodel | Típusstring | KövetelményKötelező | Értékek és korlátok codegeex-4 | Alapértelmezett— |
Mezőmessages | Típusmessage[] | KövetelményKötelező | Értékek és korlátok | Alapértelmezett— |
Mezőmessages[].role | Típusstring | KövetelményKötelező | Értékek és korlátok user, assistant | Alapértelmezett— |
Mezőmessages[].content | Típusstring | KövetelményKötelező | Értékek és korlátok | Alapértelmezett— |
Mezőmax_tokens | Típusinteger | KövetelményKötelező | Értékek és korlátok | Alapértelmezett— |
Mezőstream | Típusboolean | KövetelményOpcionális | Értékek és korlátok | Alapértelmezettfalse |
Bemeneti anyagok kombinációi
Szöveg · UTF-8 szöveg
messages[].content karakterlánc
Metódus paraméterei és életciklusa
| Paraméter | Szerződés |
|---|---|
Paramétercontent_type | Szerződésapplication/json |
Paraméterrequired | Szerződésmodel, messages, max_tokens |
Paraméteroptional_controls | Szerződésstream |
Paramétermaterial_types | Szerződéstext |
Paramétertext_file_material | SzerződésOlvassa el a tényleges UTF-8 dokumentumot, és tegye a szövegét a jelzett bemeneti karakterláncba vagy az üzenettartalom karakterláncába. |
Életciklus: synchronous_or_streamed
Díjcsomagok
A díjszabás nem ad új kérési lehetőségeket. A támogatott paraméterek a kiválasztott módszernél szerepelnek.
- Gyors mód
- Nincs megadva Ha a gyors mód van kiválasztva
- Flex mód
- Nincs megadva Ha a flex mód van kiválasztva
- Maximális gondolkodási ráfordítás
- Nincs megadva Ha a maximális gondolkodási ráfordításra a default beállításhoz tartozó korrekció vonatkozik
Ailoot-díjak
Árak beállításonként
| Beállítás | Díjtáblázat | Díj |
|---|---|---|
| BeállításTokenenkénti alapárak | DíjtáblázatAlapdíj | Díj Bemenet · Bemeneti tokenek $0.028 / 1K token Kimenet · Kimeneti tokenek $0.028 / 1K token Bemenet · Gyorsítótár olvasása $0 / 1K token Bemenet · Írás a gyorsítótárba $0 / 1K token Bemenet · Írás a gyorsítótárba, 1 óra — / 1K token |
Az Ailoot a kérés előtt becsült összeget foglal le. Az eredmény után a mért használat alapján elszámolja a végső díjat. Folyamatos átvitel esetén a végső használati rekordot használja. A foglalás és az elszámolás működése →
Példakérések
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))
Eredmények fogadása és mentése
Ailoot Ultra · Anthropic Messages
JSON vagy SSE
Őrizzen meg minden elkészült eredményt
Őrizzen meg minden teljes visszaadott választ, fájlt és tartalomrészt.
Őrizze meg az összes tartalomblokkot, a gondolkodási tartalom aláírásait és a tényleges eszközhasználati ID-kat. Állítsa össze az összes SSE-blokk részleges frissítését; az első szövegblokk nem a teljes kimenet.
Ha az eredeti választ ellenőrizni kell
Őrizze meg a kérés-/válaszazonosítókat és a fejléceket. Nincs megadva általános URL a szöveges feladatok lekéréséhez.
Válaszmezők
| Mező | Típus |
|---|---|
Mezőid | Típusstring |
Mezőmodel | Típusstring |
Mezőcontent[] | Típustext|thinking|tool_use|other content block |
Mezőstop_reason | Típusstring|null |
Mezőusage | Típusobject |
Hibák és következő lépések
| Válasz | Feltétel | Következő lépés |
|---|---|---|
Válasz400 · invalid_request_error | FeltételÉrvénytelen kötelező mezők, az anyag érvénytelen reprezentációja vagy érvénytelen paraméterérték | Következő lépésJavítsa a jelzett mezőket egy új létrehozási kérés előtt. |
Álnevek
Modell álnevei
Ailoot Ultra codegeex-4
Metódusútvonalak álnevei
/chat/completions
Kapcsolódó modellazonosítók
FAQ · CodeGeeX-4
- Milyen bemenetek és eredmények érhetők el?
POST /v1/chat/completions·codegeex-4:text→textPOST /v1/messages·codegeex-4:text→json,sse- Mely mezőket használja a kérés?
POST /v1/chat/completions·codegeex-4:model,messages,streamPOST /v1/messages·codegeex-4:model,messages,max_tokens,stream- Milyen korlátok érvényesek?
POST /v1/chat/completions·codegeex-4:messages.min_items:1