SDK
SDK yoyote ya OpenAI au Anthropic inafanya kazi bila marekebisho.
Shannon inatumia wire formats za OpenAI na Anthropic, kwa hiyo unatumia SDK rasmi za zote mbili kama zilivyo. Unabadilisha thamani tatu kwenye client: base URL, API key na model id. Code yako nyingine inabaki ile ile.
Cha kuweka
| Mpangilio | SDK za OpenAI | SDK za Anthropic |
|---|---|---|
| Base URL | https://api.shannon-ai.com/v1 | https://api.shannon-ai.com |
| API key | Key yako ya Shannon. SDK huituma kama Authorization: Bearer. | Key yako ya Shannon. SDK huituma kama x-api-key. |
| Model | Model id iliyochapishwa, kwa mfano shannon-3. | Model id iliyochapishwa, kwa mfano shannon-1.6-lite. |
| Endpoint inazofikia | /v1/chat/completions, /v1/responses, /v1/models | /v1/messages, /v1/messages/count_tokens |
| Environment variables | OPENAI_API_KEY na OPENAI_BASE_URL, zinazosomwa na SDK za Python na JavaScript usipopitisha thamani. | ANTHROPIC_API_KEY na ANTHROPIC_BASE_URL, zinazosomwa na SDK za Python na TypeScript usipopitisha thamani. |
Base URL hizo mbili hutofautiana kwa /v1: SDK ya OpenAI huongeza /chat/completions kwenye base URL yake, SDK ya Anthropic huongeza /v1/messages. Jina la model ambalo Shannon haichapishi hujibiwa kwa 400 na unknown model. Model na bei
Key yako iko kwenye ukurasa wa Keys na matumizi. Keys na matumizi
SDK za OpenAI
SDK rasmi za OpenAI huita POST /v1/chat/completions na POST /v1/responses. Kila mfano hutuma ujumbe mmoja wa user na kuchapisha jibu.
# 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); | Lugha | Sakinisha | Chaguo la base URL | Chanzo |
|---|---|---|---|
| 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 |
Kila field ya endpoint hizo mbili imeelezwa kwenye kurasa zake. Chat Completions Responses API
SDK za Anthropic
SDK rasmi za Anthropic huita POST /v1/messages. Zinahitaji max_tokens kwenye kila wito, kwa hiyo mifano inatumia shannon-1.6-lite, ambayo huitumia. Kila mfano huchapisha blocks za maandishi za jibu.
# 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())); | Lugha | Sakinisha | Chaguo la base URL | Chanzo |
|---|---|---|---|
| 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 |
Umbizo la Messages na tofauti zake ziko kwenye ukurasa wa ulinganifu wa Anthropic. Anthropic
Kile SDK zinaweza kutegemea
- Field ya ombi ambayo API haitumii inakubaliwa. Field ambayo API inaijua, ikitumwa kwa aina isiyo sahihi, hujibiwa kwa
422. - Headers za toleo na beta ambazo SDK huongeza (
anthropic-version,anthropic-beta,openai-beta) zinakubaliwa. Hakuna hata moja inayohitajika. modelya jibu ni id iliyochapishwa, kwa hiyo unaweza kuirudisha kama ilivyo.- Kwenye
/v1/messagesjibu linaweza kuanza na block yathinking. Soma blocks za ainatextbadala ya kuchukua block ya kwanza. - Streaming inafanya kazi kupitia stream helpers za SDK yenyewe. Usage hufika mwishoni mwa kila stream.
- Kila jibu hubeba header ya
x-request-id. Tumax-request-idyako mwenyewe na thamani ile ile inarudi.
SDK za jamii
Clients zilizoandikwa kwa OpenAI API na waandishi wengine hufanya kazi kwa njia ile ile: ipe client base URL pamoja na /v1, key yako na model id ya Shannon. Hizi zinatunzwa na waandishi wao, si na Shannon.
| Lugha | Sakinisha | 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 |
Bila SDK
Huhitaji SDK. HTTP client yoyote inayoweza kutuma JSON inafanya kazi:
POSTyenye mwili wa JSON na headerContent-Type: application/json. Bila hiyo ombi hujibiwa kwa415.- Key yako kwenye
Authorization: Bearer <key>au kwenyex-api-key: <key>. Zote mbili zinafanya kazi kwenye kila endpoint. - Mwili wa hadi 32 MiB.
- Kwa
"stream": truejibu ni stream ya server-sent events (text/event-stream). Isome mstari kwa mstari na usiihifadhi kwenye buffer. - Kosa ni mwili wa JSON wenye
error.typenaerror.message, kando ya 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); Kwa matukio ya stream na aina za makosa, tazama: Kutiririsha Ushughulikiaji wa Makosa