Migracija
Bazinis URL ir raktas perkelia OpenAI klientą. Šis puslapis taip pat nurodo, ko API nedaro, nes migracija, kuri tai atskleidžia produkcijoje, nėra migracija.
Suderinama forma
Nukreipkite kliento bazinį URL į https://api.llmeu.com/v1 ir naudokite API raktą iš konsolės. Užklausos forma nesikeičia.
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)
Ką priima pokalbių galinis taškas
Užklausų tikrintuvas faile apps/api/src/app.mjs tikrina šiuos dalykus; ko jis netikrina, yra perduodama arba ignoruojama, o ne atmetama, todėl naujesnis klientas toliau veikia.
- model ir messages yra privalomi; messages turi būti netuščias masyvas.
- Kiekviena žinutė turi turėti role (system, user, assistant, tool arba developer) ir content kaip eilutę arba dalių masyvą.
- stream, kai pateiktas, turi būti loginė reikšmė.
- temperature, top_p, max_tokens, presence_penalty, frequency_penalty, seed ir n, kai pateikti, turi būti skaičiai.
- max_tokens turi būti bent 1.
- n turi būti tiksliai 1; bet kas kita atmetama.
- stop gali būti eilutė arba eilučių masyvas.
- tools, kai pateiktas, turi būti masyvas.
- llmeu turi būti objektas; jis niekada nėra privalomas.
- tool_choice ir response_format perduodami į serverio dalį kartu su aukščiau išvardytais laukais; nežinomas papildomas laukas nėra atmetamas.
Užklausos priedai llmeu viduje
Vardinės erdvės llmeu objektas užklausos turinyje; klientas, kuris nepaiso nežinomų laukų, gali jį saugiai siųsti.
| Laukas | Reikšmė | Poveikis |
|---|---|---|
| residency | eu-hosted | eu-owned | de | any | Susiaurina maršrutizavimą iki tos rezidencijos galinių taškų; tuščias tinkamų taškų rinkinys grąžina 409 no_endpoint_for_policy, o ne išplečia filtrą. |
| task | užduoties pavadinimas | Užduotis, kuriai maršrutizatorius pritaiko modelį. |
| retention | zero | Įgyvendintas tik nulis. Prašymas daugiau, nei leidžia politika, grąžina 403 retention_exceeds_policy; leidžiama faktinė reikšmė, kuri nėra nulis, grąžina 501 retention_not_implemented. |
| data_class | public | internal | confidential | restricted | Tikrinama pagal politikos leidžiamas duomenų klases: klasė, kurios nėra tarp jų, grąžina 403 data_class_not_allowed, o nežinoma klasė grąžina 400 invalid_data_class. |
| policy_id | uuid | Nurodo tos pačios organizacijos politiką; nežinomas id grąžina 404 policy_not_found. |
| max_usd_per_1m | skaičius | Kainos riba už milijoną žetonų šiai užklausai. |
| allow_partners | true | false | Ar šiai užklausai gali būti naudojami partnerių galiniai taškai. |
Nežinomi raktai llmeu viduje yra ignoruojami; žinomas raktas su netinkama reikšme atmetamas, nes klaidingas data_class turi būti atmetamas, o ne tyliai reikšti, kad duomenų klasė nenurodyta.
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"}
}'
Kas neegzistuoja
Šie atsakymai yra tyčiniai, ir klientas, kuris jų tikisi, mato klaidos kodą, o ne tylų pakeitimą.
| Užklausa | Rezultatas |
|---|---|
| POST /v1/completions | 501 not_implemented — senasis completions endpoint nesiūlomas; naudokite /v1/chat/completions. |
| n > 1 | 400 unsupported_n — palaikoma tik n = 1. |
| POST /v1/embeddings | Įterpiniams reikia įterpimo modelio, o numatytasis užklausos id yra bge-m3. Šiame diegime nė vienas neteikiamas, todėl šiame maršrute jis nesiūlomas, o ne grąžinami rezervuoti vektoriai. |
| /v1/files, /v1/batches, /v1/assistants, /v1/fine_tuning, /v1/audio, /v1/images | 404 unknown_route — visai nemaršrutizuojama; /v1 kelias, kurio maršrutizatorius nežino, atsako 404 unknown_route, o bet kuris kitas kelias atsako 404 not_found. |
Duomenų išsinešimas
Paskyros eksportas me.json apima pasirinktus paskyros laukus, organizacijas, API raktų metaduomenis be slaptųjų dalių, dabartines politikas, naujausius 200 pėdsakus kiekvienai organizacijai ir dienos naudojimo suvestines už 365 dienų. Tai nėra išsami visų asmens duomenų kopija ir ne istorinis politikų įrašas.
NDJSON audito eksportas pagal numatytuosius nustatymus apima 7 dienų, leidžia daugiausia 90 dienų ir riboja pėdsakus iki 5000; jo manifeste yra counts.truncated, kuris pažymi eksportą, pasiekusį ribą.
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
Pačios paskyros ištrynimas atliekamas profilio puslapyje ir jam taikoma nuosavybės taisyklė, nurodyta konsolės puslapyje.
Sesijos slapukas nėra API kredencialas
Naršyklės sesija autentifikuoja konsolę, o ne API. OpenAI klientas, kuris ją siunčia, atmetamas su 403 api_key_required ir turi naudoti API raktą.
Atsisakymas čia nurodo kodą, todėl migracija gali pagal jį šakotis, o llmeu blokas kiekviename atsakyme pasako, kas iš tikrųjų įvyko.