Migrace
Základní URL a klíč přesunou klienta OpenAI. Tato stránka také uvádí, co API nedělá, protože migrace, která to zjistí v produkci, není migrace.
Tvar pro přímé nahrazení
Nasměrujte základní URL klienta na https://api.llmeu.com/v1 a dejte mu API klíč z konzole. Tvar požadavku se nemění.
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)
Co koncový bod chatu přijímá
Validátor požadavků v apps/api/src/app.mjs kontroluje následující; co nekontroluje, je předáno nebo ignorováno, nikoli zamítnuto, takže novější klient dál funguje.
- model a messages jsou vyžadovány; messages musí být neprázdné pole.
- Každá zpráva potřebuje roli (system, user, assistant, tool nebo developer) a obsah jako řetězec nebo pole částí.
- stream musí být boolean, pokud je přítomen.
- temperature, top_p, max_tokens, presence_penalty, frequency_penalty, seed a n musí být čísla, pokud jsou přítomna.
- max_tokens musí být alespoň 1.
- n musí být přesně 1; cokoli jiného je zamítnuto.
- stop může být řetězec nebo pole řetězců.
- tools musí být pole, pokud je přítomno.
- llmeu musí být objekt; nikdy není vyžadován.
- tool_choice a response_format jsou předány backendu spolu s výše uvedenými poli; neznámé doplňkové pole není zamítnuto.
Doplňky požadavku v llmeu
Objekt llmeu s jmenným prostorem v těle požadavku; klient, který ignoruje neznámá pole, jej může bezpečně poslat.
| Pole | Hodnota | Účinek |
|---|---|---|
| residency | eu-hosted | eu-owned | de | any | Zužuje směrování na koncové body v této rezidenci; prázdná množina způsobilých vrací 409 no_endpoint_for_policy, místo aby filtr rozšířila. |
| task | název úlohy | Úloha, pro kterou router přizpůsobuje model. |
| retention | zero | Implementována je pouze nula. Požadavek na více, než zásada povoluje, vrací 403 retention_exceeds_policy; povolená efektivní hodnota jiná než nula vrací 501 retention_not_implemented. |
| data_class | public | internal | confidential | restricted | Kontrolováno proti povoleným datovým třídám zásady: třída mimo ně vrací 403 data_class_not_allowed a neznámá třída vrací 400 invalid_data_class. |
| policy_id | uuid | Pojmenovává zásadu stejné organizace; neznámé id vrací 404 policy_not_found. |
| max_usd_per_1m | číslo | Maximální cena za milion tokenů pro tento požadavek. |
| allow_partners | true | false | Zda mohou být pro tento požadavek použity partnerské koncové body. |
Neznámé klíče uvnitř llmeu jsou ignorovány; známý klíč s neplatnou hodnotou je zamítnut, protože špatná data_class musí selhat zavřeně, nikoli tiše znamenat žádnou datovou třídu.
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"}
}'
Co neexistuje
Tyto odpovědi jsou záměrné a klient, který je očekává, uvidí kód chyby, nikoli tiché nahrazení.
| Požadavek | Výsledek |
|---|---|
| POST /v1/completions | 501 not_implemented — zastaralý koncový bod completions není nabízen; použijte /v1/chat/completions. |
| n > 1 | 400 unsupported_n — podporováno je pouze n = 1. |
| POST /v1/embeddings | Embeddingy potřebují model pro embeddingy a výchozí požadované id je bge-m3. V současnosti je obsluhuje deterministický lokální backend, jehož odpověď nese llmeu.mock: true a poznámku, že jsou vraceny deterministické zástupné vektory a na tomto nasazení nejsou obsluhovány žádné váhy embeddingů. |
| /v1/files, /v1/batches, /v1/assistants, /v1/fine_tuning, /v1/audio, /v1/images | 404 unknown_route — vůbec nesměrováno; cesta /v1, kterou router nezná, odpovídá 404 unknown_route a jakákoli jiná cesta odpovídá 404 not_found. |
Export dat
Export účtu me.json obsahuje vybraná pole účtu, organizace, metadata API klíčů bez tajemství, aktuální zásady, nejnovější 200 tras na organizaci a denní agregace využití za 365 dní. Není to úplná kopie všech osobních údajů ani historický záznam zásad.
Export auditu NDJSON standardně pokrývá 7 dní, umožňuje maximálně 90 dní a omezuje trasy na 5000; jeho manifest nese counts.truncated, což označuje export, který dosáhl limitu.
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
Smazání účtu samotného probíhá na stránce profilu a podléhá pravidlu vlastnictví na stránce konzole.
Relace cookie není API přihlašovací údaj
Relace prohlížeče autentizuje konzoli, nikoli API. Klient OpenAI, který ji pošle, je zamítnut s 403 api_key_required a musí místo toho použít API klíč.
Zamítnutí zde uvádí kód, takže migrace se podle něj může větvit, a blok llmeu v každé odpovědi říká, co se skutečně stalo.