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 |
|---|---|---|
| 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 proširenja filtra. |
| 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 u politici: klasa izvan njih vraća 403 data_class_not_allowed, a nepoznata klasa vraća 400 invalid_data_class. |
| policy_id | uuid | Imenuje 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 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/completions | 501 not_implemented — zastarjela krajnja točka completions ne nudi se; koristite /v1/chat/completions. |
| n > 1 | 400 unsupported_n — podržan je samo n = 1. |
| POST /v1/embeddings | Ugrađ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/images | 404 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.