models

CodeGeeX-4

Markdown · JSON

CodeGeeX-4

CodeGeeX4 — семейство многоязычных моделей программирования для генерации, дополнения, объяснения и исправления кода, а также вопросов по репозиторию. Собственные руководства охватывают промпты для отдельных задач, заполнение пропусков между существующими частями кода и подготовку изменений по связанным файлам с явными путями.

О модели

Описание раскрывает возможности модели. Доступные в Ailoot входные данные, результаты и параметры выбранного метода перечислены ниже.

CodeGeeX4 — семейство многоязычных моделей программирования для помощи с кодом и работы со связанными исходными файлами. Разработчик публикует CodeGeeX4-ALL-9B как открытого представителя серии, созданного дальнейшим обучением GLM-4-9B. Документация охватывает генерацию и дополнение кода, вопросы по программированию, анализ репозитория и подключённые процессы с интерпретатором кода, веб-поиском или вызовами функций. Обычный вывод — текст: код, объяснения, ответы или изменения с метками файлов согласно инструкции задачи.

Начните с выбора операции и предоставления нужного кода. Собственное руководство по системным промптам содержит отдельные инструкции для добавления комментариев, объяснения программы, перевода между языками программирования, проверки или исправления кода, генерации тестов и ответов на вопросы о файле. Для исправления включите проблемный код, наблюдаемое поведение и желаемый результат. Для перевода укажите целевой язык программирования и предоставьте всю соответствующую функцию. Для комментариев инструкция разработчика сохраняет код и добавляет комментарии; для ряда задач создания кода она требует только код. Эти различия помогают получить пригодный программный артефакт или объяснение, не оставляя формат вывода подразумеваемым.

Руководства предлагают системные промпты на китайском и английском. Язык системной инструкции сам по себе не определяет язык ответа, поэтому явно запрашивайте язык, когда нужно объяснение. Специализированное руководство по проверке описывает вывод на китайском; общий промпт помощника по программированию предоставляет отдельный способ запросить проверку на другом языке ответа. Некоторые шаблоны задач задают язык комментариев по исходному материалу и исключают смешение китайского и английского. В продолжающейся беседе повторяйте нужную инструкцию при смене операции, чтобы запрос объяснения не смешивался с предыдущим требованием выводить только код.

Для контекстного дополнения собственный формат описывает целевой файл, его язык программирования и код с обеих сторон точки вставки. Используйте относительный путь файла с ###PATH: и включите ###LANGUAGE:; руководство разрешает пустое значение языка, если он неизвестен. ###MODE: выбирает LINE для однострочного дополнения или BLOCK для нескольких строк; документированное значение по умолчанию — BLOCK. Последовательность заполнения середины: сначала суффикс, затем префикс, затем недостающая середина с маркерами <|code_suffix|>, <|code_prefix|> и <|code_middle|>. Шаблон заполнения разработчика опускает системный промпт. Сохранение суффикса даёт модели окружающий поток управления и код, который должен остаться после вставки. Результат — предлагаемый недостающий код, который затем можно проверить на исходном месте.

Межфайловое дополнение добавляет связанные фрагменты как справочные материалы, каждый с маркером ###REFERENCE: и собственным ###PATH:. Отделяйте эти ссылки от целевого файла и точки вставки. Например, дополняя функцию, вызывающую существующий вспомогательный метод, предоставьте сигнатуру и реализацию этого метода вместе с префиксом и суффиксом целевой функции. Руководство по дополнению на уровне проекта расширяет подход до генерации нового файла по требованиям проекта и релевантному существующему коду. Понятные пути и отобранные зависимости позволяют отличить код-доказательство от файла, который модель должна дополнить.

Для вопросов по репозиторию используется другой собственный формат: перечислите каждый файл под ###PATH:, включите его код, затем задайте вопрос. Полезный запрос может спрашивать, где определено значение или как вызов проходит между предоставленными модулями. Редактирование репозитория использует собственную системную инструкцию для добавления, удаления или изменения файлов и требует вывод в виде ###PATH: {PATH}, за которым следует код. Подготовьте нужные файлы и опишите изменение, включая файл для добавления или поведение для сохранения. Рассматривайте возвращённые блоки с путями как предлагаемые изменения; они не доказывают, что репозиторий уже изменён или код запущен.

Для опубликованной CodeGeeX4-ALL-9B разработчик документирует контекст 128K и рекомендует отбирать релевантное содержимое репозитория, если проект превышает это окно. Поиск связанных фрагментов и сокращение слишком больших входных данных — подготовительные шаги руководства по репозиторию. Контекст должен вмещать инструкции, переданный код и сгенерированное продолжение, поэтому целевой набор файлов часто полезнее неразобранной выгрузки проекта. Пример настроек генерации разработчика управляет длиной конкретного запуска; он не определяет универсальную максимальную длину ответа для каждой версии CodeGeeX4.

Серия также описывает подключённые процессы программирования с интерпретаторами, поиском и вызовами функций. Для такого процесса приложение должно предоставлять указанные инструменты и возвращать их результаты в беседу. Запрашивая исполняемый код, укажите целевой язык, зависимости и ожидаемое поведение; запрашивая анализ — нужные ссылки на файлы или функции. Компилируйте или запускайте предлагаемые изменения в целевой среде и проверяйте поведение по заданному требованию перед включением в проект.

Ailoot Ultra · Чат OpenAI POST /v1/chat/completions codegeex-4

codegeex-4

Zhipu /codegeex-4

Начало

CodeGeeX4 — семейство многоязычных моделей программирования для генерации, дополнения, объяснения и исправления кода, а также вопросов по репозиторию. Собственные руководства охватывают промпты для отдельных задач, заполнение пропусков между существующими частями кода и подготовку изменений по связанным файлам с явными путями.

Допустимые входные данные
Текст
Результаты
Текст

Доступно в Ailoot · входные данные и методы

Ailoot Ultra · Чат OpenAI POST /v1/chat/completions
Входные данные
text
Результат
text
Выходной формат
json или SSE
ПолеТипТребованиеЗначения и ограниченияПо умолчанию
ПолеmodelТипstringТребованиеОбязательноЗначения и ограничения
codegeex-4
По умолчанию—
ПолеmessagesТипmessage[]ТребованиеОбязательноЗначения и ограничения
Минимум элементов: 1
По умолчанию—
Полеmessages[].roleТипstringТребованиеОбязательноЗначения и ограничения
Зависит от модели
По умолчанию—
Полеmessages[].contentТипstringТребованиеНеобязательноЗначения и ограничения
Применяется, когда: Текстовая беседа
По умолчанию—
ПолеstreamТипbooleanТребованиеНеобязательноЗначения и ограниченияПо умолчаниюfalse
Сочетания входных материалов

Текст · Текст UTF8

messages[].content

Параметры и жизненный цикл метода
ПараметрКонтракт
Параметрcontent_typeКонтрактapplication/json
ПараметрrequiredКонтрактmodel, messages
Параметрmaterial_typesКонтрактtext
ПараметрmessagesКонтрактмассив сообщений со структурой role/content
Параметрfile_materialКонтрактфактический документ UTF-8 вставляется как буквальный текст; ID файла не выводится из него
Параметрoptional_controlsКонтрактstream
Параметрcontrol_scopeКонтрактТекстовая беседа; stream — логическое значение, по умолчанию false.
Параметрoutput_modalitiesКонтрактtext
Параметрhosted_operationsКонтрактfalse
Параметрmultimodal_input_bindingКонтрактnull

Псевдонимы метода: /chat/completions

Жизненный цикл: synchronous_or_streamed

Отправляйте точный ID модели вместе с messages.

Длина контекста не является пределом выхода.

Текстовый файл может передавать буквальный текст; входные изображения, аудио и файловые объекты требуют точной привязки.

Тарифы

Тарифная справка не добавляет режимы запроса. Поддерживаемые параметры указаны для выбранного метода.

Быстрый режим
Не указано При выборе быстрого режима
Режим flex
Не указано При выборе режима flex
Максимальная интенсивность рассуждений
Не указано При максимальной интенсивности рассуждений с корректировкой по умолчанию (default)

Ставки Ailoot

Цены по конфигурациям

КонфигурацияШкала ставокПлата
КонфигурацияБазовые ставки за токеныШкала ставокБазовая ставкаПлата
Вход · Входные токены $0.028 / 1K токенов
Выход · Выходные токены $0.028 / 1K токенов
Вход · Чтение кэша $0 / 1K токенов
Вход · Запись в кэш $0 / 1K токенов
Вход · Запись в кэш, 1 час — / 1K токенов

Ailoot резервирует расчётную сумму перед запросом. После получения результата списывает итоговую плату по измеренному расходу. Для окончательного списания за потоковый ответ используется итоговая запись расхода. Как работают резервирование и расчёт →

Примеры запросов

Ailoot Ultra · Чат OpenAI

curlPython SDK
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"))

Получить и сохранить результаты

Ailoot Ultra · Чат OpenAI

json или SSE

Сохраняйте все готовые результаты

Сохраняйте каждый полностью полученный ответ, файл и элемент содержимого.

Сохраняйте каждый вариант ответа с его содержимым, вызовами инструментов и рассуждениями. В SSE собирайте изменения по индексам варианта и инструмента, сохраняйте итоговую причину завершения и данные использования.

Если нужно проверить исходный ответ

Сохраняйте ID запросов и ответов, а также заголовки. Общий URL получения текстового задания не предоставлен.

Поля ответа
ПолеТип
Полеchoices[].indexТипinteger
Полеchoices[].message.contentТипstring|null
Полеchoices[].message.tool_callsТипtool_call[]
Полеchoices[].message.reasoning_contentТипstring
Полеchoices[].message.reasoning_detailsТипobject|array
Полеchoices[].finish_reasonТипstring|null
ПолеusageТипobject
Ошибки и дальнейшие шаги
ОтветУсловиеСледующий шаг
Ответ400 · invalid_request_errorУсловиеНеверные обязательные поля, представление материалов или значение параметраСледующий шагИсправьте указанные поля перед новым запросом на создание.

Псевдонимы

Псевдонимы моделей

Ailoot Ultra codegeex-4

Псевдонимы путей метода

/chat/completions

Связанные ID для вызова

codegeex-4

Ailoot Ultra · Сообщения Anthropic POST /v1/messages codegeex-4

codegeex-4

Zhipu /codegeex-4

Начало

CodeGeeX4 — семейство многоязычных моделей программирования для генерации, дополнения, объяснения и исправления кода, а также вопросов по репозиторию. Собственные руководства охватывают промпты для отдельных задач, заполнение пропусков между существующими частями кода и подготовку изменений по связанным файлам с явными путями.

Допустимые входные данные
Текст
Результаты
json · sse

Доступно в Ailoot · входные данные и методы

Ailoot Ultra · Сообщения Anthropic POST /v1/messages
Входные данные
text
Результат
json, sse
Выходной формат
JSON или SSE
ПолеТипТребованиеЗначения и ограниченияПо умолчанию
ПолеmodelТипstringТребованиеОбязательноЗначения и ограничения
codegeex-4
По умолчанию—
ПолеmessagesТипmessage[]ТребованиеОбязательноЗначения и ограниченияПо умолчанию—
Полеmessages[].roleТипstringТребованиеОбязательноЗначения и ограничения
user, assistant
По умолчанию—
Полеmessages[].contentТипstringТребованиеОбязательноЗначения и ограниченияПо умолчанию—
Полеmax_tokensТипintegerТребованиеОбязательноЗначения и ограниченияПо умолчанию—
ПолеstreamТипbooleanТребованиеНеобязательноЗначения и ограниченияПо умолчаниюfalse
Сочетания входных материалов

Текст · Текст UTF-8

строка messages[].content

Параметры и жизненный цикл метода
ПараметрКонтракт
Параметрcontent_typeКонтрактapplication/json
ПараметрrequiredКонтрактmodel, messages, max_tokens
Параметрoptional_controlsКонтрактstream
Параметрmaterial_typesКонтрактtext
Параметрtext_file_materialКонтрактПрочитайте фактический документ UTF-8 и поместите его текст в указанную строку входа или содержимого сообщения.

Жизненный цикл: synchronous_or_streamed

Тарифы

Тарифная справка не добавляет режимы запроса. Поддерживаемые параметры указаны для выбранного метода.

Быстрый режим
Не указано При выборе быстрого режима
Режим flex
Не указано При выборе режима flex
Максимальная интенсивность рассуждений
Не указано При максимальной интенсивности рассуждений с корректировкой по умолчанию (default)

Ставки Ailoot

Цены по конфигурациям

КонфигурацияШкала ставокПлата
КонфигурацияБазовые ставки за токеныШкала ставокБазовая ставкаПлата
Вход · Входные токены $0.028 / 1K токенов
Выход · Выходные токены $0.028 / 1K токенов
Вход · Чтение кэша $0 / 1K токенов
Вход · Запись в кэш $0 / 1K токенов
Вход · Запись в кэш, 1 час — / 1K токенов

Ailoot резервирует расчётную сумму перед запросом. После получения результата списывает итоговую плату по измеренному расходу. Для окончательного списания за потоковый ответ используется итоговая запись расхода. Как работают резервирование и расчёт →

Примеры запросов

Ailoot Ultra · Сообщения Anthropic

Полное минимальное тело запроса в формате JSONcurl · используйте свой документ UTF-8Python · сохраните полный результат
{
  "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))

Получить и сохранить результаты

Ailoot Ultra · Сообщения Anthropic

JSON или SSE

Сохраняйте все готовые результаты

Сохраняйте каждый полностью полученный ответ, файл и элемент содержимого.

Сохраняйте все блоки содержимого, подписи рассуждений и фактические ID обращений к инструментам. Собирайте все изменения блоков SSE; первый текстовый блок не является полным выходом.

Если нужно проверить исходный ответ

Сохраняйте ID запросов и ответов, а также заголовки. Общий URL получения текстового задания не предоставлен.

Поля ответа
ПолеТип
ПолеidТипstring
ПолеmodelТипstring
Полеcontent[]Типtext|thinking|tool_use|other content block
Полеstop_reasonТипstring|null
ПолеusageТипobject
Ошибки и дальнейшие шаги
ОтветУсловиеСледующий шаг
Ответ400 · invalid_request_errorУсловиеНеверные обязательные поля, представление материалов или значение параметраСледующий шагИсправьте указанные поля перед новым запросом на создание.

Псевдонимы

Псевдонимы моделей

Ailoot Ultra codegeex-4

Псевдонимы путей метода

/chat/completions

Связанные ID для вызова

codegeex-4

FAQ · CodeGeeX-4
Какие входные данные и результаты доступны?

POST /v1/chat/completions · codegeex-4: text → text

POST /v1/messages · codegeex-4: text → json, sse

Какие поля использует запрос?

POST /v1/chat/completions · codegeex-4: model, messages, stream

POST /v1/messages · codegeex-4: model, messages, max_tokens, stream

Какие ограничения действуют?

POST /v1/chat/completions · codegeex-4: messages.min_items: 1

Подробнее

Подключите Ailoot к Claude Code, OpenCode, Hermes или своему приложению.

Компания и портфель её проектов

Компания и портфель её проектов: миллионы клиентов; продажи на миллиарды ежемесячно.

Покупайте токены со скидкой.

Скидка по подписке для регулярной работы. Промокоды — до 50% на покупку токенов.

Подписка
Выберите тариф со скидкой для своих регулярных запросов.
Промокод до 50%
Введите код при покупке. Цена пересчитается с учётом действующей акции.
Расходы в истории
Модель, токены и сумма сохраняются для каждого запроса.

Выбрать подписку · Посмотреть цены моделей

Подключайте API к продукту, который вы продаёте.

SaaS, приложения и боты — по оферте и лицензионному договору Ailoot. Для перепродажи запросите реселлерскую лицензию.

Коммерческое приложение
Встраивайте генерацию текста, картинок, видео и звука в платные функции своего сервиса.
Лицензия для реселлера
Пришлите описание проекта и схему доступа. Запросите письменные условия использования и перепродажи.
Документы на сайте
Оферта, лицензионный договор и политика обработки данных доступны до подключения.

Запросить реселлерскую лицензию · Оферта и лицензионный договор