Migrering
En basis-URL og en nøgle flytter en OpenAI-klient over. Denne side angiver også, hvad API'en ikke gør, fordi en migrering, der opdager det i produktion, ikke er en migrering.
Drop-in-formen
Peg klientens basis-URL på https://api.llmeu.com/v1, og giv den en API-nøgle fra konsollen. Anmodningsformen ændres ikke.
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)
Hvad chat-endpointet accepterer
Anmodningsvalideringen i apps/api/src/app.mjs kontrollerer følgende; det, den ikke kontrollerer, sendes videre eller ignoreres i stedet for at blive afvist, så en nyere klient fortsat virker.
- model og messages er påkrævede; messages skal være et ikke-tomt array.
- Hver besked skal have en rolle (system, user, assistant, tool eller developer) og indhold som en streng eller et array af dele.
- stream skal være en boolsk værdi, når den er til stede.
- temperature, top_p, max_tokens, presence_penalty, frequency_penalty, seed og n skal være tal, når de er til stede.
- max_tokens skal være mindst 1.
- n skal være præcis 1; alt andet afvises.
- stop kan være en streng eller et array af strenge.
- tools skal være et array, når det er til stede.
- llmeu skal være et objekt; det er aldrig påkrævet.
- tool_choice og response_format videresendes til backenden sammen med ovenstående felter; et ukendt ekstrafelt afvises ikke.
Anmodningsekstraer under llmeu
Et navnerumsobject llmeu i anmodningens body; en klient, der ignorerer ukendte felter, kan sende det sikkert.
| Felt | Værdi | Effekt |
|---|---|---|
| residency | eu-hosted | eu-owned | de | any | Indsnævrer routing til endpoints i den pågældende residens; et tomt kvalificeret sæt returnerer 409 no_endpoint_for_policy i stedet for at udvide filteret. |
| task | et opgavenavn | Den opgave, som routeren tilpasser modellen til. |
| retention | zero | Kun nul er implementeret. At anmode om mere, end politikken tillader, returnerer 403 retention_exceeds_policy; en tilladt effektiv værdi forskellig fra nul returnerer 501 retention_not_implemented. |
| data_class | public | internal | confidential | restricted | Kontrolleres mod politikkens tilladte dataklasser: en klasse uden for dem returnerer 403 data_class_not_allowed, og en ukendt klasse returnerer 400 invalid_data_class. |
| policy_id | uuid | Navngiver en politik for samme organisation; et ukendt id returnerer 404 policy_not_found. |
| max_usd_per_1m | et tal | En prisloft pr. million tokens for denne anmodning. |
| allow_partners | true | false | Om partnerendpoints må bruges til denne anmodning. |
Ukendte nøgler i llmeu ignoreres; en kendt nøgle med en ugyldig værdi afvises, fordi en dårlig data_class skal fejle lukket i stedet for lydløst at betyde ingen dataklasse.
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"}
}'
Hvad der ikke findes
Disse svar er bevidste, og en klient, der forventer dem, ser fejlkoden i stedet for en lydløs substitution.
| Anmodning | Resultat |
|---|---|
| POST /v1/completions | 501 not_implemented — det ældre completions-endpoint tilbydes ikke; brug /v1/chat/completions. |
| n > 1 | 400 unsupported_n — kun n = 1 understøttes. |
| POST /v1/embeddings | Embeddings kræver en embedding-model, og det anmodede standard-id er bge-m3. De leveres i øjeblikket af den deterministiske lokale backend, hvis svar bærer llmeu.mock: true og noten om, at der returneres deterministiske pladsholder-vektorer, og at der ikke leveres embedding-vægte på denne implementering. |
| /v1/files, /v1/batches, /v1/assistants, /v1/fine_tuning, /v1/audio, /v1/images | 404 unknown_route — rutes slet ikke; en /v1-sti, som routeren ikke kender, svarer 404 unknown_route, og enhver anden sti svarer 404 not_found. |
Udtagning af dine data
Kontoeksporten me.json indeholder udvalgte kontofelter, organisationer, API-nøglemetadata uden hemmeligheder, aktuelle politikker, de seneste 200 spor pr. organisation og daglige forbrugsaggregater i 365 dage. Det er ikke en komplet kopi af alle personoplysninger og ikke en historisk politikpost.
NDJSON-revisionseksporten er som standard 7 dage, tillader højst 90 dage og begrænser spor til 5000; dens manifest indeholder counts.truncated, som markerer en eksport, der nåede grænsen.
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
Sletning af selve kontoen sker på profil-siden og er underlagt ejerskabsreglen på konsolsiden.
En sessionscookie er ikke en API-legitimationsoplysning
En browsersession godkender konsollen, ikke API'en. En OpenAI-klient, der sender en, afvises med 403 api_key_required og skal bruge en API-nøgle i stedet.
En afvisning her navngiver en kode, så en migrering kan forgrene sig på den, og llmeu-blokken på hvert svar siger, hvad der faktisk skete.