Përmbledhje
Harta e API-t: çdo endpoint, si duken një kërkesë dhe një gabim, si paguhen thirrjet, dhe çfarë duhet të dini kur vini nga një SDK OpenAI ose Anthropic.
Endpoint-et
Çdo endpoint ndodhet nën një URL bazë dhe shërbehet përmes HTTPS.
https://api.shannon-ai.com | Endpoint | Formati | Për çfarë shërben |
|---|---|---|
POST /v1/chat/completions | OpenAI Chat Completions | Dërgoni një bisedë, merrni përgjigjen e radhës. Me ose pa streaming. |
POST /v1/messages | Anthropic Messages | Njësoj, në format e kërkesës dhe përgjigjes së SDK-ve Anthropic. |
POST /v1/responses | OpenAI Responses | Njësoj, në format Responses. Endpoint-i nuk mban gjendje: dërgoni bisedën me çdo kërkesë. |
GET /v1/models | Lista e modeleve OpenAI | Listoni modelet me dritaren e kontekstit, çmimet dhe aftësitë. Nuk kërkon çelës. |
POST /v1/tokenize | Shannon API | Numëroni tokens-at e një teksti ose të një kërkese bisede për një model open-weight të hostuar. Falas. |
POST /v1/messages/count_tokens | Numërim tokens-ash Anthropic | Numëroni tokens-at e hyrjes së një kërkese Messages për një model open-weight të hostuar. Falas. |
Të tri endpoint-et që prodhojnë tekst arrijnë të njëjtat modele. Zgjidhni atë, formatin e të cilit e përdor tashmë kodi juaj.
Bazat e kërkesës
| Header | Përshkrimi |
|---|---|
Authorization: Bearer <key> | Çelësi juaj API. I detyrueshëm në çdo endpoint përveç GET /v1/models, përveç nëse dërgoni x-api-key. |
x-api-key: <key> | I njëjti çelës në header-in që dërgojnë SDK-të Anthropic. Lexohet në çdo endpoint. |
Content-Type: application/json | I detyrueshëm në çdo POST. Pa të përgjigjja është 415. |
x-request-id: <your id> | Opsional. Id-ja juaj për kërkesën; kthehet në header-in e përgjigjes x-request-id. Pa të API-ja krijon një me 12 karaktere heksadecimale. |
- Trupi i çdo
POSTështë një objekt JSON, deri në 32 MiB. - Një fushë që API-ja nuk e njeh nuk shkakton gabim dhe nuk ka efekt. Një kërkesë e shkruar për një ofrues tjetër nuk dështon për shkak të një fushe shtesë.
- Një fushë e njohur me lloj JSON të gabuar, ose një fushë e detyrueshme që mungon, merr përgjigje
422. Një trup që nuk është JSON i vlefshëm merr përgjigje400. modelështë një nga id-të te Modelet dhe çmimet. Shkronjat e mëdha dhe të vogla nuk kanë rëndësi.
Një përgjigje është JSON, ose një stream server-sent events kur kërkesa vendos stream në true. Çdo endpoint përgjigjet në formatin e vet. Çdo përgjigje ka header-in x-request-id.
Çfarë kalon një kërkesë
Një kërkesë kontrollohet në një radhë të fiksuar para se të ekzekutohet një model. Kontrolli i parë që dështon përgjigjet, kështu që një 401 ende nuk ju tregon asgjë për trupin.
| Kontrollohet, në këtë radhë | Statusi kur dështon |
|---|---|
| Çelësi API | 401 |
| Trupi: madhësia, lloji i përmbajtjes, JSON, llojet e fushave | 413 · 415 · 400 · 422 |
| Id-ja e modelit | 400 |
| Mbrojtja nga vërshimi i kërkesave: 120 kërkesa në minutë për llogari | 429 |
| Bilanci: buxheti i daljes së kërkesës duhet të ngjitë | 429 |
Forma e gabimit
Një gabim është një objekt JSON me një error që mban type dhe message. /v1/messages e mbështjell ashtu siç e presin SDK-të Anthropic; çdo rrugë tjetër përdor formën OpenAI.
{
"error": {
"type": "invalid_request_error",
"message": "unknown model: gpt-4o"
}
} {
"type": "error",
"error": {
"type": "invalid_request_error",
"message": "unknown model: gpt-4o"
}
} - Lexoni
typedhemessage.codedheparamjanë të pranishme vetëm te disa gabime: trajtojini si opsionale.paramështë gjithmonënull. - Pasi një stream ka nisur, statusi është tashmë
200. Një dështim pastaj arrin si frame gabimi brenda stream-it. - Çdo përgjigje gabimi mban header-in
x-request-id.
| Statusi | Lloji | Kur |
|---|---|---|
400 | invalid_request_error | Trupi nuk është JSON i vlefshëm, id-ja e modelit është e panjohur, ose modeli nuk e pranon një lloj hyrjeje që dërguat. |
401 | authentication_error | Çelësi mungon ose nuk është i vlefshëm. |
404 | not_found_error | Rruga nuk ekziston. |
405 | api_error | Rruga ekziston, metoda është e gabuar. |
413 | invalid_request_error | Trupi është më i madh se 32 MiB. |
415 | invalid_request_error | Content-Type nuk është application/json. |
422 | invalid_request_error | Një fushë ka lloj JSON të gabuar ose mungon një fushë e detyrueshme. |
429 | rate_limit_error | Bilanci nuk e mbulon kërkesën, më shumë se 120 kërkesa arritën brenda një minute, thirrjet Shannon Coder të dritares janë shfrytëzuar, ose modeli është i zënë. Mesazhi thotë cila nga këto. |
5xx | api_error | Statusi 500, 502, 503 ose 504: kërkesa ishte e vlefshme dhe nuk mund të merrte përgjigje. Dërgojeni përsëri. Një 500 mund të mbajë llojin server_error. |
Faturimi dhe bilanci
- Ka një bilanc për llogari, dhe biseda e API e ndajnë: fillimisht kuota e planit për sot, pastaj krediti i blerë. API-ja nuk ka kuotë të vetën.
- Një kërkesë rezervon buxhetin e saj të daljes (
max_tokens, parazgjedhja 4,096) dhe pastaj faturohet për tokens-at që përdori realisht, me çmimin e modelit. - Çdo përgjigje i raporton numërimet e saj të tokens-ave te
usage. Faqja Çelësat dhe përdorimi tregon bilancin dhe çfarë kushtoi çdo kërkesë. - Çdo kërkesë shërbehet njësoj. I vetmi kufi për shpejtësinë e kërkesave është mbrojtja nga vërshimi i kërkesave: 120 kërkesa në minutë për llogari. Kërkesat e dërguara paralelisht presin në radhë.
Kufijtë dhe bilanci Modelet dhe çmimet Çelësat dhe përdorimi
Fusha që varen nga modeli
Çdo model pranon të njëjtën kërkesë. Disa fusha vlejnë vetëm te disa modele; tabela tregon ku. Faqet e endpoint-eve listojnë çdo fushë.
| Fusha | Përshkrimi | Zbatohet nga |
|---|---|---|
system | Udhëzime për modelin: një mesazh system te Chat Completions, system te Messages, instructions te Responses. | Modele open-weight të hostuara, shannon-1.6-*, shannon-2-*, shannon-coder-1 |
temperature | Temperatura e kampionimit. | Modele open-weight të hostuara, shannon-1.6-*, shannon-coder-1 |
top_p | Kampionim nucleus. | Modele open-weight të hostuara |
seed | Një seed i fiksuar për kampionim. | Modele open-weight të hostuara |
stop | Deri në 4 stop sequences. | Modele open-weight të hostuara |
reasoning_effort | Sa arsyeton modeli para se të përgjigjet. reasoning.effort te Responses, thinking te Messages. | Modele open-weight të hostuara |
web_search | true e lë modelin të kërkojë në ueb për këtë kërkesë. Një fushë e këtij API-i, te Chat Completions dhe Messages. | Modelet Shannon përveç shannon-coder-1 |
max_tokens | Buxheti i daljes. Në çdo model cakton sasinë e rezervuar nga bilanci juaj. | Si kufi i gjatësisë së përgjigjes: modelet open-weight të hostuara, shannon-1.6-*, shannon-coder-1 |
Nëse vini nga një SDK OpenAI
- Caktoni URL-në bazë në
https://api.shannon-ai.com/v1dhe çelësin në çelësin tuaj Shannon. Thirrjet Chat Completions dhe Responses pastaj funksionojnë me SDK-në siç është. modelduhet të jetë një id Shannon. Një emër modeli i një ofruesi tjetër, sigpt-4o, merr përgjigje400dheunknown model.- Arsyetimi vjen në një fushë më vete:
reasoning_contentpranëcontent, në mesazh dhe në delta-t e stream-it. - Një stream mban gjithmonë
usagenë pjesën e fundit, së bashku mefinish_reason. - Një thirrje mjeti në një stream arrin si një pjesë e vetme me stringun e plotë
arguments. - Një përgjigje ka një choice.
- Rrugët e API-t OpenAI që nuk janë në tabelën më sipër, si
/v1/embeddings, marrin përgjigje404.
Nëse vini nga një SDK Anthropic
- Caktoni URL-në bazë në
https://api.shannon-ai.com, pa/v1, dhe çelësin në çelësin tuaj Shannon. SDK-ja e dërgon six-api-key. modelduhet të jetë një id Shannon.max_tokensështë opsional në këtë API. Parazgjedhja e tij është 4,096.- Një përgjigje mban blloqe përmbajtjeje të llojit
thinking,textdhetool_use. Blloku i parë nuk është gjithmonë teksti: zgjidhini blloqet sipastype. stop_reasonështëend_turnosetool_use. Një stream i një modeli Shannon mund të mbarojë edhe memax_tokens.anthropic-versiondheanthropic-betapranohen, kështu që SDK-ja funksionon pa ndryshime. Një kërkesë nuk ka nevojë për to.- Gabimet në
/v1/messageskanë formën Anthropic:{"type": "error", "error": {…}}.
Mjetet e kodimit që flasin këto formate konfigurohen njësoj: URL bazë, çelës dhe një id Shannon si model. Mjete CLI për kodim