Migracija
Osnovni URL i ključ prebacuju OpenAI klijent. Ova stranica također navodi š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
Validacija zahtjeva u apps/api/src/app.mjs provjerava sljedeće; ono što ne provjerava propušta se ili zanemaruje umjesto odbijanja, pa noviji klijent nastavlja raditi.
- model i messages su obavezni; messages mora biti neprazno polje.
- Svaka poruka treba imati ulogu (system, user, assistant, tool ili developer) i sadržaj kao string ili polje dijelova.
- stream mora biti boolean 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 string ili polje stringova.
- tools mora biti polje kada je prisutno.
- llmeu mora biti objekt; nikada nije obavezan.
- tool_choice i response_format prosljeđuju se pozadinskom sustavu zajedno s gornjim poljima; nepoznato dodatno polje se ne odbija.
Dodaci zahtjeva unutar llmeu
Objekt llmeu s imenskim prostorom u tijelu zahtjeva; klijent koji zanemaruje nepoznata polja može ga sigurno poslati.
| Polje | Vrijednost | Učinak |
|---|---|---|
| residency | eu-hosted | eu-owned | de | any | Sužava usmjeravanje na krajnje točke u toj rezidentnosti; prazan skup prihvatljivih vraća 409 no_endpoint_for_policy umjesto da proširi filtar. |
| task | naziv zadatka | Zadatak prema kojem usmjerivač prilagođava model. |
| retention | zero | Implementirana 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_class | public | internal | confidential | restricted | Provjerava se prema dopuštenim klasama podataka politike: klasa izvan njih vraća 403 data_class_not_allowed, a nepoznata klasa vraća 400 invalid_data_class. |
| policy_id | uuid | Određuje politiku iste organizacije; nepoznat id vraća 404 policy_not_found. |
| max_usd_per_1m | broj | Gornja granica cijene po milijunu tokena za ovaj zahtjev. |
| allow_partners | true | false | Smiju li se partnerske krajnje točke koristiti za ovaj zahtjev. |
Nepoznati ključevi unutar llmeu se zanemaruju; poznati ključ s nevažećom vrijednošću se odbija, jer loš data_class mora odbiti zahtjev umjesto da tiho znači 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 su odgovori namjerni, i klijent koji ih očekuje vidi kôd pogreške, a ne tihu zamjenu.
| Zahtjev | Rezultat |
|---|---|
| POST /v1/completions | 501 not_implemented — zastarjeli completions endpoint se ne nudi; upotrijebite /v1/chat/completions. |
| n > 1 | 400 unsupported_n — podržan je samo n = 1. |
| POST /v1/embeddings | Embeddings zahtijevaju model za ugrađivanje, a zadani traženi id je bge-m3. Nijedan se ne poslužuje na ovom postavljanju, pa se ruta ovdje ne nudi umjesto da vraća zamjenske vektore. |
| /v1/files, /v1/batches, /v1/assistants, /v1/fine_tuning, /v1/audio, /v1/images | 404 unknown_route — uopće se ne usmjerava; /v1 putanja koju router 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ča bez tajni, trenutačne politike, najnovijih 200 tragova po organizaciji i dnevne zbirne podatke o upotrebi za 365 dana. To nije potpuna kopija svih osobnih podataka i nije povijesni zapis politika.
NDJSON izvoz revizije prema zadanim postavkama obuhvaća 7 dana, dopušta najviše 90 dana i ograničava tragove 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 o vlasništvu na stranici konzole.
Sesijski kolačić nije API vjerodajnica
Sesija preglednika autentificira konzolu, a 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 se migracija može granati na temelju njega, a llmeu blok u svakom odgovoru govori što se stvarno dogodilo.