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
residencyeu-hosted | eu-owned | de | anyIndsnæ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.
tasket opgavenavnDen opgave, som routeren tilpasser modellen til.
retentionzeroKun 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_classpublic | internal | confidential | restrictedKontrolleres 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_iduuidNavngiver en politik for samme organisation; et ukendt id returnerer 404 policy_not_found.
max_usd_per_1met talEn prisloft pr. million tokens for denne anmodning.
allow_partnerstrue | falseOm 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/completions501 not_implemented — det ældre completions-endpoint tilbydes ikke; brug /v1/chat/completions.
n > 1400 unsupported_n — kun n = 1 understøttes.
POST /v1/embeddingsEmbeddings 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/images404 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.