Arendajatele
Kiirstart
Suuna OpenAI-ga ühilduv klient API hostile, kasuta oma projekti võtit, saada chat completion. Vorming ühildub; teenus kuulub Media Holdingule. OpenAI teenuseid ei kasutata.
Viis sammu
Loo kabinetis projekti võti
Võtmed kuuluvad teie organisatsiooni projektile. Saladust näidatakse üks kord; hoia seda keskkonnamuutujas (näidetes
SOVEREIGN_API_KEY), mitte kunagi koodis.Saada chat completion curl-iga
Üks päring, üks vastus, kasutus vastuse kehas.
Kasuta Pythoni klienti
Paigalda pakett
openaija määrabase_urlAPI hostiks. Midagi muud teie koodis ei muutu; pakett räägib ainult vormingut — see kutsub meie hosti, mitte OpenAI oma.Voogedasta
Määra
stream=Truejastream_options={"include_usage": True}; prindi deltad saabumisel ja loe kasutus viimasest tükist.Loe oma kasutust
GET /v1/usagetagastab teie projekti päringud ja tokenite arvu perioodi kohta — sama register, millest teie arve koostatakse.
OpenAI-ga ühilduv API vorming. OpenAI teenuseid ei kasutata. Näidete API host on platvormi host; kabinet näitab teie pühendatud instantsi hosti.
curl
curl https://sovereignai-api.mediaholding.tech/v1/chat/completions \
-H "Authorization: Bearer $SOVEREIGN_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "mh-sovereign",
"messages": [
{"role": "system", "content": "You answer briefly and cite the clause you rely on."},
{"role": "user", "content": "Summarise the termination clause of the attached contract in two sentences."}
]
}'
Python — openai klient base_url-iga
Paketti openai kasutatakse ainult OpenAI-ga ühilduva päringuvormingu kliendina. Kui base_url osutab meie hostile, ei jõua ükski päring OpenAI-ni.
import os
from openai import OpenAI # the OpenAI-compatible client format; no OpenAI service is called
client = OpenAI(
base_url="https://sovereignai-api.mediaholding.tech/v1",
api_key=os.environ["SOVEREIGN_API_KEY"],
)
response = client.chat.completions.create(
model="mh-sovereign",
messages=[
{"role": "system", "content": "You answer briefly and cite the clause you rely on."},
{"role": "user", "content": "Summarise the termination clause of the attached contract in two sentences."},
],
)
print(response.choices[0].message.content)
print(response.usage) # prompt_tokens, completion_tokens, total_tokens
Voogedastus
stream = client.chat.completions.create(
model="mh-sovereign",
messages=[{"role": "user", "content": "List three risks of the clause."}],
stream=True,
stream_options={"include_usage": True}, # the final chunk carries usage
)
for chunk in stream:
if chunk.choices and chunk.choices[0].delta.content:
print(chunk.choices[0].delta.content, end="", flush=True)
if chunk.usage:
print("\n", chunk.usage)
Mõtlemine numbriülesanneteks
Mõtlemine päringu alusel
Mõõdetud9B mudel arutleb enne vastamist, kui päringu jaoks on mõtlemine sisse lülitatud (eelarve 1 024 tokenit). Mõõdetud 12.10.2026: raha, hindade ja kogustega ülesanded vajavad seda.
# Money, prices and quantities: switch the model's thinking on for the request.
response = client.chat.completions.create(
model="mh-sovereign-reason",
messages=[{"role": "user", "content": "Invoice total 1,240.50 EUR net; VAT 24 %. Gross amount?"}],
extra_body={"chat_template_kwargs": {"enable_thinking": True}},
max_tokens=1024,
)
`chat_template_kwargs` on llama.cpp käituskeskkonna lüliti mudeli mõtlemisrežiimi jaoks; avaliku API lõplik päringuväli fikseeritakse genereeritud spetsifikatsioonis.
Mudeli valimine
mh-sovereign on vaikimisi alias ja lahendub 9B mudeliks (mh-sovereign-reason). Kasuta mh-sovereign-small kiireks klassifitseerimiseks ja eraldamiseks, mh-sovereign-lingua mitmekeelsete mustandite jaoks. Kataloog sisaldab iga mudeli mõõdetud numbreid ja teadaolevaid piiranguid.
Mida API tagab
Võtmed
EhitatudPrefiks nähtav kabinetis, saladust näidatakse üks kord ja hoitakse võtmega ühesuunalise räsina (HMAC-SHA-256); roteerimine ja tühistamine ilma seisakuta projekti teiste võtmete jaoks.
Klienditeegid
EhitatudIga klient, mis räägib OpenAI-ga ühilduvat chat completions vormingut, töötab base_url-i ja võtme muutmisega — Python, JavaScript, Go, curl. OpenAI teenuseid ei kasutata.
Päringu identifikaatorid
EhitatudX-Request-Id igas vastuses ja error.request_id igas vea kehas; sama id meie auditireal, nii et tugi leiab päringu — selle metaandmed, mitte kunagi sisu.
Sageduslimiidid
Ehitatud429 koos Retry-After-iga sageduslimiidi või projekti eelarve korral; oodake antud sekundid. Sageduslimiidi päised on plaanitud; nimed on lõplikud genereeritud spetsifikatsioonis.
Vealeping
EhitatudÜks JSON-kuju, kaheksa veatüüpi, HTTP-olek nimetab klassi; sõnumid ilma URL-ide, tokenite, teede ja ülesvoolu tekstita.
Olekusildid — MÕÕDETUD — on olemas ja mõõdeti nimetatud kuupäeval nimetatud meetodiga. EHITATUD — on olemas ja töötab, koormuse all veel mõõtmata. PLAANITUD — kavandatud, veel ehitamata. Sildita rida ei ole selle platvormi väide.
Vead
Iga viga on üks JSON-kuju koos HTTP-olekuga, mis nimetab selle klassi. Sõnum ei sisalda kunagi URL-e, tokeneid, teid ega ülesvoolu erandite teksti.
| HTTP | error.type | Millal | Retry-After |
|---|---|---|---|
400 | invalid_request_error | Päringu keha või parameetrid on vigased. | ei |
401 | authentication_error | Puuduv, vigase vorminguga, tühistatud või tundmatu API-võti. | ei |
403 | permission_error | Võti kehtib, kuid ei tohi kasutada seda mudelit, projekti ega teed. | ei |
404 | invalid_request_error | Tundmatu mudel või tee; code nimetab selle. | ei |
429 | rate_limit_error · budget_exceeded | Sageduslimiit või projekti eelarve on saavutatud; oodake antud sekundid. | jah |
500 | server_error | Ootamatu tõrge meie poolel; viidake päringu id-le. | ei |
503 | backend_busy · upstream_unavailable | GPU-d hoiab teine töö või inferentsipakkuja on maas. Varuvarianti välise tarnijaga ei eksisteeri. | jah |
Veavastus koos päistega
HTTP/1.1 429 Too Many Requests
Content-Type: application/json
X-Request-Id: 5b8e2b2e-4a2f-4b7c-9d2e-1f3a4b5c6d7e
Retry-After: 12
{
"error": {
"type": "rate_limit_error",
"code": "requests_per_minute",
"message": "Too many requests for this project. Retry after the number of seconds in Retry-After.",
"request_id": "5b8e2b2e-4a2f-4b7c-9d2e-1f3a4b5c6d7e"
}
}