SDKs
Kowane OpenAI ko Anthropic SDK yana aiki kai tsaye.
Shannon yana magana da tsarin wire na OpenAI da na Anthropic, don haka kuna amfani da SDKs na hukuma na duka biyun yadda suke. Kuna canza ƙima uku a cikin client: base URL, API key da id na model. Sauran code ɗinku yana nan yadda yake.
Abin da za a saita
| Saiti | OpenAI SDKs | Anthropic SDKs |
|---|---|---|
| Base URL | https://api.shannon-ai.com/v1 | https://api.shannon-ai.com |
| API key | Maɓallinku na Shannon. SDK yana aika shi a matsayin Authorization: Bearer. | Maɓallinku na Shannon. SDK yana aika shi a matsayin x-api-key. |
| Model | Id na model da aka wallafa, misali shannon-3. | Id na model da aka wallafa, misali shannon-1.6-lite. |
| Endpoints da yake kaiwa | /v1/chat/completions, /v1/responses, /v1/models | /v1/messages, /v1/messages/count_tokens |
| Environment variables | OPENAI_API_KEY da OPENAI_BASE_URL, Python da JavaScript SDKs ne ke karanta su idan ba ku ba da ƙima ba. | ANTHROPIC_API_KEY da ANTHROPIC_BASE_URL, Python da TypeScript SDKs ne ke karanta su idan ba ku ba da ƙima ba. |
Base URLs biyun suna bambanta da /v1: OpenAI SDK yana ƙara /chat/completions a base URL ɗinsa, Anthropic SDK yana ƙara /v1/messages. Sunan model da Shannon bai wallafa ba ana amsa shi da 400 da unknown model. Models & farashi
Maɓallinku yana shafin Keys & usage. Maɓallai & amfani
OpenAI SDKs
OpenAI SDKs na hukuma suna kiran POST /v1/chat/completions da POST /v1/responses. Kowane samfurin yana aika saƙon mai amfani ɗaya kuma yana buga amsar.
# 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); | Harshe | Shigarwa | Zaɓin Base URL | Tushe |
|---|---|---|---|
| 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 |
Kowane field na endpoints biyun an bayyana shi a shafukansu na kansu. Chat Completions Responses API
Anthropic SDKs
Anthropic SDKs na hukuma suna kiran POST /v1/messages. Suna buƙatar max_tokens a kowane kira, don haka samfuran suna amfani da shannon-1.6-lite, wanda ke aiwatar da shi. Kowane samfurin yana buga text blocks na amsar.
# 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())); | Harshe | Shigarwa | Zaɓin Base URL | Tushe |
|---|---|---|---|
| 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 |
Tsarin Messages da bambance-bambancensa suna shafin daidaito da Anthropic. Tsarin Anthropic
Abin da SDKs za su iya dogara da shi
- Ana karɓar field na request da API ba ya amfani da shi. Field da API ya sani, idan aka aika shi da nau'in da bai dace ba, ana amsa shi da
422. - Ana karɓar headers na version da beta da SDKs ke ƙarawa (
anthropic-version,anthropic-beta,openai-beta). Babu ɗayansu da ake buƙata. modelna amsa shi ne id da aka wallafa, don haka kuna iya mayar da shi yadda yake.- A
/v1/messagesamsa na iya farawa da block nathinking. Ku karanta blocks na nau'intextmaimakon ɗaukar block na farko. - Streaming yana aiki ta stream helpers na SDK da kansa. Usage yana zuwa a ƙarshen kowane stream.
- Kowace amsa tana ɗauke da header na
x-request-id. Ku aikax-request-idɗinku kuma ƙima ɗaya za ta dawo.
SDKs na al'umma
Clients da wasu marubuta suka rubuta don OpenAI API suna aiki iri ɗaya: ku ba client ɗin base URL mai /v1, maɓallinku da id na model na Shannon. Marubutansu ne ke kula da su, ba Shannon ba.
| Harshe | Shigarwa | 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 |
Ba tare da SDK ba
Ba kwa buƙatar SDK. Duk HTTP client da zai iya aika JSON yana aiki:
POSTda body na JSON da headerContent-Type: application/json. Idan babu shi, ana amsa request da415.- Maɓallinku a cikin
Authorization: Bearer <key>ko a cikinx-api-key: <key>. Duka biyun suna aiki a kowane endpoint. - Body har zuwa 32 MiB.
- Da
"stream": trueamsar stream ce ta server-sent events (text/event-stream). Ku karanta ta layi-layi kuma kada ku yi buffering ɗinta. - Kuskure body ne na JSON mai
error.typedaerror.message, kusa da HTTP status.
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); Don events na stream da nau'in kurakurai, duba: Yawo Kuskuren Gudanarwa