SDK
Jebkurš OpenAI vai Anthropic SDK darbojas uzreiz.
Shannon runā gan OpenAI, gan Anthropic pārraides formātos, tāpēc abu oficiālos SDK varat lietot tādus, kādi tie ir. Klientā mainiet trīs vērtības: bāzes URL, API atslēgu un modeļa id. Pārējais jūsu kods paliek tāds pats.
Ko iestatīt
| Iestatījums | OpenAI SDK | Anthropic SDK |
|---|---|---|
| Bāzes URL | https://api.shannon-ai.com/v1 | https://api.shannon-ai.com |
| API atslēga | Jūsu Shannon atslēga. SDK to sūta kā Authorization: Bearer. | Jūsu Shannon atslēga. SDK to sūta kā x-api-key. |
| Modelis | Publicēts modeļa id, piemēram, shannon-3. | Publicēts modeļa id, piemēram, shannon-1.6-lite. |
| Galapunkti, ko tas sasniedz | /v1/chat/completions, /v1/responses, /v1/models | /v1/messages, /v1/messages/count_tokens |
| Vides mainīgie | OPENAI_API_KEY un OPENAI_BASE_URL, ko Python un JavaScript SDK nolasa, ja nenododat vērtību. | ANTHROPIC_API_KEY un ANTHROPIC_BASE_URL, ko Python un TypeScript SDK nolasa, ja nenododat vērtību. |
Abi bāzes URL atšķiras ar /v1: OpenAI SDK savam bāzes URL pievieno /chat/completions, Anthropic SDK pievieno /v1/messages. Uz modeļa nosaukumu, ko Shannon nepublicē, atbild ar 400 un unknown model. Modeļi un cenas
Jūsu atslēga ir lapā Atslēgas un izmantošana. Atslēgas un izmantošana
OpenAI SDK
Oficiālie OpenAI SDK izsauc POST /v1/chat/completions un POST /v1/responses. Katrs piemērs nosūta vienu lietotāja ziņojumu un izdrukā atbildi.
# 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); | Valoda | Instalēšana | Bāzes URL opcija | Avots |
|---|---|---|---|
| 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 |
Abu galapunktu katrs lauks ir aprakstīts to lapās. Chat Completions Responses API
Anthropic SDK
Oficiālie Anthropic SDK izsauc POST /v1/messages. Tie katrā izsaukumā pieprasa max_tokens, tāpēc piemēros izmantots shannon-1.6-lite, kas to piemēro. Katrs piemērs izdrukā atbildes teksta blokus.
# 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())); | Valoda | Instalēšana | Bāzes URL opcija | Avots |
|---|---|---|---|
| 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 formāts un tā atšķirības ir lapā Anthropic savietojamība. Anthropic
Uz ko SDK var paļauties
- Pieprasījuma lauks, ko API neizmanto, tiek pieņemts. Uz lauku, ko API pazīst, nosūtītu ar nepareizu tipu, atbild ar
422. - Versiju un beta galvenes, ko SDK pievieno (
anthropic-version,anthropic-beta,openai-beta), tiek pieņemtas. Neviena no tām nav obligāta. - Atbildes
modelir publicētais id, tāpēc to varat sūtīt atpakaļ tādu, kāds tas ir. - Galapunktā
/v1/messagesatbilde var sākties ar blokuthinking. Lasiet blokus ar tiputext, nevis ņemiet pirmo bloku. - Straumēšana darbojas ar paša SDK straumes palīgiem. Izmantošanas dati ierodas katras straumes beigās.
- Katra atbilde nes galveni
x-request-id. Nosūtiet savux-request-id, un tā pati vērtība atgriežas.
Kopienas SDK
Citu autoru rakstīti klienti OpenAI API darbojas tāpat: dodiet klientam bāzes URL ar /v1, savu atslēgu un Shannon modeļa id. Tos uztur to autori, nevis Shannon.
| Valoda | Instalēšana | Klients |
|---|---|---|
| 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 |
Bez SDK
SDK nav vajadzīgs. Der jebkurš HTTP klients, kas var sūtīt JSON:
POSTar JSON pamattekstu un galveniContent-Type: application/json. Bez tās uz pieprasījumu atbild ar415.- Jūsu atslēga laukā
Authorization: Bearer <key>vaix-api-key: <key>. Abi darbojas katrā galapunktā. - Pamatteksts līdz 32 MiB.
- Ar
"stream": trueatbilde ir servera sūtīto notikumu straume (text/event-stream). Lasiet to pa rindām un nebuferējiet. - Kļūda ir JSON pamatteksts ar
error.typeunerror.message, blakus HTTP statusam.
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); Straumes notikumus un kļūdu tipus skatiet šeit: Straumēšana Kļūdu apstrāde