SDKs
کوئی بھی OpenAI یا Anthropic SDK فوراً کام کرتا ہے۔
Shannon OpenAI اور Anthropic دونوں کے وائر فارمیٹس بولتا ہے، اس لیے آپ دونوں کے سرکاری SDKs جوں کے توں استعمال کرتے ہیں۔ آپ کلائنٹ میں تین قدریں بدلتے ہیں: بیس URL، API کلید اور ماڈل id۔ باقی کوڈ ویسا ہی رہتا ہے۔
کیا سیٹ کرنا ہے
| سیٹنگ | OpenAI SDKs | Anthropic SDKs |
|---|---|---|
| بیس URL | https://api.shannon-ai.com/v1 | https://api.shannon-ai.com |
| API کلید | آپ کی Shannon کلید۔ SDK اسے Authorization: Bearer کے طور پر بھیجتا ہے۔ | آپ کی Shannon کلید۔ 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 SDKs تب پڑھتے ہیں جب آپ کوئی قدر نہ دیں۔ | ANTHROPIC_API_KEY اور ANTHROPIC_BASE_URL، جنہیں Python اور TypeScript SDKs تب پڑھتے ہیں جب آپ کوئی قدر نہ دیں۔ |
دونوں بیس URLs میں /v1 کا فرق ہے: OpenAI SDK اپنے بیس URL میں /chat/completions شامل کرتا ہے، Anthropic SDK /v1/messages۔ جس ماڈل نام کو Shannon شائع نہیں کرتا اس کا جواب 400 اور unknown model سے دیا جاتا ہے۔ ماڈلز اور قیمتیں
آپ کی کلید Keys & usage صفحے پر ہے۔ Keys & usage
OpenAI SDKs
سرکاری OpenAI SDKs POST /v1/chat/completions اور POST /v1/responses کال کرتے ہیں۔ ہر نمونہ ایک صارف پیغام بھیجتا ہے اور جواب پرنٹ کرتا ہے۔
# 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); | زبان | انسٹال | بیس 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 SDKs
سرکاری Anthropic SDKs 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())); | زبان | انسٹال | بیس 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 ہم آہنگی کے صفحے پر ہیں۔ Anthropic
SDKs کس پر بھروسا کر سکتے ہیں
- درخواست کا جو فیلڈ API استعمال نہیں کرتی وہ قبول کیا جاتا ہے۔ جو فیلڈ API جانتی ہے اور غلط قسم کے ساتھ بھیجا جائے اس کا جواب
422سے دیا جاتا ہے۔ - SDKs جو ورژن اور بیٹا ہیڈرز شامل کرتے ہیں (
anthropic-version،anthropic-beta،openai-beta) وہ قبول کیے جاتے ہیں۔ ان میں سے کوئی بھی لازمی نہیں۔ - جواب کا
modelشائع شدہ id ہوتا ہے، اس لیے آپ اسے جوں کا توں واپس بھیج سکتے ہیں۔ /v1/messagesپر جوابthinkingبلاک سے شروع ہو سکتا ہے۔ پہلا بلاک لینے کے بجائےtextقسم کے بلاکس پڑھیں۔- سٹریمنگ SDK کے اپنے سٹریم ہیلپرز کے ذریعے کام کرتی ہے۔ usage ہر سٹریم کے آخر میں آتا ہے۔
- ہر جواب میں
x-request-idہیڈر ہوتا ہے۔ اپناx-request-idبھیجیں تو وہی قدر واپس آتی ہے۔
کمیونٹی SDKs
دوسرے مصنفین کے OpenAI API کے لیے لکھے ہوئے کلائنٹس اسی طرح کام کرتے ہیں: کلائنٹ کو /v1 کے ساتھ بیس URL، آپ کی کلید اور ایک 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 کی ضرورت نہیں۔ کوئی بھی HTTP کلائنٹ جو JSON بھیج سکے کام کرتا ہے:
- JSON باڈی اور ہیڈر
Content-Type: application/jsonکے ساتھPOST۔ اس کے بغیر درخواست کا جواب415سے دیا جاتا ہے۔ - آپ کی کلید
Authorization: Bearer <key>میں یاx-api-key: <key>میں۔ دونوں ہر endpoint پر کام کرتے ہیں۔ - 32 MiB تک کی باڈی۔
"stream": trueکے ساتھ جواب server-sent event سٹریم (text/event-stream) ہے۔ اسے لائن بہ لائن پڑھیں اور بفر نہ کریں۔- ایرر ایک JSON باڈی ہے جس میں
error.typeاورerror.messageہوتے ہیں، HTTP اسٹیٹس کے ساتھ۔
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); سٹریم کے ایونٹس اور ایرر کی اقسام کے لیے دیکھیں: اسٹریمنگ غلطیاں