SDK
ਕੋਈ ਵੀ OpenAI ਜਾਂ Anthropic SDK ਬਿਨਾਂ ਕਿਸੇ ਬਦਲਾਅ ਦੇ ਕੰਮ ਕਰਦਾ ਹੈ।
Shannon OpenAI ਅਤੇ Anthropic ਦੋਵਾਂ ਦੇ wire formats ਬੋਲਦਾ ਹੈ, ਇਸ ਲਈ ਤੁਸੀਂ ਦੋਵਾਂ ਦੇ ਅਧਿਕਾਰਤ SDK ਜਿਵੇਂ ਹਨ ਉਵੇਂ ਵਰਤਦੇ ਹੋ। ਤੁਸੀਂ ਕਲਾਇੰਟ ਵਿੱਚ ਤਿੰਨ ਮੁੱਲ ਬਦਲਦੇ ਹੋ: base URL, API key ਅਤੇ ਮਾਡਲ id। ਤੁਹਾਡਾ ਬਾਕੀ ਕੋਡ ਉਹੀ ਰਹਿੰਦਾ ਹੈ।
ਕੀ ਸੈੱਟ ਕਰਨਾ ਹੈ
| ਸੈਟਿੰਗ | OpenAI SDK | Anthropic SDK |
|---|---|---|
| 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 ਵਜੋਂ ਭੇਜਦਾ ਹੈ। |
| ਮਾਡਲ | ਇੱਕ ਪ੍ਰਕਾਸ਼ਿਤ ਮਾਡਲ id, ਉਦਾਹਰਨ ਲਈ shannon-3। | ਇੱਕ ਪ੍ਰਕਾਸ਼ਿਤ ਮਾਡਲ 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 SDK ਪੜ੍ਹਦੇ ਹਨ ਜਦੋਂ ਤੁਸੀਂ ਕੋਈ ਮੁੱਲ ਨਹੀਂ ਦਿੰਦੇ। | ANTHROPIC_API_KEY ਅਤੇ ANTHROPIC_BASE_URL, ਜੋ Python ਅਤੇ TypeScript SDK ਪੜ੍ਹਦੇ ਹਨ ਜਦੋਂ ਤੁਸੀਂ ਕੋਈ ਮੁੱਲ ਨਹੀਂ ਦਿੰਦੇ। |
ਦੋਵੇਂ base URL /v1 ਨਾਲ ਵੱਖਰੇ ਹਨ: OpenAI SDK ਆਪਣੇ base URL ਵਿੱਚ /chat/completions ਜੋੜਦਾ ਹੈ, Anthropic SDK /v1/messages ਜੋੜਦਾ ਹੈ। ਜਿਸ ਮਾਡਲ ਨਾਮ ਨੂੰ Shannon ਪ੍ਰਕਾਸ਼ਿਤ ਨਹੀਂ ਕਰਦਾ, ਉਸਦਾ ਜਵਾਬ 400 ਅਤੇ unknown model ਨਾਲ ਦਿੱਤਾ ਜਾਂਦਾ ਹੈ। ਮਾਡਲ ਅਤੇ ਕੀਮਤਾਂ
ਤੁਹਾਡੀ key Keys & usage ਪੰਨੇ ਉੱਤੇ ਹੈ। Keys ਅਤੇ ਵਰਤੋਂ
OpenAI SDK
ਅਧਿਕਾਰਤ OpenAI SDK POST /v1/chat/completions ਅਤੇ POST /v1/responses ਨੂੰ ਕਾਲ ਕਰਦੇ ਹਨ। ਹਰ ਨਮੂਨਾ ਇੱਕ 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 ਦਾ ਹਰ ਫੀਲਡ ਉਨ੍ਹਾਂ ਦੇ ਆਪਣੇ ਪੰਨਿਆਂ ਉੱਤੇ ਦੱਸਿਆ ਗਿਆ ਹੈ। Chat Completions Responses API
Anthropic SDK
ਅਧਿਕਾਰਤ Anthropic SDK POST /v1/messages ਨੂੰ ਕਾਲ ਕਰਦੇ ਹਨ। ਉਹ ਹਰ ਕਾਲ ਉੱਤੇ max_tokens ਮੰਗਦੇ ਹਨ, ਇਸ ਲਈ ਨਮੂਨੇ shannon-1.6-lite ਵਰਤਦੇ ਹਨ, ਜੋ ਇਸਨੂੰ ਲਾਗੂ ਕਰਦਾ ਹੈ। ਹਰ ਨਮੂਨਾ ਜਵਾਬ ਦੇ ਟੈਕਸਟ ਬਲਾਕ ਪ੍ਰਿੰਟ ਕਰਦਾ ਹੈ।
# 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 ਫਾਰਮੈਟ ਅਤੇ ਉਸਦੇ ਫਰਕ Anthropic compatibility ਪੰਨੇ ਉੱਤੇ ਹਨ। Anthropic
SDK ਕਿਸ ਉੱਤੇ ਭਰੋਸਾ ਕਰ ਸਕਦੇ ਹਨ
- ਜਿਹੜਾ ਰਿਕੁਐਸਟ ਫੀਲਡ API ਵਰਤਦਾ ਨਹੀਂ, ਉਹ ਸਵੀਕਾਰ ਕਰ ਲਿਆ ਜਾਂਦਾ ਹੈ। ਜਿਹੜਾ ਫੀਲਡ API ਜਾਣਦਾ ਹੈ ਪਰ ਗਲਤ ਕਿਸਮ ਨਾਲ ਭੇਜਿਆ ਜਾਵੇ, ਉਸਦਾ ਜਵਾਬ
422ਨਾਲ ਦਿੱਤਾ ਜਾਂਦਾ ਹੈ। - SDK ਜੋ version ਅਤੇ beta headers ਜੋੜਦੇ ਹਨ (
anthropic-version,anthropic-beta,openai-beta) ਉਹ ਸਵੀਕਾਰ ਕੀਤੇ ਜਾਂਦੇ ਹਨ। ਇਨ੍ਹਾਂ ਵਿੱਚੋਂ ਕੋਈ ਵੀ ਲਾਜ਼ਮੀ ਨਹੀਂ ਹੈ। - ਜਵਾਬ ਦਾ
modelਪ੍ਰਕਾਸ਼ਿਤ id ਹੁੰਦਾ ਹੈ, ਇਸ ਲਈ ਤੁਸੀਂ ਇਸਨੂੰ ਜਿਵੇਂ ਹੈ ਉਵੇਂ ਵਾਪਸ ਭੇਜ ਸਕਦੇ ਹੋ। /v1/messagesਉੱਤੇ ਜਵਾਬthinkingਬਲਾਕ ਨਾਲ ਸ਼ੁਰੂ ਹੋ ਸਕਦਾ ਹੈ। ਪਹਿਲਾ ਬਲਾਕ ਲੈਣ ਦੀ ਥਾਂtextਕਿਸਮ ਦੇ ਬਲਾਕ ਪੜ੍ਹੋ।- ਸਟ੍ਰੀਮਿੰਗ SDK ਦੇ ਆਪਣੇ stream helpers ਰਾਹੀਂ ਕੰਮ ਕਰਦੀ ਹੈ। ਵਰਤੋਂ ਦੀ ਜਾਣਕਾਰੀ ਹਰ ਸਟ੍ਰੀਮ ਦੇ ਅੰਤ ਵਿੱਚ ਆਉਂਦੀ ਹੈ।
- ਹਰ ਜਵਾਬ ਵਿੱਚ
x-request-idheader ਹੁੰਦਾ ਹੈ। ਆਪਣਾx-request-idਭੇਜੋ ਅਤੇ ਉਹੀ ਮੁੱਲ ਵਾਪਸ ਆਉਂਦਾ ਹੈ।
ਕਮਿਊਨਿਟੀ SDK
ਹੋਰ ਲੇਖਕਾਂ ਵੱਲੋਂ OpenAI API ਲਈ ਲਿਖੇ ਕਲਾਇੰਟ ਉਸੇ ਤਰ੍ਹਾਂ ਕੰਮ ਕਰਦੇ ਹਨ: ਕਲਾਇੰਟ ਨੂੰ /v1 ਸਮੇਤ base URL, ਆਪਣੀ key ਅਤੇ ਇੱਕ Shannon ਮਾਡਲ id ਦਿਓ। ਇਨ੍ਹਾਂ ਨੂੰ ਇਨ੍ਹਾਂ ਦੇ ਲੇਖਕ ਸੰਭਾਲਦੇ ਹਨ, Shannon ਨਹੀਂ।
| ਭਾਸ਼ਾ | ਇੰਸਟਾਲ | ਕਲਾਇੰਟ |
|---|---|---|
| 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 ਕਲਾਇੰਟ ਕੰਮ ਕਰਦਾ ਹੈ:
- JSON ਬਾਡੀ ਅਤੇ header
Content-Type: application/jsonਨਾਲPOST। ਇਸ ਤੋਂ ਬਿਨਾਂ ਰਿਕੁਐਸਟ ਦਾ ਜਵਾਬ415ਨਾਲ ਦਿੱਤਾ ਜਾਂਦਾ ਹੈ। - ਤੁਹਾਡੀ key
Authorization: Bearer <key>ਵਿੱਚ ਜਾਂx-api-key: <key>ਵਿੱਚ। ਦੋਵੇਂ ਹਰ endpoint ਉੱਤੇ ਕੰਮ ਕਰਦੇ ਹਨ। - 32 MiB ਤੱਕ ਦੀ ਬਾਡੀ।
"stream": trueਨਾਲ ਜਵਾਬ server-sent event ਸਟ੍ਰੀਮ (text/event-stream) ਹੁੰਦਾ ਹੈ। ਇਸਨੂੰ ਲਾਈਨ-ਦਰ-ਲਾਈਨ ਪੜ੍ਹੋ ਅਤੇ buffer ਨਾ ਕਰੋ।- ਗਲਤੀ HTTP ਸਟੇਟਸ ਦੇ ਨਾਲ
error.typeਅਤੇerror.messageਵਾਲੀ JSON ਬਾਡੀ ਹੁੰਦੀ ਹੈ।
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); ਸਟ੍ਰੀਮ ਦੇ ਇਵੈਂਟਾਂ ਅਤੇ ਗਲਤੀ ਦੀਆਂ ਕਿਸਮਾਂ ਲਈ ਵੇਖੋ: ਸਟ੍ਰੀਮਿੰਗ ਗਲਤੀਆਂ