SDKs
ඕනෑම OpenAI හෝ Anthropic SDK එකක් කිසිදු වෙනසක් නැතිව ක්රියා කරයි.
Shannon OpenAI සහ Anthropic wire formats දෙකෙන්ම කථා කරන බැවින්, ඔබට දෙකේම නිල SDKs ඒවා ඇති ආකාරයටම භාවිතා කළ හැක. ඔබ client එකේ අගයන් තුනක් වෙනස් කරයි: base URL එක, API key එක සහ model id එක. ඔබේ code එකේ ඉතිරිය එලෙසම පවතී.
සැකසිය යුතු දේ
| සැකසුම | OpenAI SDKs | Anthropic SDKs |
|---|---|---|
| Base URL | https://api.shannon-ai.com/v1 | https://api.shannon-ai.com |
| API key | ඔබේ Shannon key එක. SDK එක එය Authorization: Bearer ලෙස යවයි. | ඔබේ Shannon key එක. SDK එක එය x-api-key ලෙස යවයි. |
| Model | ප්රකාශිත model id එකක්, උදාහරණයක් ලෙස shannon-3. | ප්රකාශිත model id එකක්, උදාහරණයක් ලෙස shannon-1.6-lite. |
| එය ළඟා වන Endpoints | /v1/chat/completions, /v1/responses, /v1/models | /v1/messages, /v1/messages/count_tokens |
| Environment variables | OPENAI_API_KEY සහ OPENAI_BASE_URL, ඔබ අගයක් නොදෙන විට Python සහ JavaScript SDKs කියවයි. | ANTHROPIC_API_KEY සහ ANTHROPIC_BASE_URL, ඔබ අගයක් නොදෙන විට Python සහ TypeScript SDKs කියවයි. |
Base URLs දෙක /v1 වලින් වෙනස් වේ: OpenAI SDK එකක් එහි base URL එකට /chat/completions එකතු කරයි, Anthropic SDK එකක් /v1/messages එකතු කරයි. Shannon ප්රකාශයට පත් නොකරන model නමකට 400 සහ unknown model සමඟ පිළිතුරු ලැබේ. Models සහ මිල ගණන්
ඔබේ key එක Keys & usage පිටුවේ ඇත. යතුරු සහ භාවිතය
OpenAI SDKs
නිල OpenAI SDKs POST /v1/chat/completions සහ POST /v1/responses call කරයි. සෑම නියැදියක්ම එක user පණිවිඩයක් යවා පිළිතුර මුද්රණය කරයි.
# pip install openai
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!"}],
)
print(response.choices[0].message.content) // npm install openai
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!" }],
});
console.log(response.choices[0].message.content); // go get github.com/openai/openai-go/v3
package main
import (
"context"
"fmt"
"github.com/openai/openai-go/v3"
"github.com/openai/openai-go/v3/option"
)
func main() {
client := openai.NewClient(
option.WithAPIKey("YOUR_API_KEY"),
option.WithBaseURL("https://api.shannon-ai.com/v1/"),
)
completion, err := client.Chat.Completions.New(context.TODO(), openai.ChatCompletionNewParams{
Model: "shannon-3",
Messages: []openai.ChatCompletionMessageParamUnion{
openai.UserMessage("Hello, Shannon!"),
},
})
if err != nil {
panic(err)
}
fmt.Println(completion.Choices[0].Message.Content)
} // Gradle: implementation("com.openai:openai-java:<version>")
import com.openai.client.OpenAIClient;
import com.openai.client.okhttp.OpenAIOkHttpClient;
import com.openai.models.chat.completions.ChatCompletion;
import com.openai.models.chat.completions.ChatCompletionCreateParams;
OpenAIClient client = OpenAIOkHttpClient.builder()
.apiKey("YOUR_API_KEY")
.baseUrl("https://api.shannon-ai.com/v1")
.build();
ChatCompletionCreateParams params = ChatCompletionCreateParams.builder()
.model("shannon-3")
.addUserMessage("Hello, Shannon!")
.build();
ChatCompletion completion = client.chat().completions().create(params);
completion.choices().get(0).message().content().ifPresent(System.out::println); // dotnet add package OpenAI
using System.ClientModel;
using OpenAI;
using OpenAI.Chat;
ChatClient client = new(
model: "shannon-3",
credential: new ApiKeyCredential("YOUR_API_KEY"),
options: new OpenAIClientOptions()
{
Endpoint = new Uri("https://api.shannon-ai.com/v1")
});
ChatCompletion completion = client.CompleteChat("Hello, Shannon!");
Console.WriteLine(completion.Content[0].Text); | භාෂාව | ස්ථාපනය | Base URL විකල්පය | මූලාශ්රය |
|---|---|---|---|
| Python | pip install openai | base_url | openai/openai-python |
| JavaScript / TypeScript | npm install openai | baseURL | openai/openai-node |
| Go | go get github.com/openai/openai-go/v3 | option.WithBaseURL | openai/openai-go |
| Java | com.openai:openai-java | baseUrl | openai/openai-java |
| .NET | dotnet add package OpenAI | OpenAIClientOptions.Endpoint | openai/openai-dotnet |
Endpoints දෙකේ සෑම field එකක්ම ඒවායේ පිටුවල විස්තර කර ඇත. Chat Completions Responses API
Anthropic SDKs
නිල Anthropic SDKs POST /v1/messages call කරයි. ඒවාට සෑම call එකකම max_tokens අවශ්ය වන බැවින්, නියැදිවල එය ක්රියාත්මක කරන shannon-1.6-lite භාවිතා කරයි. සෑම නියැදියක්ම පිළිතුරේ text blocks මුද්රණය කරයි.
# pip install anthropic
import anthropic
client = anthropic.Anthropic(
api_key="YOUR_API_KEY",
base_url="https://api.shannon-ai.com",
)
message = client.messages.create(
model="shannon-1.6-lite",
max_tokens=1024,
messages=[{"role": "user", "content": "Hello, Shannon!"}],
)
for block in message.content:
if block.type == "text":
print(block.text) // npm install @anthropic-ai/sdk
import Anthropic from "@anthropic-ai/sdk";
const client = new Anthropic({
apiKey: "YOUR_API_KEY",
baseURL: "https://api.shannon-ai.com",
});
const message = await client.messages.create({
model: "shannon-1.6-lite",
max_tokens: 1024,
messages: [{ role: "user", content: "Hello, Shannon!" }],
});
for (const block of message.content) {
if (block.type === "text") console.log(block.text);
} // go get github.com/anthropics/anthropic-sdk-go
package main
import (
"context"
"fmt"
"github.com/anthropics/anthropic-sdk-go"
"github.com/anthropics/anthropic-sdk-go/option"
)
func main() {
client := anthropic.NewClient(
option.WithAPIKey("YOUR_API_KEY"),
option.WithBaseURL("https://api.shannon-ai.com/"),
)
message, err := client.Messages.New(context.TODO(), anthropic.MessageNewParams{
Model: "shannon-1.6-lite",
MaxTokens: 1024,
Messages: []anthropic.MessageParam{
anthropic.NewUserMessage(anthropic.NewTextBlock("Hello, Shannon!")),
},
})
if err != nil {
panic(err)
}
for _, block := range message.Content {
if block.Type == "text" {
fmt.Println(block.Text)
}
}
} // Gradle: implementation("com.anthropic:anthropic-java:<version>")
import com.anthropic.client.AnthropicClient;
import com.anthropic.client.okhttp.AnthropicOkHttpClient;
import com.anthropic.models.messages.Message;
import com.anthropic.models.messages.MessageCreateParams;
AnthropicClient client = AnthropicOkHttpClient.builder()
.apiKey("YOUR_API_KEY")
.baseUrl("https://api.shannon-ai.com")
.build();
MessageCreateParams params = MessageCreateParams.builder()
.model("shannon-1.6-lite")
.maxTokens(1024L)
.addUserMessage("Hello, Shannon!")
.build();
Message message = client.messages().create(params);
message.content().stream()
.flatMap(block -> block.text().stream())
.forEach(text -> System.out.println(text.text())); | භාෂාව | ස්ථාපනය | Base URL විකල්පය | මූලාශ්රය |
|---|---|---|---|
| Python | pip install anthropic | base_url | anthropics/anthropic-sdk-python |
| TypeScript | npm install @anthropic-ai/sdk | baseURL | anthropics/anthropic-sdk-typescript |
| Go | go get github.com/anthropics/anthropic-sdk-go | option.WithBaseURL | anthropics/anthropic-sdk-go |
| Java | com.anthropic:anthropic-java | baseUrl | anthropics/anthropic-sdk-java |
Messages format එක සහ එහි වෙනස්කම් Anthropic අනුකූලතා පිටුවේ ඇත. Anthropic
SDKs වලට විශ්වාස කළ හැකි දේ
- API එක භාවිතා නොකරන ඉල්ලීම් field එකක් පිළිගනී. API එක දන්නා field එකක් වැරදි type එකකින් යැවූ විට
422සමඟ පිළිතුරු ලැබේ. - SDKs එකතු කරන version සහ beta headers (
anthropic-version,anthropic-beta,openai-beta) පිළිගනී. ඒවායින් කිසිවක් අවශ්ය නැත. - පිළිතුරක
modelයනු ප්රකාශිත id එකයි, එබැවින් ඔබට එය එලෙසම ආපසු යැවිය හැක. /v1/messagesහි පිළිතුරක්thinkingblock එකකින් ආරම්භ විය හැක. පළමු block එක ගැනීම වෙනුවටtexttype එකේ blocks කියවන්න.- Streaming ක්රියා කරන්නේ SDK එකේම stream helpers හරහාය. Usage සෑම stream එකකම අවසානයේ පැමිණේ.
- සෑම පිළිතුරක්ම
x-request-idheader එකක් රැගෙන යයි. ඔබේමx-request-idඑකක් යවන්න, එවිට එම අගයම ආපසු එයි.
Community SDKs
වෙනත් කතුවරුන් OpenAI API එක සඳහා ලියූ clients එලෙසම ක්රියා කරයි: client එකට /v1 සමඟ base URL එක, ඔබේ key එක සහ Shannon model id එකක් දෙන්න. මේවා නඩත්තු කරන්නේ ඒවායේ කතුවරුන් මිස Shannon නොවේ.
| භාෂාව | ස්ථාපනය | Client |
|---|---|---|
| Go | go get github.com/sashabaranov/go-openai | sashabaranov/go-openai |
| Ruby | gem install ruby-openai | alexrudall/ruby-openai |
| PHP | composer require openai-php/client | openai-php/client |
| Rust | cargo add async-openai | 64bit/async-openai |
SDK එකක් නොමැතිව
ඔබට SDK එකක් අවශ්ය නැත. JSON යැවිය හැකි ඕනෑම HTTP client එකක් ක්රියා කරයි:
- JSON body එකක් සහ
Content-Type: application/jsonheader එක සහිතPOST. එය නොමැතිව ඉල්ලීමට415සමඟ පිළිතුරු ලැබේ. - ඔබේ key එක
Authorization: Bearer <key>හි හෝx-api-key: <key>හි. දෙකම සෑම endpoint එකකම ක්රියා කරයි. - 32 MiB දක්වා body එකක්.
"stream": trueසමඟ පිළිතුර server-sent event stream එකකි (text/event-stream). එය පේළියෙන් පේළිය කියවන්න, buffer නොකරන්න.- දෝෂයක් යනු HTTP status එක අසල
error.typeසහerror.messageසහිත JSON body එකකි.
curl 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!"}]
}' import requests
response = requests.post(
"https://api.shannon-ai.com/v1/chat/completions",
headers={"Authorization": "Bearer YOUR_API_KEY"},
json={
"model": "shannon-3",
"messages": [{"role": "user", "content": "Hello, Shannon!"}],
},
)
response.raise_for_status()
print(response.json()["choices"][0]["message"]["content"]) const response = await fetch("https://api.shannon-ai.com/v1/chat/completions", {
method: "POST",
headers: {
Authorization: "Bearer YOUR_API_KEY",
"Content-Type": "application/json",
},
body: JSON.stringify({
model: "shannon-3",
messages: [{ role: "user", content: "Hello, Shannon!" }],
}),
});
if (!response.ok) throw new Error(`HTTP ${response.status}`);
const data = await response.json();
console.log(data.choices[0].message.content); Stream එකක events සහ දෝෂ වර්ග සඳහා, බලන්න: ස්ට්රීමිං දෝෂ