SDKs
કોઈપણ OpenAI અથવા Anthropic SDK સીધો કામ કરે છે.
Shannon OpenAI અને Anthropic બંનેના wire ફોર્મેટ બોલે છે, તેથી તમે બંનેના સત્તાવાર SDKs જેમ છે તેમ વાપરો છો. તમે ક્લાયન્ટમાં ત્રણ કિંમતો બદલો છો: base URL, API કી અને મોડેલ id. તમારો બાકીનો કોડ એ જ રહે છે.
શું સેટ કરવું
| સેટિંગ | OpenAI SDKs | Anthropic SDKs |
|---|---|---|
| Base 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. |
| તે જે એન્ડપોઇન્ટ્સ સુધી પહોંચે છે | /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 URL માં /v1 નો તફાવત છે: OpenAI SDK તેના base 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); | ભાષા | ઇન્સ્ટોલ | 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 |
બંને એન્ડપોઇન્ટ્સના દરેક ફીલ્ડનું વર્ણન તેમના પોતાના પેજ પર છે. 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())); | ભાષા | ઇન્સ્ટોલ | 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 કમ્પેટિબિલિટી પેજ પર છે. Anthropic ફોર્મેટ
SDKs શેના પર આધાર રાખી શકે
- જે રિક્વેસ્ટ ફીલ્ડ API વાપરતું નથી તે સ્વીકારાય છે. API જે ફીલ્ડ જાણે છે તે ખોટા પ્રકાર સાથે મોકલાય તો
422થી જવાબ અપાય છે. - SDKs જે વર્ઝન અને beta હેડર્સ ઉમેરે છે (
anthropic-version,anthropic-beta,openai-beta) તે સ્વીકારાય છે. તેમાંથી કોઈ ફરજિયાત નથી. - જવાબનું
modelપ્રકાશિત id હોય છે, તેથી તમે તેને જેમ છે તેમ પાછું મોકલી શકો. /v1/messagesપર જવાબthinkingબ્લોકથી શરૂ થઈ શકે છે. પહેલો બ્લોક લેવાને બદલેtextપ્રકારના બ્લોક્સ વાંચો.- Streaming SDK ના પોતાના સ્ટ્રીમ હેલ્પર્સ દ્વારા કામ કરે છે. વપરાશ (usage) દરેક સ્ટ્રીમના અંતે આવે છે.
- દરેક જવાબમાં
x-request-idહેડર હોય છે. તમારું પોતાનુંx-request-idમોકલો અને એ જ કિંમત પાછી આવે છે.
કમ્યુનિટી SDKs
અન્ય લેખકોએ OpenAI API માટે લખેલા ક્લાયન્ટ્સ એ જ રીતે કામ કરે છે: ક્લાયન્ટને /v1 સાથેનું base 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 ની જરૂર નથી. JSON મોકલી શકે તેવો કોઈ પણ HTTP ક્લાયન્ટ ચાલે છે:
- JSON બોડી અને
Content-Type: application/jsonહેડર સાથેPOST. તેના વિના રિક્વેસ્ટનો જવાબ415થી અપાય છે. - તમારી કી
Authorization: Bearer <key>માં અથવાx-api-key: <key>માં. બંને દરેક એન્ડપોઇન્ટ પર ચાલે છે. - 32 MiB સુધીની બોડી.
"stream": trueસાથે જવાબ server-sent event સ્ટ્રીમ (text/event-stream) હોય છે. તેને લાઇન પ્રમાણે વાંચો અને બફર ન કરો.- એરર એટલે 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); સ્ટ્રીમની ઇવેન્ટ્સ અને એરર પ્રકારો માટે જુઓ: સ્ટ્રીમિંગ ભૂલ સંભાળ