Migracija

Osnovni URL i ključ prebacuju OpenAI klijent. Ova stranica navodi i što API ne radi, jer migracija koja to otkrije u produkciji nije migracija.

Oblik izravne zamjene

Usmjerite osnovni URL klijenta na https://api.llmeu.com/v1 i dajte mu API ključ iz konzole. Oblik zahtjeva se ne mijenja.

from openai import OpenAI

client = OpenAI(base_url="https://api.llmeu.com/v1", api_key="llmeu_live_xxxxxxxx.your-secret")

resp = client.chat.completions.create(
    model="llmeu-auto",
    messages=[{"role": "user", "content": "Say hello from EU hosting."}],
)
print(resp.choices[0].message.content)

Što prihvaća krajnja točka za chat

Validacijski program zahtjeva u apps/api/src/app.mjs provjerava sljedeće; ono što ne provjerava propušta se ili zanemaruje umjesto da se odbije, pa noviji klijent nastavlja raditi.

  • model i messages su obavezni; messages mora biti neprazno polje.
  • Svaka poruka treba ulogu (system, user, assistant, tool ili developer) i sadržaj kao znakovni niz ili polje dijelova.
  • stream mora biti logička vrijednost kada je prisutan.
  • temperature, top_p, max_tokens, presence_penalty, frequency_penalty, seed i n moraju biti brojevi kada su prisutni.
  • max_tokens mora biti najmanje 1.
  • n mora biti točno 1; sve ostalo se odbija.
  • stop može biti znakovni niz ili polje znakovnih nizova.
  • tools mora biti polje kada je prisutan.
  • llmeu mora biti objekt; nikada nije obavezan.
  • tool_choice i response_format prosljeđuju se pozadinskom sustavu zajedno s gornjim poljima; nepoznato dodatno polje ne odbija se.

Dodaci zahtjeva pod llmeu

Objekt llmeu s imenskim prostorom u tijelu zahtjeva; klijent koji zanemaruje nepoznata polja može ga sigurno poslati.

Polje Vrijednost Učinak
residencyeu-hosted | eu-owned | de | anySužava usmjeravanje na krajnje točke u toj rezidentnosti; prazan skup prihvatljivih vraća 409 no_endpoint_for_policy umjesto proširenja filtra.
tasknaziv zadatkaZadatak prema kojem usmjerivač prilagođava model.
retentionzeroImplementirana je samo nula. Zahtjev za više nego što politika dopušta vraća 403 retention_exceeds_policy; dopuštena efektivna vrijednost različita od nule vraća 501 retention_not_implemented.
data_classpublic | internal | confidential | restrictedProvjerava se prema dopuštenim klasama podataka u politici: klasa izvan njih vraća 403 data_class_not_allowed, a nepoznata klasa vraća 400 invalid_data_class.
policy_iduuidImenuje politiku iste organizacije; nepoznat ID vraća 404 policy_not_found.
max_usd_per_1mbrojGornja granica cijene po milijunu tokena za ovaj zahtjev.
allow_partnerstrue | falseSmiju li se partnerske krajnje točke koristiti za ovaj zahtjev.

Nepoznati ključevi unutar llmeu zanemaruju se; poznat ključ s nevažećom vrijednošću se odbija, jer neispravna data_class mora zakazati u zatvorenom stanju, a ne tiho značiti da nema klase podataka.

curl https://api.llmeu.com/v1/chat/completions \
  -H "Authorization: Bearer $LLMEU_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "llmeu-auto",
    "messages": [{"role": "user", "content": "Summarise this contract."}],
    "llmeu": {"residency": "eu-owned", "data_class": "confidential", "retention": "zero"}
  }'

Što ne postoji

Ovi odgovori su namjerni, a klijent koji ih očekuje vidi kod pogreške umjesto tihe zamjene.

Zahtjev Rezultat
POST /v1/completions501 not_implemented — zastarjela krajnja točka completions ne nudi se; koristite /v1/chat/completions.
n > 1400 unsupported_n — podržan je samo n = 1.
POST /v1/embeddingsUgrađivanja trebaju model za ugrađivanje, a zadani traženi ID je bge-m3. Trenutačno ih poslužuje deterministički lokalni pozadinski sustav, čiji odgovor nosi llmeu.mock: true i napomenu da se vraćaju deterministički zamjenski vektori i da se na ovom postavljanju ne poslužuju nikakvi utezi za ugrađivanje.
/v1/files, /v1/batches, /v1/assistants, /v1/fine_tuning, /v1/audio, /v1/images404 unknown_route — uopće se ne usmjerava; putanja /v1 koju usmjerivač ne poznaje odgovara 404 unknown_route, a svaka druga putanja odgovara 404 not_found.

Izvoz vaših podataka

Izvoz računa me.json sadrži odabrana polja računa, organizacije, metapodatke API ključeva bez tajni, trenutne politike, posljednjih 200 tragova po organizaciji i dnevne agregate korištenja za 365 dana. To nije potpuna kopija svih osobnih podataka niti povijesni zapis politika.

NDJSON izvoz revizije zadano obuhvaća 7 dana, dopušta najviše 90 dana i ograničava broj tragova na 5000; njegov manifest sadrži counts.truncated, što označava izvoz koji je dosegnuo ograničenje.

GET /app/exports/me.json
GET /app/exports/audit.ndjson?days=7
GET /app/exports/traces.json
GET /app/exports/usage.json
GET /app/exports/policies.json

Brisanje samog računa obavlja se na stranici profila i podliježe pravilu vlasništva na stranici konzole.

Kolačić sesije nije API vjerodajnica

Sesija preglednika autentificira konzolu, ne API. OpenAI klijent koji je pošalje odbija se s 403 api_key_required i umjesto toga mora koristiti API ključ.

Odbijanje ovdje navodi kod, pa migracija može granati na temelju njega, a blok llmeu u svakom odgovoru govori što se zapravo dogodilo.