ඉක්මන් ආරම්භය
පළමු ඉල්ලීම කරන්න: ඔබේ key එක ලබාගෙන, එක පණිවිඩයක් යවා, පිළිතුර කියවන්න. API එක OpenAI සහ Anthropic formats වලින් කථා කරන බැවින්, ඔබ දැනටමත් භාවිතා කරන SDK එක එහි base URL එක සහ key එක වෙනස් කළ පසු ක්රියා කරයි.
1. ඔබේ key එක ලබා ගන්න
සෑම ගිණුමකටම එක API key එකක් ඇත. Sign in වී, Keys & usage විවෘත කර එය පිටපත් කරන්න. Key එක සෑම endpoint එකකම සහ සෑම model එකකම ක්රියා කරයි. යතුරු සහ භාවිතය
2. ඔබේ client එක API එකට යොමු කරන්න
සියලු endpoints එක base URL එක යටතේ පවතී. OpenAI SDK එකක් එය අවසානයේ /v1 සමඟ ගනී; Anthropic SDK එකක් /v1/messages තනිවම එකතු කරන බැවින් එය නොමැතිව ගනී.
| Client | Base URL |
|---|---|
| OpenAI SDKs සහ OpenAI-අනුකූල clients | https://api.shannon-ai.com/v1 |
| Anthropic SDKs | https://api.shannon-ai.com |
පෙළ නිපදවන endpoints තුනකි. ඒවා එකම models වලට ළඟා වේ; ඔබේ code දැනටමත් භාවිතා කරන format එක ඇති එක තෝරන්න.
| Endpoint | Format |
|---|---|
POST /v1/chat/completions | OpenAI Chat Completions |
POST /v1/messages | Anthropic Messages |
POST /v1/responses | OpenAI Responses |
3. පළමු ඉල්ලීම යවන්න
Chat Completions endpoint එකේ shannon-3 වෙත එක user පණිවිඩයක් යවන්න. YOUR_API_KEY ඔබේ key එකෙන් ප්රතිස්ථාපනය කරන්න.
POST https://api.shannon-ai.com/v1/chat/completions
from openai import OpenAI
client = OpenAI(
api_key="YOUR_API_KEY",
base_url="https://api.shannon-ai.com/v1"
)
response = client.chat.completions.create(
model="shannon-3",
messages=[
{"role": "user", "content": "Hello, Shannon!"}
],
max_tokens=1024
)
print(response.choices[0].message.content) import OpenAI from 'openai';
const client = new OpenAI({
apiKey: 'YOUR_API_KEY',
baseURL: 'https://api.shannon-ai.com/v1'
});
const response = await client.chat.completions.create({
model: 'shannon-3',
messages: [
{ role: 'user', content: 'Hello, Shannon!' }
],
max_tokens: 1024
});
console.log(response.choices[0].message.content); package main
import (
"context"
"fmt"
openai "github.com/sashabaranov/go-openai"
)
func main() {
config := openai.DefaultConfig("YOUR_API_KEY")
config.BaseURL = "https://api.shannon-ai.com/v1"
client := openai.NewClientWithConfig(config)
resp, err := client.CreateChatCompletion(
context.Background(),
openai.ChatCompletionRequest{
Model: "shannon-3",
Messages: []openai.ChatCompletionMessage{
{Role: "user", Content: "Hello, Shannon!"},
},
MaxTokens: 1024,
},
)
if err != nil {
panic(err)
}
fmt.Println(resp.Choices[0].Message.Content)
} curl -X POST "https://api.shannon-ai.com/v1/chat/completions" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "shannon-3",
"messages": [
{"role": "user", "content": "Hello, Shannon!"}
],
"max_tokens": 1024
}' | Field | වර්ගය | පෙරනිමිය | විස්තරය |
|---|---|---|---|
model | string | පිළිතුරු දෙන model එකේ id එක. ids Models & pricing හි ලැයිස්තුගත කර ඇත. | |
messages | array | මෙතෙක් සංවාදය: role සහ content සහිත objects. අවසාන user පණිවිඩය prompt එකයි. අවශ්යයි. | |
max_tokens | integer | 4096 | ඉල්ලීමේ output අයවැය, 1 සිට 65,536 දක්වා. ඉල්ලීම මෙම ප්රමාණය ඔබේ ශේෂයෙන් වෙන් කර ගන්නා අතර සැබවින්ම භාවිතා කළ දේ සඳහා අය කෙරේ. |
stream | boolean | false | true පිළිතුර ලියවෙන විටම කෑලි වශයෙන් යවයි. |
ඉල්ලීමේ body එක JSON වන අතර Content-Type: application/json header එක අවශ්ය වේ. Fields වල සම්පූර්ණ ලැයිස්තුව endpoint පිටුවේ ඇත. Chat Completions
පිළිතුර
stream නොමැති call එකක් පිළිතුර සම්පූර්ණ වූ විට එක JSON object එකක් ආපසු දෙයි. පහත පෙළ සහ අංක උදාහරණ වේ.
{
"id": "chatcmpl-9b2f6c1e4a7d4f0f8a3c5d2e1b6a7c90",
"object": "chat.completion",
"created": 1791590400,
"model": "shannon-3",
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": "Hello! What would you like to work on?",
"reasoning_content": "A greeting. A short, friendly reply fits."
},
"finish_reason": "stop"
}
],
"usage": {
"prompt_tokens": 1386,
"completion_tokens": 74,
"total_tokens": 1460
}
} | Field | වර්ගය | විස්තරය |
|---|---|---|
id | string | chatcmpl- ට පසුව hexadecimal අක්ෂර 32ක්. |
object | string | සෑම විටම chat.completion. |
created | integer | පිළිතුරේ වේලාව Unix තත්පරවලින්. |
model | string | පිළිතුරු දුන් model එකේ ප්රකාශිත id එක, ඔබ alias එකක් හෝ වෙනත් අකුරු වින්යාසයක් යැවූ විටත්. |
choices | array | සෑම විටම එක entry එකක්, index 0 සහිතව. |
choices[0].message.role | string | සෑම විටම assistant. |
choices[0].message.content | string | null | පිළිතුර. පිළිතුරේ tool_calls ඇති විට එය null විය හැක. |
choices[0].message.reasoning_content | string | null | පිළිතුරට පෙර model එකේ තර්කනය, නැතහොත් එකක් නැති විට null. |
choices[0].message.tool_calls | array | Model එක ඔබ ප්රකාශ කළ tools වලින් එකක් call කරන විට පමණක් ඇත. |
choices[0].finish_reason | string | පිළිතුරක් සඳහා stop, model එක tool එකක් call කරන විට tool_calls. |
usage.prompt_tokens | integer | Model එක මෙම පිළිතුර සඳහා කියවූ tokens. shannon-2-* සහ Shannon 3 පවුල මත මෙය ඔබ යැවූ පෙළට වඩා වැඩි විය හැක. |
usage.completion_tokens | integer | Model එක විසින් ලියන ලද tokens ගණන. |
usage.total_tokens | integer | එකතුව. Shannon model එකක අය කිරීම ගණනය කරන්නේ මෙම අංකයෙනි. |
-
usageහි ඇත්තේ token ගණන් මිස මුදල් නොවේ. Call එක ඔබේ ශේෂයෙන් ගත් දේ Keys & usage හි ඉල්ලීමකට අනුව පෙන්වයි; එය ගණනය කරන ආකාරය Limits and balance හි ඇත. සීමා සහ ශේෂය - දෝෂයක් සහ stream එකක් ද ඇතුළුව සෑම පිළිතුරකටම
x-request-idheader එක ඇත. ඔබේ ඉල්ලීමේx-request-idheader එකක් තිබුණහොත් එහි අගය ආපසු එයි; නැතහොත් අගය hexadecimal අක්ෂර 12කි. එය ඔබේ logs වල තබා ගන්න: එය මෙම එක ඉල්ලීම නම් කරයි.
එම call එකම stream එකක් ලෙස
පිළිතුර ලියවෙන විටම කියවීමට stream true ලෙස සකසන්න. ඉල්ලීමේ අනෙක් සියල්ල එලෙසම පවතී.
from openai import OpenAI
client = OpenAI(
api_key="YOUR_API_KEY",
base_url="https://api.shannon-ai.com/v1"
)
stream = client.chat.completions.create(
model="shannon-3",
messages=[
{"role": "user", "content": "Hello, Shannon!"}
],
max_tokens=1024,
stream=True
)
for chunk in stream:
if chunk.choices and chunk.choices[0].delta.content:
print(chunk.choices[0].delta.content, end="", flush=True) import OpenAI from 'openai';
const client = new OpenAI({
apiKey: 'YOUR_API_KEY',
baseURL: 'https://api.shannon-ai.com/v1'
});
const stream = await client.chat.completions.create({
model: 'shannon-3',
messages: [
{ role: 'user', content: 'Hello, Shannon!' }
],
max_tokens: 1024,
stream: true
});
for await (const chunk of stream) {
process.stdout.write(chunk.choices[0]?.delta?.content ?? '');
} curl -N -X POST "https://api.shannon-ai.com/v1/chat/completions" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "shannon-3",
"messages": [
{"role": "user", "content": "Hello, Shannon!"}
],
"max_tokens": 1024,
"stream": true
}' Stream එකේ සෑම frame එකක්ම data: වලින් ආරම්භ වන සහ JSON object එකක් රඳවන එක පේළියකි. එක frame එකක්, පේළි කිහිපයක මුද්රණය කර:
{
"id": "chatcmpl-9b2f6c1e4a7d4f0f8a3c5d2e1b6a7c90",
"object": "chat.completion.chunk",
"created": 1791590400,
"model": "shannon-3",
"choices": [
{
"index": 0,
"delta": {
"content": "Hello! "
},
"finish_reason": null
}
]
} | Frames, පිළිවෙලින් | delta | finish_reason |
|---|---|---|
| Model එක තර්ක කරන අතරතුර. Frames බිංදුවක් හෝ වැඩි ගණනක්. | {"reasoning_content": "…"} | null |
| පිළිතුර, කෑලි වශයෙන්. Frames බිංදුවක් හෝ වැඩි ගණනක්. | {"content": "…"} | null |
අවසාන JSON frame එක. එයට usage ද ඇත; ඔබට එය ඉල්ලීමට අවශ්ය නැත. | {} | "stop" |
Stream එකේ අවසානය: data: [DONE] පේළිය. |
- පිළිතුරේ status
200සහcontent-type: text/event-streamඇත. සෑම frame එකක්මdata: <json>පේළියක් වන අතර ඉන්පසු හිස් පේළියක් ඇත. : pingපේළියක් තත්පර 15කට වරක් පැමිණේ. එය සම්බන්ධතාව විවෘතව තබන comment එකකි; SSE clients එය මඟ හරියි.- Stream එක විවෘත වූ පසු අසාර්ථකත්වයක්
data: {"error": {…}}frame එකක් ලෙස පැමිණේ. Status එක200ලෙසම පවතී, එබැවින් frames පරීක්ෂා කරන්න.
Call එක අසාර්ථක වුවහොත්
දෝෂයක් යනු type සහ message රඳවන error සහිත JSON object එකකි. පළමු call එකකට බොහෝ විට ලැබෙන පිළිතුරු මේවාය.
| තත්ත්වය | වර්ගය | පණිවිඩය | එහි තේරුම |
|---|---|---|---|
401 | authentication_error | Missing authentication | කිසිදු key එකක් API එකට ළඟා වූයේ නැත. Authorization: Bearer ට පසුව ඔබේ key එක යවන්න. |
401 | authentication_error | Invalid API key | Key එක ගිණුමක වත්මන් key එක නොවේ. Keys & usage වෙතින් එය නැවත පිටපත් කරන්න. |
400 | invalid_request_error | unknown model: <id> | model ප්රකාශිත id එකක් නොවේ. Models & pricing වෙතින් id එකක් භාවිතා කරන්න. |
422 | invalid_request_error | Failed to deserialize the JSON body into the target type… | Field එකක JSON type එක වැරදිය, නැතහොත් messages නැත. |
429 | rate_limit_error | Quota exceeded. Upgrade your plan at shannon-ai.com/plan | ඉල්ලීමේ output අයවැය ඔබේ ශේෂයට නොගැළපේ. |
ඊළඟට කුමක් කළ යුතුද
- Models සහ මිල ගණන් — Model එකක් තෝරන්න: ids, context windows සහ මිල ගණන්.
- Chat Completions — ඔබ call කළ endpoint එකේ සෑම ඉල්ලීම් field එකක්ම, පිළිතුරු field එකක්ම සහ stream event එකක්ම.
- ස්ට්රීමිං — Stream එකක frames, keep-alive පේළි සහ stream එකක් තුළ දෝෂ.
- කාර්ය කැඳවීම — Model එකට ඔබේ functions call කිරීමට ඉඩ දෙන්න.
- සීමා සහ ශේෂය — ඉල්ලීමක් වෙන් කරන්නේ සහ වැය වන්නේ කොපමණද, සහ ඔබට ඉල්ලීම් කොපමණ ගණනක් යැවිය හැකිද.
- API Playground — ඔබේ key එකෙන් browser එකේ ඉල්ලීම් උත්සාහ කරන්න.