OpenAI: GPT-6 Luna Pro
GPT-6 Luna z rozumowaniem Pro do ukierunkowanych zadań wymagających dodatkowej analizy przed odpowiedzią końcową. Model bazowy przyjmuje tekst i obrazy, dzięki czemu przydaje się do przetwarzania dokumentów według reguł, pytań o obrazy i zwięzłych wyników pisemnych.
- Ailoot Ultra · OpenAI Chat
POST /v1/chat/completionsopenai/gpt-6-luna-pro - Ailoot Ultra · Anthropic Messages
POST /v1/messagesopenai/gpt-6-luna-pro - Ailoot Ultra · OpenAI Responses
POST /v1/responsesopenai/gpt-6-luna-pro
O modelu
Ten opis przedstawia możliwości modelu. Dane wejściowe, wyniki i opcje dostępne w Ailoot podano poniżej dla wybranej metody.
GPT-6 Luna Pro oznacza model GPT-6 Luna firmy OpenAI z rozumowaniem Pro. Luna jest przeznaczona do ukierunkowanych zadań i dużej liczby operacji; na wejściu przyjmuje tekst i obrazy, a na wyjściu zwraca tekst. Pro oznacza dodatkową pracę modelu podczas opracowywania odpowiedzi końcowej. Jest trybem wykonania zastosowanym do wybranego modelu bazowego, odrębnym od ustawienia nakładu na rozumowanie, które określa ilość analizy w tym trybie.
Praktycznym zastosowaniem jest przetworzenie ściśle określonego żądania z kilkoma regułami lub wyjątkami. Dostarcz żądanie, kategorie, do których może należeć, i informacje decydujące o następnym działaniu. Poproś o kategorię, istotne fakty i krótką propozycję odpowiedzi. Przykładowe zadanie polega na sklasyfikowaniu prośby o dokument, wskazaniu brakującego pola i przygotowaniu wiadomości z pytaniem o to pole. Zadanie zachowuje wąski zakres nawet wtedy, gdy jego warunki wymagają starannego rozważenia.
W pytaniu opartym na obrazie dostarcz czytelny zrzut ekranu lub inny materiał wizualny i wskaż szczegół do sprawdzenia. Możesz poprosić o wyjaśnienie widocznego stanu interfejsu wraz z krótką instrukcją dla czytelnika. W materiale pisemnym określ pola lub stwierdzenia, które muszą przetrwać przekształcenie, dopuszczalne kategorie i oczekiwany format odpowiedzi. Niewielki zestaw reprezentatywnych przykładów może wyjaśnić granicę między podobnymi kategoriami bez zmuszania modelu do wywnioskowania reguł.
OpenAI określa dla GPT-6 Luna okno kontekstu 1 050 000 tokenów, maksymalne wejście 922 000 tokenów i maksymalne wyjście 128 000 tokenów. Udokumentowana granica wiedzy to 18 maja 2026. Model bazowy obsługuje poziomy nakładu na rozumowanie none, low, medium, high, xhigh i max; domyślny jest medium. Rozumowanie zajmuje miejsce w tokenach tak samo jak odpowiedź końcowa, więc opis zadania i dostarczony materiał powinny zostawiać przestrzeń na analizę i żądany wynik.
Producent dokumentuje Pro w interfejsie Responses API do trudnych żądań, które dopuszczają dodatkowy czas oczekiwania i aktywność modelu. Wbudowane narzędzia modelu GPT-6 Luna i rozumowanie z wywołaniami funkcji korzystają z Responses; w interfejsie Chat Completions producenta wywoływanie funkcji jest obsługiwane tylko przy nakładzie na rozumowanie ustawionym na none. Model bazowy wymienia strumieniowanie, Structured Outputs, wyszukiwanie w sieci i plikach, wywoływanie funkcji i buforowanie treści wejściowych. Jego zestaw narzędzi obejmuje też generowanie obrazów, interpretację kodu, operacje powłoki i nakładania poprawek, umiejętności, korzystanie z komputera, połączenia MCP i wyszukiwanie narzędzi. Aplikacja określa i wykonuje udostępniane przez siebie operacje.
Użyj precyzyjnego kontraktu wyjścia dla końcowego zadania: decyzji, pól, które ją wspierają, i wszelkich nadal brakujących informacji. Możesz na przykład poprosić o jedną kategorię, krótkie uzasadnienie powiązane z podaną regułą i następne pytanie do czytelnika. Sprawdź wynik względem tych reguł, zamiast dodawać nieograniczoną dyskusję. Taki przebieg korzysta z roli modelu Luna w ukierunkowanych zadaniach, zachowując dodatkową pracę Pro dla żądania, którego zależności lub wyjątki wymagają dokładniejszego zbadania.
Zadanie praktyczne
Zadanie praktyczne
Przykład techniczny po angielsku
Find missing request details
Process this equipment request using the supplied rules. Every request needs item, quantity and delivery site. Urgent requests also need a reason. Message: "Urgent: please send 4 replacement keyboards." Return the supplied fields, missing required fields and a brief reply asking only for the missing details. Do not invent a site or urgency reason.Oczekiwany wynik
A compact field table, missing-field list and targeted clarification message.Sprawdź wynik
Check that quantity four and keyboards are retained, while delivery site and urgent reason stay missing.Ailoot Ultra · OpenAI Chat POST /v1/chat/completions openai/gpt-6-luna-pro
openai/gpt-6-luna-proStart
GPT-6 Luna z rozumowaniem Pro do ukierunkowanych zadań wymagających dodatkowej analizy przed odpowiedzią końcową. Model bazowy przyjmuje tekst i obrazy, dzięki czemu przydaje się do przetwarzania dokumentów według reguł, pytań o obrazy i zwięzłych wyników pisemnych.
- Akceptowane dane wejściowe
- Tekst
- Wyniki
- Tekst
Dostępne w Ailoot · dane wejściowe i metody
Ailoot Ultra · OpenAI Chat POST /v1/chat/completions
- Wejście
text- Wyjście
text- Format wyjściowy
- json lub SSE
| Pole | Typ | Wymaganie | Wartości i limity | Domyślnie |
|---|---|---|---|---|
Polemodel | Typstring | WymaganieWymagane | Wartości i limity openai/gpt-6-luna-pro | Domyślnie— |
Polemessages | Typmessage[] | WymaganieWymagane | Wartości i limity Minimalna liczba elementów: 1 | Domyślnie— |
Polemessages[].role | Typstring | WymaganieWymagane | Wartości i limity Przykłady: system, user, assistant, tool, function Warunki: Te role są jawnie reprezentowane przez typy zgodności w kodzie źródłowym; dokładny zestaw ról pozostaje właściwy dla danego modelu. Zależy od modelu | Domyślnie— |
Polemessages[].content | Typstring|content_part[]|null | WymaganieOpcjonalne | Wartości i limity | Domyślnie— |
Polemessages[].tool_calls | Typtool_call[] | WymaganieOpcjonalne | Wartości i limity | Domyślnie— |
Polemessages[].tool_call_id | Typstring | WymaganieOpcjonalne | Wartości i limity Obowiązuje, gdy: role=tool; użyj rzeczywiście zwróconego ID | Domyślnie— |
Polemessages[].name | Typstring | WymaganieOpcjonalne | Wartości i limity | Domyślnie— |
Polemessages[].reasoning_content | Typstring | WymaganieOpcjonalne | Wartości i limity Obowiązuje, gdy: Przekazuj z powrotem rzeczywiście zwróconą treść rozumowania, gdy ten model jej używa | Domyślnie— |
Polemessages[].reasoning_details | Typobject|array | WymaganieOpcjonalne | Wartości i limity Zależy od modelu | Domyślnie— |
Polemax_tokens | Typinteger | WymaganieOpcjonalne | Wartości i limity Minimum: 1 Zależy od modelu | Domyślnie— |
Polemax_completion_tokens | Typinteger | WymaganieOpcjonalne | Wartości i limity Minimum: 1 Zależy od modelu | Domyślnie— |
Polestream | Typboolean | WymaganieOpcjonalne | Wartości i limity | Domyślniefalse |
Polestream_options.include_usage | Typboolean | WymaganieOpcjonalne | Wartości i limity Zależy od modelu | Domyślnie— |
Poletemperature | Typnumber | WymaganieOpcjonalne | Wartości i limity Zależy od modelu | Domyślnie— |
Poletop_p | Typnumber | WymaganieOpcjonalne | Wartości i limity Zależy od modelu | Domyślnie— |
Polestop | Typstring|string[] | WymaganieOpcjonalne | Wartości i limity Zależy od modelu | Domyślnie— |
Poletools | Typfunction_tool[] | WymaganieOpcjonalne | Wartości i limity Zależy od modelu | Domyślnie— |
Poletools[].type | Typstring | WymaganieOpcjonalne | Wartości i limity function Zależy od modelu | Domyślnie— |
Poletools[].function.name | Typstring | WymaganieWymagane | Wartości i limity Obowiązuje, gdy: udostępnione narzędzie funkcji | Domyślnie— |
Poletools[].function.description | Typstring | WymaganieOpcjonalne | Wartości i limity | Domyślnie— |
Poletools[].function.parameters | TypJSON_schema | WymaganieOpcjonalne | Wartości i limity | Domyślnie— |
Poletool_choice | Typstring|object | WymaganieOpcjonalne | Wartości i limity Zależy od modelu | Domyślnie— |
Poleparallel_tool_calls | Typboolean | WymaganieOpcjonalne | Wartości i limity Zależy od modelu | Domyślnie— |
Poleresponse_format | Typobject | WymaganieOpcjonalne | Wartości i limity Zależy od modelu | Domyślnie— |
Polereasoning_effort | Typstring | WymaganieOpcjonalne | Wartości i limity Zależy od modelu | Domyślnie— |
Polereasoning | Typobject | WymaganieOpcjonalne | Wartości i limity Zależy od modelu | Domyślnie— |
Poleservice_tier | Typstring | WymaganieOpcjonalne | Wartości i limity Zależy od modelu | Domyślnie— |
Poleinstructions | Typstring | WymaganieOpcjonalne | Wartości i limity Pole zgodności | Domyślnie— |
Polefunctions | Typfunction[] | WymaganieOpcjonalne | Wartości i limity Zależy od modelu | Domyślnie— |
Polefunction_call | Typstring|object | WymaganieOpcjonalne | Wartości i limity Zależy od modelu | Domyślnie— |
Poleprompt_cache_options | Typobject | WymaganieOpcjonalne | Wartości i limity Zależy od modelu | Domyślnie— |
Polemodalities | Typstring[] | WymaganieOpcjonalne | Wartości i limity text | Domyślnie— |
Poleprovider | Typobject | WymaganieOpcjonalne | Wartości i limity Warunki: provider.options jest odrzucane na tej tekstowej trasie Ultra | Domyślnie— |
Polecache_control.ttl | Typstring | WymaganieOpcjonalne | Wartości i limity Warunki: 1h jest odrzucane w rzeczywistych miejscach pamięci podręcznej promptów | Domyślnie— |
Kombinacje materiałów wejściowych
Tekst · tekst UTF8
messages[].content
Parametry i cykl życia metody
| Parametr | Kontrakt |
|---|---|
Parametrcontent_type | Kontraktapplication/json |
Parametrrequired | Kontraktmodel, messages |
Parametrmaterial_types | Kontrakttext |
Parametrmessages | Kontrakttablica wiadomości o strukturze role/content |
Parametrfile_material | Kontraktrzeczywisty dokument UTF-8 wstawiony jako dosłowny tekst; bez wywnioskowanego ID pliku |
Parametroptional_controls | Kontraktstream, temperature, top_p, stop, max_tokens, max_completion_tokens, reasoning, response_format, tools, tool_choice |
Parametrcontrol_scope | Kontraktwłaściwe dla modelu; narzędzia funkcji użytkownika różnią się od narzędzi hostowanych |
Parametroutput_modalities | Kontrakttext |
Parametrhosted_operations | Kontraktfalse |
Parametrmultimodal_input_binding | Kontraktnull |
Cykl życia: synchronous_or_streamed
Wyślij dokładne ID modelu wraz z messages.
Długość kontekstu nie jest limitem wyjścia.
Plik tekstowy może dostarczyć dosłowny tekst; wejścia obrazowe/dźwiękowe/obiekty plików wymagają dokładnego powiązania.
Cennik
Informacje taryfowe nie dodają opcji żądania. Obsługiwane parametry podano przy wybranej metodzie.
- Tryb szybki
- Stawka standardowa Gdy wybrany jest tryb szybki
- Tryb flex
- Stawka standardowa Gdy wybrany jest tryb flex
- Maksymalna intensywność rozumowania
- Stawka standardowa Gdy dla maksymalnej intensywności rozumowania stosowana jest domyślna korekta (default)
- Intensywność rozumowania · high
- Stawka standardowa Gdy intensywność rozumowania jest ustawiona na high
- Intensywność rozumowania · low
- Stawka standardowa Gdy intensywność rozumowania jest ustawiona na low
- Intensywność rozumowania · max
- Stawka standardowa Gdy intensywność rozumowania jest ustawiona na max
- Intensywność rozumowania · medium
- Stawka standardowa Gdy intensywność rozumowania jest ustawiona na medium
- Intensywność rozumowania · none
- Stawka standardowa Gdy intensywność rozumowania jest ustawiona na none
- Intensywność rozumowania · xhigh
- Stawka standardowa Gdy intensywność rozumowania jest ustawiona na xhigh
Stawki Ailoot
Ceny według konfiguracji
Dopasuj każdą opłatę do pokazanych warunków. Użyj jednej stawki dla każdego zestawu alternatywnych konfiguracji.
| Konfiguracja | Tabela stawek | Tokeny kontekstu, więcej niż | Tokeny kontekstu, do podanej wartości włącznie | Opłata |
|---|---|---|---|---|
| KonfiguracjaPodstawowe stawki za tokeny | Tabela stawekStawka podstawowa | Tokeny kontekstu, więcej niż— | Tokeny kontekstu, do podanej wartości włącznieBez górnej granicy | Opłata Wejście · Tokeny wejściowe $0.0002 / 1K tokenów Wyjście · Tokeny wyjściowe $0.001 / 1K tokenów Wejście · Odczyt cache $0.00002 / 1K tokenów Wejście · Zapis do cache $0.00025 / 1K tokenów Wejście · Zapis do cache, 1 godz. — / 1K tokenów |
| KonfiguracjaPrzedział długości żądania 1 | Tabela stawek— | Tokeny kontekstu, więcej niż0 | Tokeny kontekstu, do podanej wartości włącznie272 000 | Opłata Wejście · Tokeny wejściowe $0.0002 / 1K tokenów Wyjście · Tokeny wyjściowe $0.001 / 1K tokenów Wejście · Odczyt cache $0.00002 / 1K tokenów Wejście · Zapis do cache $0.00025 / 1K tokenów Wejście · Zapis do cache, 1 godz. — / 1K tokenów |
| KonfiguracjaPrzedział długości żądania 2 | Tabela stawek— | Tokeny kontekstu, więcej niż272 000 | Tokeny kontekstu, do podanej wartości włącznieBez górnej granicy | Opłata Wejście · Tokeny wejściowe $0.0004 / 1K tokenów Wyjście · Tokeny wyjściowe $0.0015 / 1K tokenów Wejście · Odczyt cache $0.00004 / 1K tokenów Wejście · Zapis do cache $0.0005 / 1K tokenów Wejście · Zapis do cache, 1 godz. — / 1K tokenów |
Ailoot rezerwuje szacowaną kwotę przed żądaniem. Po otrzymaniu wyniku rozlicza ostateczną opłatę według zmierzonego użycia. Rozliczenie strumieniowania korzysta z końcowego rekordu użycia. Jak działają rezerwacja i rozliczenie →
Przykładowe żądania
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": "openai/gpt-6-luna-pro", "messages": [{"role": "user", "content": "Explain the difference between an observation and a hypothesis in three sentences."}]}')
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='openai/gpt-6-luna-pro',messages=[{"role":"user","content":"Explain observations and hypotheses in three sentences."}])
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"))
from openai import OpenAI
import os
from pathlib import Path
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)
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))
with client.chat.completions.stream(model='openai/gpt-6-luna-pro',messages=[{"role":"user","content":"Explain observations and hypotheses in three sentences."}]) as stream:
with Path("stream-events.jsonl").open("w",encoding="utf-8") as log:
for event in stream:
payload=event.to_dict(mode="json")
log.write(json.dumps(payload,ensure_ascii=False)+"\n"); log.flush()
print(json.dumps(payload,ensure_ascii=False))
final=stream.get_final_completion()
save_result(final.to_dict(mode="json"),"stream-result")
Odbieranie i zapisywanie wyników
Ailoot Ultra · OpenAI Chat
json lub SSE
Zachowaj wszystkie ukończone wyniki
Zachowaj każdą kompletną zwróconą odpowiedź, plik i część treści.
Zachowaj każdy wariant i jego treść/wywołania narzędzi/rozumowanie. W SSE składaj przyrosty według indeksu wariantu/narzędzia, zachowując końcowy powód zakończenia i dane użycia.
Jeśli trzeba sprawdzić pierwotną odpowiedź
Zachowaj ID i nagłówki żądań/odpowiedzi. Nie udostępniono ogólnego URL pobierania zadania tekstowego.
Pola odpowiedzi
| 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 |
Błędy i dalsze kroki
| Odpowiedź | Warunek | Następny krok |
|---|---|---|
Odpowiedź400 · invalid_request_error | WarunekNieprawidłowe wymagane pola, sposób reprezentacji materiału lub wartość parametru | Następny krokPopraw wskazane pola przed nowym żądaniem utworzenia. |
Aliasy
Aliasy modelu
Ailoot Ultra openai/gpt-6-luna-pro
Aliasy ścieżek metod
Użyj ścieżek metod podanych powyżej.
Powiązane ID modeli
Ailoot Ultra · Anthropic Messages POST /v1/messages openai/gpt-6-luna-pro
openai/gpt-6-luna-proStart
GPT-6 Luna z rozumowaniem Pro do ukierunkowanych zadań wymagających dodatkowej analizy przed odpowiedzią końcową. Model bazowy przyjmuje tekst i obrazy, dzięki czemu przydaje się do przetwarzania dokumentów według reguł, pytań o obrazy i zwięzłych wyników pisemnych.
- Akceptowane dane wejściowe
- Tekst
- Wyniki
- Tekst
Dostępne w Ailoot · dane wejściowe i metody
Ailoot Ultra · Anthropic Messages POST /v1/messages
- Wejście
text- Wyjście
text- Format wyjściowy
- json lub SSE
| Pole | Typ | Wymaganie | Wartości i limity | Domyślnie |
|---|---|---|---|---|
Polemodel | Typstring | WymaganieWymagane | Wartości i limity openai/gpt-6-luna-pro | Domyślnie— |
Polemessages | Typmessage[] | WymaganieWymagane | Wartości i limity Minimalna liczba elementów: 1 | Domyślnie— |
Polemessages[].role | Typstring | WymaganieWymagane | Wartości i limity user, assistant | Domyślnie— |
Polemessages[].content | Typstring|content_block[] | WymaganieWymagane | Wartości i limity | Domyślnie— |
Polesystem | Typstring|content_block[] | WymaganieOpcjonalne | Wartości i limity | Domyślnie— |
Polemax_tokens | Typinteger | WymaganieWymagane | Wartości i limity Minimum: 1 Limit dotyczy: dokładny limit wybranego modelu/karty | Domyślnie— |
Polestream | Typboolean | WymaganieOpcjonalne | Wartości i limity | Domyślniefalse |
Poletemperature | Typnumber | WymaganieOpcjonalne | Wartości i limity Zależy od modelu | Domyślnie— |
Poletop_p | Typnumber | WymaganieOpcjonalne | Wartości i limity Zależy od modelu | Domyślnie— |
Polestop_sequences | Typstring[] | WymaganieOpcjonalne | Wartości i limity Zależy od modelu | Domyślnie— |
Poletools | Typtool[] | WymaganieOpcjonalne | Wartości i limity Zależy od modelu | Domyślnie— |
Poletools[].name | Typstring | WymaganieOpcjonalne | Wartości i limity Obowiązuje, gdy: udostępnione narzędzie | Domyślnie— |
Poletools[].description | Typstring | WymaganieOpcjonalne | Wartości i limity | Domyślnie— |
Poletools[].input_schema | TypJSON_schema | WymaganieOpcjonalne | Wartości i limity | Domyślnie— |
Poletool_choice | Typobject | WymaganieOpcjonalne | Wartości i limity Zależy od modelu | Domyślnie— |
Polethinking.type | Typstring | WymaganieOpcjonalne | Wartości i limity Zależy od modelu | Domyślnie— |
Polethinking.budget_tokens | Typinteger | WymaganieOpcjonalne | Wartości i limity Zależy od modelu | Domyślnie— |
Poleoutput_config.effort | Typstring | WymaganieOpcjonalne | Wartości i limity Zależy od modelu | Domyślnie— |
Polemetadata | Typobject | WymaganieOpcjonalne | Wartości i limity | Domyślnie— |
Polecache_control | Typobject | WymaganieOpcjonalne | Wartości i limity Zależy od modelu | Domyślnie— |
Kombinacje materiałów wejściowych
Tekst · tekst UTF8
messages[].content lub blok type=text
Tekst + obraz
{type:image,source:{type:base64,media_type,data}} lub źródło type=url
Parametry i cykl życia metody
| Parametr | Kontrakt |
|---|---|
Parametrmaterial_types | Kontrakttext |
Parametrrequired | Kontraktmodel, messages, max_tokens |
Parametroptional_controls | Kontraktnull |
Parametrcontent_type | Kontraktapplication/json |
Parametrtext_file_material | KontraktOdczytaj rzeczywisty dokument UTF-8 i umieść jego tekst we wskazanym polu input lub w ciągu treści wiadomości. |
Cykl życia: exact retained published method
Wyślij dokładny identyfikator modelu i wymagane pola.
Zachowaj każdy zwrócony element i jego pierwotne identyfikatory.
Cennik
Informacje taryfowe nie dodają opcji żądania. Obsługiwane parametry podano przy wybranej metodzie.
- Tryb szybki
- Stawka standardowa Gdy wybrany jest tryb szybki
- Tryb flex
- Stawka standardowa Gdy wybrany jest tryb flex
- Maksymalna intensywność rozumowania
- Stawka standardowa Gdy dla maksymalnej intensywności rozumowania stosowana jest domyślna korekta (default)
- Intensywność rozumowania · high
- Stawka standardowa Gdy intensywność rozumowania jest ustawiona na high
- Intensywność rozumowania · low
- Stawka standardowa Gdy intensywność rozumowania jest ustawiona na low
- Intensywność rozumowania · max
- Stawka standardowa Gdy intensywność rozumowania jest ustawiona na max
- Intensywność rozumowania · medium
- Stawka standardowa Gdy intensywność rozumowania jest ustawiona na medium
- Intensywność rozumowania · none
- Stawka standardowa Gdy intensywność rozumowania jest ustawiona na none
- Intensywność rozumowania · xhigh
- Stawka standardowa Gdy intensywność rozumowania jest ustawiona na xhigh
Stawki Ailoot
Ceny według konfiguracji
Dopasuj każdą opłatę do pokazanych warunków. Użyj jednej stawki dla każdego zestawu alternatywnych konfiguracji.
| Konfiguracja | Tabela stawek | Tokeny kontekstu, więcej niż | Tokeny kontekstu, do podanej wartości włącznie | Opłata |
|---|---|---|---|---|
| KonfiguracjaPodstawowe stawki za tokeny | Tabela stawekStawka podstawowa | Tokeny kontekstu, więcej niż— | Tokeny kontekstu, do podanej wartości włącznieBez górnej granicy | Opłata Wejście · Tokeny wejściowe $0.0002 / 1K tokenów Wyjście · Tokeny wyjściowe $0.001 / 1K tokenów Wejście · Odczyt cache $0.00002 / 1K tokenów Wejście · Zapis do cache $0.00025 / 1K tokenów Wejście · Zapis do cache, 1 godz. — / 1K tokenów |
| KonfiguracjaPrzedział długości żądania 1 | Tabela stawek— | Tokeny kontekstu, więcej niż0 | Tokeny kontekstu, do podanej wartości włącznie272 000 | Opłata Wejście · Tokeny wejściowe $0.0002 / 1K tokenów Wyjście · Tokeny wyjściowe $0.001 / 1K tokenów Wejście · Odczyt cache $0.00002 / 1K tokenów Wejście · Zapis do cache $0.00025 / 1K tokenów Wejście · Zapis do cache, 1 godz. — / 1K tokenów |
| KonfiguracjaPrzedział długości żądania 2 | Tabela stawek— | Tokeny kontekstu, więcej niż272 000 | Tokeny kontekstu, do podanej wartości włącznieBez górnej granicy | Opłata Wejście · Tokeny wejściowe $0.0004 / 1K tokenów Wyjście · Tokeny wyjściowe $0.0015 / 1K tokenów Wejście · Odczyt cache $0.00004 / 1K tokenów Wejście · Zapis do cache $0.0005 / 1K tokenów Wejście · Zapis do cache, 1 godz. — / 1K tokenów |
Ailoot rezerwuje szacowaną kwotę przed żądaniem. Po otrzymaniu wyniku rozlicza ostateczną opłatę według zmierzonego użycia. Rozliczenie strumieniowania korzysta z końcowego rekordu użycia. Jak działają rezerwacja i rozliczenie →
Przykładowe żądania
Ailoot Ultra · Anthropic Messages
{
"model": "openai/gpt-6-luna-pro",
"max_tokens": 4096,
"messages": [
{
"role": "user",
"content": "Summarize the incident report."
}
]
}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': 'openai/gpt-6-luna-pro', 'max_tokens': 4096, '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': 'openai/gpt-6-luna-pro', 'max_tokens': 4096, '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))
Odbieranie i zapisywanie wyników
Ailoot Ultra · Anthropic Messages
json lub SSE
Zachowaj wszystkie ukończone wyniki
Zachowaj każdą kompletną zwróconą odpowiedź, plik i część treści.
Zachowaj wszystkie bloki treści, sygnatury myślenia i rzeczywiste ID użycia narzędzi. Złóż wszystkie przyrosty bloków SSE; pierwszy blok tekstowy nie jest pełnym wyjściem.
Jeśli trzeba sprawdzić pierwotną odpowiedź
Zachowaj ID i nagłówki żądań/odpowiedzi. Nie udostępniono ogólnego URL pobierania zadania tekstowego.
Pola odpowiedzi
| Pole | Typ |
|---|---|
Poleid | Typstring |
Polemodel | Typstring |
Polecontent[] | Typtext|thinking|tool_use|other content block |
Polestop_reason | Typstring|null |
Poleusage | Typobject |
Błędy i dalsze kroki
| Odpowiedź | Warunek | Następny krok |
|---|---|---|
Odpowiedź400 · invalid_request_error | WarunekNieprawidłowe wymagane pola, sposób reprezentacji materiału lub wartość parametru | Następny krokPopraw wskazane pola przed nowym żądaniem utworzenia. |
Aliasy
Aliasy modelu
Ailoot Ultra openai/gpt-6-luna-pro
Aliasy ścieżek metod
Użyj ścieżek metod podanych powyżej.
Powiązane ID modeli
Ailoot Ultra · OpenAI Responses POST /v1/responses openai/gpt-6-luna-pro
openai/gpt-6-luna-proStart
GPT-6 Luna z rozumowaniem Pro do ukierunkowanych zadań wymagających dodatkowej analizy przed odpowiedzią końcową. Model bazowy przyjmuje tekst i obrazy, dzięki czemu przydaje się do przetwarzania dokumentów według reguł, pytań o obrazy i zwięzłych wyników pisemnych.
- Akceptowane dane wejściowe
- Tekst
- Wyniki
- Tekst
Dostępne w Ailoot · dane wejściowe i metody
Ailoot Ultra · OpenAI Responses POST /v1/responses
- Wejście
text- Wyjście
text- Format wyjściowy
- json lub SSE
| Pole | Typ | Wymaganie | Wartości i limity | Domyślnie |
|---|---|---|---|---|
Polemodel | Typstring | WymaganieWymagane | Wartości i limity openai/gpt-6-luna-pro | Domyślnie— |
Poleinput | Typstring|input_item[] | WymaganieWymagane | Wartości i limity | Domyślnie— |
Poleinstructions | Typstring | WymaganieOpcjonalne | Wartości i limity | Domyślnie— |
Poleinput[].type | Typstring | WymaganieOpcjonalne | Wartości i limity message, reasoning, function_call, function_call_output | Domyślnie— |
Poleinput[].content | Typstring|content_part[] | WymaganieOpcjonalne | Wartości i limity | Domyślnie— |
Poleinput[].call_id | Typstring | WymaganieOpcjonalne | Wartości i limity Obowiązuje, gdy: function_call_output; zachowaj rzeczywiście zwrócone call_id | Domyślnie— |
Poleinput[].output | Typstring|content_part[] | WymaganieOpcjonalne | Wartości i limity Obowiązuje, gdy: function_call_output | Domyślnie— |
Polemax_output_tokens | Typinteger | WymaganieOpcjonalne | Wartości i limity Minimum: 1 Zależy od modelu | Domyślnie— |
Polestream | Typboolean | WymaganieOpcjonalne | Wartości i limity | Domyślniefalse |
Poletemperature | Typnumber | WymaganieOpcjonalne | Wartości i limity Zależy od modelu | Domyślnie— |
Poletop_p | Typnumber | WymaganieOpcjonalne | Wartości i limity Zależy od modelu | Domyślnie— |
Poletools | Typtool[] | WymaganieOpcjonalne | Wartości i limity Zależy od modelu | Domyślnie— |
Poletool_choice | Typstring|object | WymaganieOpcjonalne | Wartości i limity Zależy od modelu | Domyślnie— |
Poleparallel_tool_calls | Typboolean | WymaganieOpcjonalne | Wartości i limity Zależy od modelu | Domyślnie— |
Polereasoning.effort | Typstring | WymaganieOpcjonalne | Wartości i limity Zależy od modelu | Domyślnie— |
Polereasoning.summary | Typstring | WymaganieOpcjonalne | Wartości i limity Zależy od modelu | Domyślnie— |
Poletext.format | Typobject | WymaganieOpcjonalne | Wartości i limity Zależy od modelu | Domyślnie— |
Poletext.verbosity | Typstring | WymaganieOpcjonalne | Wartości i limity Zależy od modelu | Domyślnie— |
Poleinclude | Typstring[] | WymaganieOpcjonalne | Wartości i limity Zależy od modelu | Domyślnie— |
Polestore | Typboolean | WymaganieOpcjonalne | Wartości i limity Zależy od modelu | Domyślnie— |
Poleprevious_response_id | Typstring | WymaganieNieobsługiwane | Wartości i limity Wymaganie dotyczące ID: Tylko rzeczywiste ID odpowiedzi z obsługiwanej kontynuacji Warunki: Przekazuj rzeczywistą historię rozmowy przy każdym żądaniu. | Domyślnie— |
Poleservice_tier | Typstring | WymaganieOpcjonalne | Wartości i limity Zależy od modelu | Domyślnie— |
Poleprompt_cache_key | Typstring | WymaganieOpcjonalne | Wartości i limity Zależy od modelu | Domyślnie— |
Poleprompt_cache_options | Typobject | WymaganieOpcjonalne | Wartości i limity Zależy od modelu | Domyślnie— |
Kombinacje materiałów wejściowych
Tekst · tekst UTF8
tekst wejściowy lub część input_text
Tekst + obraz
{type:input_image,image_url}
Parametry i cykl życia metody
| Parametr | Kontrakt |
|---|---|
Parametrmaterial_types | Kontrakttext |
Parametrrequired | Kontraktmodel, input |
Parametroptional_controls | Kontraktnull |
Parametrcontent_type | Kontraktapplication/json |
Parametrtext_file_material | KontraktOdczytaj rzeczywisty dokument UTF-8 i umieść jego tekst we wskazanym polu input lub w ciągu treści wiadomości. |
Cykl życia: exact retained published method
Wyślij dokładny identyfikator modelu i wymagane pola.
Zachowaj każdy zwrócony element i jego pierwotne identyfikatory.
Cennik
Informacje taryfowe nie dodają opcji żądania. Obsługiwane parametry podano przy wybranej metodzie.
- Tryb szybki
- Stawka standardowa Gdy wybrany jest tryb szybki
- Tryb flex
- Stawka standardowa Gdy wybrany jest tryb flex
- Maksymalna intensywność rozumowania
- Stawka standardowa Gdy dla maksymalnej intensywności rozumowania stosowana jest domyślna korekta (default)
- Intensywność rozumowania · high
- Stawka standardowa Gdy intensywność rozumowania jest ustawiona na high
- Intensywność rozumowania · low
- Stawka standardowa Gdy intensywność rozumowania jest ustawiona na low
- Intensywność rozumowania · max
- Stawka standardowa Gdy intensywność rozumowania jest ustawiona na max
- Intensywność rozumowania · medium
- Stawka standardowa Gdy intensywność rozumowania jest ustawiona na medium
- Intensywność rozumowania · none
- Stawka standardowa Gdy intensywność rozumowania jest ustawiona na none
- Intensywność rozumowania · xhigh
- Stawka standardowa Gdy intensywność rozumowania jest ustawiona na xhigh
Stawki Ailoot
Ceny według konfiguracji
Dopasuj każdą opłatę do pokazanych warunków. Użyj jednej stawki dla każdego zestawu alternatywnych konfiguracji.
| Konfiguracja | Tabela stawek | Tokeny kontekstu, więcej niż | Tokeny kontekstu, do podanej wartości włącznie | Opłata |
|---|---|---|---|---|
| KonfiguracjaPodstawowe stawki za tokeny | Tabela stawekStawka podstawowa | Tokeny kontekstu, więcej niż— | Tokeny kontekstu, do podanej wartości włącznieBez górnej granicy | Opłata Wejście · Tokeny wejściowe $0.0002 / 1K tokenów Wyjście · Tokeny wyjściowe $0.001 / 1K tokenów Wejście · Odczyt cache $0.00002 / 1K tokenów Wejście · Zapis do cache $0.00025 / 1K tokenów Wejście · Zapis do cache, 1 godz. — / 1K tokenów |
| KonfiguracjaPrzedział długości żądania 1 | Tabela stawek— | Tokeny kontekstu, więcej niż0 | Tokeny kontekstu, do podanej wartości włącznie272 000 | Opłata Wejście · Tokeny wejściowe $0.0002 / 1K tokenów Wyjście · Tokeny wyjściowe $0.001 / 1K tokenów Wejście · Odczyt cache $0.00002 / 1K tokenów Wejście · Zapis do cache $0.00025 / 1K tokenów Wejście · Zapis do cache, 1 godz. — / 1K tokenów |
| KonfiguracjaPrzedział długości żądania 2 | Tabela stawek— | Tokeny kontekstu, więcej niż272 000 | Tokeny kontekstu, do podanej wartości włącznieBez górnej granicy | Opłata Wejście · Tokeny wejściowe $0.0004 / 1K tokenów Wyjście · Tokeny wyjściowe $0.0015 / 1K tokenów Wejście · Odczyt cache $0.00004 / 1K tokenów Wejście · Zapis do cache $0.0005 / 1K tokenów Wejście · Zapis do cache, 1 godz. — / 1K tokenów |
Ailoot rezerwuje szacowaną kwotę przed żądaniem. Po otrzymaniu wyniku rozlicza ostateczną opłatę według zmierzonego użycia. Rozliczenie strumieniowania korzysta z końcowego rekordu użycia. Jak działają rezerwacja i rozliczenie →
Przykładowe żądania
Ailoot Ultra · OpenAI Responses
{
"model": "openai/gpt-6-luna-pro",
"input": [
{
"content": "Hello, how are you?",
"role": "user",
"type": "message"
}
]
}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': 'openai/gpt-6-luna-pro', 'input': [{'content': 'Hello, how are you?', 'role': 'user', 'type': 'message'}]}
payload['input'][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/responses \
-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
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': 'openai/gpt-6-luna-pro', 'input': [{'content': 'Hello, how are you?', 'role': 'user', 'type': 'message'}]}
payload['input'][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 = {'Authorization': 'Bearer PLACEHOLDER_KEY', 'Content-Type': 'application/json'}
headers['Authorization'] = 'Bearer ' + api_key
request = Request('https://api.ailoot.ai/v1/responses', 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))
Odbieranie i zapisywanie wyników
Ailoot Ultra · OpenAI Responses
json lub SSE
Zachowaj wszystkie ukończone wyniki
Zachowaj każdą kompletną zwróconą odpowiedź, plik i część treści.
Zachowaj każdy element wyjścia i część treści, rzeczywiste call_id funkcji, zaszyfrowane rozumowanie i dane użycia. W strumieniowaniu zachowaj pełną tożsamość zdarzenia/elementu.
Jeśli trzeba sprawdzić pierwotną odpowiedź
Zachowaj ID i nagłówki żądań/odpowiedzi. Nie udostępniono ogólnego URL pobierania zadania tekstowego.
Pola odpowiedzi
| Pole | Typ |
|---|---|
Poleid | Typstring |
Polestatus | Typstring |
Poleoutput[] | Typmessage|reasoning|function_call|other item |
Poleoutput[].content[] | Typcontent part |
Poleusage | Typobject |
Błędy i dalsze kroki
| Odpowiedź | Warunek | Następny krok |
|---|---|---|
Odpowiedź400 · invalid_request_error | WarunekNieprawidłowe wymagane pola, sposób reprezentacji materiału lub wartość parametru | Następny krokPopraw wskazane pola przed nowym żądaniem utworzenia. |
Aliasy
Aliasy modelu
Ailoot Ultra openai/gpt-6-luna-pro
Aliasy ścieżek metod
Użyj ścieżek metod podanych powyżej.
Powiązane ID modeli
FAQ · OpenAI: GPT-6 Luna Pro
- Jakie dane wejściowe i wyniki są dostępne?
POST /v1/chat/completions·openai/gpt-6-luna-pro:text→textPOST /v1/messages·openai/gpt-6-luna-pro:text→textPOST /v1/responses·openai/gpt-6-luna-pro:text→text- Jakich pól używa żądanie?
POST /v1/chat/completions·openai/gpt-6-luna-pro:model,messages,stream,modalities,providerPOST /v1/messages·openai/gpt-6-luna-pro:model,messages,system,max_tokens,stream,metadataPOST /v1/responses·openai/gpt-6-luna-pro:model,input,instructions,stream- Jakie limity obowiązują?
POST /v1/chat/completions·openai/gpt-6-luna-pro:messages.min_items:1POST /v1/messages·openai/gpt-6-luna-pro:messages.min_items:1;max_tokens.minimum:1