SDKak
OpenAI edo Anthropic SDK edozein konfiguraziorik gabe funtzionatzen du.
Shannonek OpenAI eta Anthropic wire formatuak hitz egiten ditu, beraz bien SDK ofizialak ahalik eta aldaketa gutxienekin erabil ditzakezu. Bezeroan hiru balio aldatzen dituzu: base URL-a, API giltza eta modelo id-a. Zure kodearen gainerakoa berdin geratzen da.
Zer ezarri
| Ezarpena | OpenAI SDKak | Anthropic SDKak |
|---|---|---|
| Base URL | https://api.shannon-ai.com/v1 | https://api.shannon-ai.com |
| API giltza | Zure Shannon giltza. SDKak Authorization: Bearer gisa bidaltzen du. | Zure Shannon giltza. SDKak x-api-key gisa bidaltzen du. |
| Modeloa | Argitaratutako modelo id bat, adibidez shannon-3. | Argitaratutako modelo id bat, adibidez shannon-1.6-lite. |
| Iristen dituen endpointak | /v1/chat/completions, /v1/responses, /v1/models | /v1/messages, /v1/messages/count_tokens |
| Ingurune-aldagaiak | OPENAI_API_KEY eta OPENAI_BASE_URL, Python eta JavaScript SDKek irakurtzen dituzte baliorik pasatzen ez duzunean. | ANTHROPIC_API_KEY eta ANTHROPIC_BASE_URL, Python eta TypeScript SDKek irakurtzen dituzte baliorik pasatzen ez duzunean. |
Bi base URLek /v1 aldea dute: OpenAI SDK batek /chat/completions gehitzen dio bere base URL-ari, Anthropic SDK batek /v1/messages. Shannonek argitaratzen ez duen modelo izen bati 400 eta unknown model erantzuten zaio. Modeloak eta prezioak
Zure giltza Keys & usage orrian dago. Gakoak eta erabilera
OpenAI SDKak
OpenAI SDK ofizialek POST /v1/chat/completions eta POST /v1/responses deitzen dituzte. Adibide bakoitzak erabiltzaile-mezu bat bidaltzen du eta erantzuna inprimatzen du.
# 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); | Hizkuntza | Instalatu | Base URL aukera | Iturria |
|---|---|---|---|
| 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 |
Bi endpointen eremu guztiak beren orrietan azaltzen dira. Chat Completions Responses API-a
Anthropic SDKak
Anthropic SDK ofizialek POST /v1/messages deitzen dute. Dei guztietan max_tokens eskatzen dute, beraz adibideek shannon-1.6-lite erabiltzen dute, hark aplikatzen baitu. Adibide bakoitzak erantzunaren testu-blokeak inprimatzen ditu.
# 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())); | Hizkuntza | Instalatu | Base URL aukera | Iturria |
|---|---|---|---|
| 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 formatua eta bere desberdintasunak Anthropic bateragarritasun orrian daude. Anthropic
SDKek zertan fida daitezkeen
- APIak erabiltzen ez duen eskaera-eremu bat onartzen da. APIak ezagutzen duen eremu bat mota okerrarekin bidaltzen bada,
422-rekin erantzuten da. - SDKek gehitzen dituzten bertsio- eta beta-goiburuak (
anthropic-version,anthropic-beta,openai-beta) onartzen dira. Bat ere ez da beharrezkoa. - Erantzun baten
model-a argitaratutako id-a da, beraz bere horretan bidal dezakezu berriro. /v1/messages-en erantzun batthinkingbloke batekin has daiteke. Irakurritextmotako blokeak, lehen bloketzat hartu beharrean.- Streaming-ak SDKaren stream laguntzaile propioen bidez funtzionatzen du. Erabilera stream bakoitzaren amaieran iristen da.
- Erantzun guztiek
x-request-idgoiburu bat daramate. Bidali zurex-request-idpropioa eta balio bera itzultzen da.
Komunitateko SDKak
Beste egile batzuek OpenAI API-rako idatzitako bezeroek berdin funtzionatzen dute: eman bezeroari /v1 duen base URL-a, zure giltza eta Shannon modelo id bat. Horiek beren egileek mantentzen dituzte, ez Shannonek.
| Hizkuntza | Instalatu | Bezeroa |
|---|---|---|
| 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 |
SDKrik gabe
Ez duzu SDKrik behar. JSON bidal dezakeen edozein HTTP bezerok balio du:
POSTJSON gorputzarekin etaContent-Type: application/jsongoiburuarekin. Hori gabe eskaerari415-ekin erantzuten zaio.- Zure giltza
Authorization: Bearer <key>-en edox-api-key: <key>-n. Biek funtzionatzen dute endpoint guztietan. - 32 MiB arteko gorputza.
"stream": true-rekin erantzuna server-sent event stream bat da (text/event-stream). Irakurri lerroz lerro eta ez bufferizatu.- Errore bat JSON gorputz bat da,
error.typeetaerror.messagedituena, HTTP egoeraren ondoan.
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); Streamaren gertaerak eta errore motak ikusteko, ikusi: Streaminga Errore‑kudeaketa