SDK
SDK OpenAI na Anthropic rehetra dia miasa avy hatrany.
Shannon dia miteny amin'ny endrika wire OpenAI sy Anthropic, ka azonao ampiasaina araka izy ny SDK ofisialy roa. Mamadika sanda telo ao amin'ny client ianao: ny base URL, ny API key ary ny id model. Ny sisa amin'ny kaody-nao dia tsy miova.
Izay apetraka
| Setting | SDK OpenAI | SDK Anthropic |
|---|---|---|
| Base URL | https://api.shannon-ai.com/v1 | https://api.shannon-ai.com |
| API key | Ny Shannon key-nao. Ny SDK dia mandefa azy ho Authorization: Bearer. | Ny Shannon key-nao. Ny SDK dia mandefa azy ho x-api-key. |
| Model | Id model navoaka, ohatra shannon-3. | Id model navoaka, ohatra shannon-1.6-lite. |
| Endpoint azony | /v1/chat/completions, /v1/responses, /v1/models | /v1/messages, /v1/messages/count_tokens |
| Environment variable | OPENAI_API_KEY sy OPENAI_BASE_URL, vakian'ny SDK Python sy JavaScript rehefa tsy mandefa sanda ianao. | ANTHROPIC_API_KEY sy ANTHROPIC_BASE_URL, vakian'ny SDK Python sy TypeScript rehefa tsy mandefa sanda ianao. |
Ny base URL roa dia tsy mitovy amin'ny /v1: ny SDK OpenAI dia manampy /chat/completions amin'ny base URL-ny, ny SDK Anthropic kosa manampy /v1/messages. Ny anaran'ny model tsy navoakan'i Shannon dia valiana amin'ny 400 sy unknown model. Model & vidiny
Ny key-nao dia ao amin'ny pejy Keys & usage. Keys & usage
SDK OpenAI
Ny SDK OpenAI ofisialy dia miantso ny POST /v1/chat/completions sy POST /v1/responses. Ny ohatra tsirairay dia mandefa hafatry ny mpampiasa iray ary manonta ny valiny.
# 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); | Fiteny | Fametrahana | Safidy base URL | Source |
|---|---|---|---|
| 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 |
Ny saha rehetra amin'ny endpoint roa dia voasoratra ao amin'ny pejiny manokana. Chat Completions Responses API
SDK Anthropic
Ny SDK Anthropic ofisialy dia miantso ny POST /v1/messages. Mitaky max_tokens isaky ny antso izy ireo, ka ny ohatra dia mampiasa shannon-1.6-lite, izay mampihatra azy. Ny ohatra tsirairay dia manonta ny text block amin'ny valiny.
# 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())); | Fiteny | Fametrahana | Safidy base URL | Source |
|---|---|---|---|
| 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 |
Ny endrika Messages sy ny tsy fitoviany dia ao amin'ny pejy Anthropic compatibility. Anthropic
Izay azon'ny SDK iankinana
- Ny saha fangatahana tsy ampiasain'ny API dia raisina. Ny saha fantatry ny API, alefa amin'ny karazana diso, dia valiana amin'ny
422. - Ny header version sy beta ampiana ny SDK (
anthropic-version,anthropic-beta,openai-beta) dia raisina. Tsy ilaina na iray aza. - Ny
modelan'ny valiny dia ny id navoaka, ka azonao averina alefa araka izy. - Amin'ny
/v1/messages, ny valiny dia mety manomboka amin'ny blockthinking. Vakio ny block karazanatextfa aza raisina ny block voalohany. - Mandeha amin'ny stream helper an'ny SDK ny streaming. Tonga amin'ny faran'ny stream rehetra ny usage.
- Ny valiny rehetra dia mitondra header
x-request-id. Alefaso nyx-request-idanao ary miverina ny sanda mitovy.
SDK avy amin'ny vondrom-piarahamonina
Ny client nosoratan'ny mpanoratra hafa ho an'ny API OpenAI dia mandeha mitovy: omeo ny client ny base URL miaraka amin'ny /v1, ny key-nao ary id model Shannon. Ireo dia tantanan'ny mpanoratra azy, fa tsy an'i Shannon.
| Fiteny | Fametrahana | 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 |
Tsy misy SDK
Tsy mila SDK ianao. Client HTTP rehetra afaka mandefa JSON dia mandeha:
POSTmiaraka amin'ny body JSON sy ny headerContent-Type: application/json. Raha tsy misy dia valiana amin'ny415ny fangatahana.- Ny key-nao ao amin'ny
Authorization: Bearer <key>na ao amin'nyx-api-key: <key>. Samy mandeha amin'ny endpoint rehetra. - Body hatramin'ny 32 MiB.
- Miaraka amin'ny
"stream": trueny valiny dia stream server-sent event (text/event-stream). Vakio andalana isan-andalana ary aza buffer-ina. - Ny hadisoana dia body JSON misy
error.typesyerror.message, eo anilan'ny status 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); Ho an'ny event ao anaty stream sy ny karazana hadisoana, jereo: Fandefasana mivantana Fitantanana hadisoana