Migráció
Egy alap URL és egy kulcs átvisz egy OpenAI klienst. Ez az oldal azt is elmondja, mit nem tesz az API, mert egy migráció, amely ezt éles környezetben fedezi fel, nem migráció.
A beilleszthető forma
Állítsa a kliens alap URL-jét a https://api.llmeu.com/v1 címre, és adjon neki egy API-kulcsot a konzolból. A kérés szerkezete nem változik.
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)
Mit fogad el a csevegővégpont
Az apps/api/src/app.mjs kérés-érvényesítője a következőket ellenőrzi; amit nem ellenőriz, az átengedésre kerül vagy figyelmen kívül marad, nem pedig elutasításra, így egy újabb kliens továbbra is működik.
- A model és a messages kötelező; a messages-nek nem üres tömbnek kell lennie.
- Minden üzenethez kell egy szerep (system, user, assistant, tool vagy developer) és a tartalom szövegként vagy részek tömbjeként.
- A stream logikai érték kell legyen, ha jelen van.
- A temperature, top_p, max_tokens, presence_penalty, frequency_penalty, seed és n számok kell legyenek, ha jelen vannak.
- A max_tokens értékének legalább 1-nek kell lennie.
- Az n értéke pontosan 1 kell legyen; bármi más elutasításra kerül.
- A stop lehet szöveg vagy szövegek tömbje.
- A tools egy tömb kell legyen, ha jelen van.
- Az llmeu-nak objektumnak kell lennie; soha nem kötelező.
- A tool_choice és a response_format a fenti mezőkkel együtt továbbításra kerül a háttérrendszer felé; egy ismeretlen extra mező nem kerül elutasításra.
Kérés-kiegészítők az llmeu alatt
Névtérrel ellátott llmeu objektum a kéréstörzsben; az ismeretlen mezőket figyelmen kívül hagyó kliens biztonságosan küldheti.
| Mező | Érték | Hatás |
|---|---|---|
| residency | eu-hosted | eu-owned | de | any | Leszűkíti az útvonalválasztást az adott rezidenciában lévő végpontokra; egy üres megfelelő halmaz 409 no_endpoint_for_policy hibát ad vissza a szűrő kiszélesítése helyett. |
| task | egy feladatnév | A feladat, amelyhez az útválasztó illeszti a modellt. |
| retention | zero | Csak a nulla van implementálva. A szabályzat által engedélyezettnél nagyobb érték kérése 403 retention_exceeds_policy hibát ad vissza; egy engedélyezett, nullától eltérő effektív érték 501 retention_not_implemented hibát ad vissza. |
| data_class | public | internal | confidential | restricted | A szabályzat engedélyezett adatosztályaihoz ellenőrizve: egy azokon kívüli osztály 403 data_class_not_allowed hibát ad vissza, egy ismeretlen osztály pedig 400 invalid_data_class hibát. |
| policy_id | uuid | Ugyanazon szervezet egyik szabályzatát nevezi meg; egy ismeretlen azonosító 404 policy_not_found hibát ad vissza. |
| max_usd_per_1m | egy szám | Árplafon millió tokenenként ehhez a kéréshez. |
| allow_partners | true | false | Hogy a partner végpontok használhatók-e ehhez a kéréshez. |
Az llmeu-n belüli ismeretlen kulcsok figyelmen kívül maradnak; egy ismert kulcs érvénytelen értékkel elutasításra kerül, mert egy hibás data_class-nek zártan kell meghibásodnia, nem pedig csendben azt jelentenie, hogy nincs adatosztály.
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"}
}'
Mi nem létezik
Ezek a válaszok szándékosak, és az a kliens, amelyik ezeket várja, a hibakódot látja, nem pedig egy csendes helyettesítést.
| Kérés | Eredmény |
|---|---|
| POST /v1/completions | 501 not_implemented — a legacy completions végpont nem érhető el; használja a /v1/chat/completions végpontot. |
| n > 1 | 400 unsupported_n — csak n = 1 támogatott. |
| POST /v1/embeddings | A beágyazásokhoz beágyazási modell kell, és az alapértelmezett kért azonosító a bge-m3. Ezen a telepítésen egyik sincs kiszolgálva, ezért ez az útvonal itt nem érhető el, ahelyett hogy helyőrző vektorokat adna vissza. |
| /v1/files, /v1/batches, /v1/assistants, /v1/fine_tuning, /v1/audio, /v1/images | 404 unknown_route — egyáltalán nincs útvonalazva; a /v1 útvonal, amelyet a router nem ismer, 404 unknown_route választ ad, és bármely más útvonal 404 not_found választ ad. |
Adatok kivitele
A fiókexport me.json kiválasztott fiókmezõket, szervezeteket, API-kulcs metaadatokat titkok nélkül, aktuális szabályzatokat, szervezetenként a legutóbbi 200 nyomkövetést és napi használati összesítéseket tartalmaz 365 napra. Ez nem minden személyes adat teljes másolata, és nem történelmi szabályzati rekord.
Az NDJSON audit export alapértelmezésben 7 napot tartalmaz, legfeljebb 90 napot engedélyez, és a nyomkövetéseket 5000-re korlátozza; a manifestje tartalmazza a counts.truncated értéket, amely jelöli, ha egy export elérte a korlátot.
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
A fiók törlése a profiloldalon történik, és a konzololdalon lévő tulajdonosi szabály vonatkozik rá.
A munkamenet-süti nem API-hitelesítő adat
A böngésző munkamenete a konzolt hitelesíti, nem az API-t. Az olyan OpenAI kliens, amely ilyet küld, 403 api_key_required hibával elutasításra kerül, és helyette API-kulcsot kell használnia.
Az itteni elutasítás megnevez egy kódot, így a migráció elágazhat rá, és minden válasz llmeu blokkja megmondja, mi történt valójában.