SDKዎች
ዝኾነ ናይ OpenAI ወይ Anthropic SDK ብቐጥታ ይሰርሕ።
Shannon ቅርጺ OpenAI ከምኡውን Anthropic ይዛረብ፣ ስለዚ ወግዓውያን SDKs ናይ ክልቲኦም ከም ዘለዉ ትጥቀሞም። ኣብ client ሰለስተ ዋጋታት ትቕይር፦ base URL፣ API key ከምኡውን id ናይ ሞዴል። እቲ ዝተረፈ ኮድካ ከምኡ ይተርፍ።
እንታይ ክዝጋጅእ
| Setting | OpenAI SDKs | Anthropic SDKs |
|---|---|---|
| Base URL | https://api.shannon-ai.com/v1 | https://api.shannon-ai.com |
| API key | ቁልፊ Shannon ናትካ። እቲ SDK ከም Authorization: Bearer ይልእኾ። | ቁልፊ Shannon ናትካ። እቲ SDK ከም x-api-key ይልእኾ። |
| ሞዴል | ዝታተመ id ናይ ሞዴል፣ ንኣብነት shannon-3። | ዝታተመ id ናይ ሞዴል፣ ንኣብነት shannon-1.6-lite። |
| Endpoints ዝበጽሖም | /v1/chat/completions, /v1/responses, /v1/models | /v1/messages, /v1/messages/count_tokens |
| Environment variables | OPENAI_API_KEY ከምኡውን OPENAI_BASE_URL፣ ብ SDKs ናይ Python ከምኡውን JavaScript ዋላ ሓንቲ ዋጋ ዘይሃብካ እንተ ኾይኑ ይንበቡ። | ANTHROPIC_API_KEY ከምኡውን ANTHROPIC_BASE_URL፣ ብ SDKs ናይ Python ከምኡውን TypeScript ዋላ ሓንቲ ዋጋ ዘይሃብካ እንተ ኾይኑ ይንበቡ። |
እተን ክልተ base URLs ብ /v1 ይፈላለያ፦ OpenAI SDK ናብ base URL ናቱ /chat/completions ይውስኽ፣ Anthropic SDK ድማ /v1/messages። Shannon ዘየሕትሞ ስም ሞዴል ብ 400 ከምኡውን unknown model ይምለስ። ሞዴላትን ዋጋን
ቁልፍካ ኣብ ገጽ Keys & usage እዩ። ቁልፍታትን ኣጠቓቕማን
OpenAI SDKs
እቶም ወግዓውያን OpenAI SDKs POST /v1/chat/completions ከምኡውን POST /v1/responses ይጽውዑ። ነፍሲ ወከፍ ኣብነት ሓንቲ መልእኽቲ ተጠቃሚ ይልእኽ ከምኡውን መልሲ የሕትም።
# 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); | ቋንቋ | Install | Option ናይ 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 |
ነፍሲ ወከፍ field ናይ እተን ክልተ endpoints ኣብ ናተን ገጻት ተገሊጹ ኣሎ። Chat Completions Responses API
Anthropic SDKs
እቶም ወግዓውያን Anthropic SDKs POST /v1/messages ይጽውዑ። ነፍሲ ወከፍ ጥሪ max_tokens የድልዩ፣ ስለዚ እቶም ኣብነታት shannon-1.6-lite ይጥቀሙ፣ ንሱ ይትግብሮ። ነፍሲ ወከፍ ኣብነት እቲ blocks ጽሑፍ ናይ መልሲ የሕትም።
# 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())); | ቋንቋ | Install | Option ናይ 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 |
ቅርጺ Messages ከምኡውን ፍልልያቱ ኣብ ገጽ Anthropic compatibility እዮም። Anthropic
SDKs ኣብ እንታይ ክምርኮሱ ይኽእሉ
- API ዘይጥቀመሉ field ናይ ጠለብ ይቕበል። API ዝፈልጦ field ግን ጌጋ ዓይነት ምስ ዝልኣኽ ብ
422ይምለስ። - እቲ version ከምኡውን beta headers እቶም SDKs ዝወስኹ (
anthropic-version፣anthropic-beta፣openai-beta) ይቕበሉ። ዝኾነ ኣይድለን። modelናይ ምላሽ እቲ ዝታተመ id እዩ፣ ስለዚ ከም ዘሎ ክትመልሶ ትኽእል።- ኣብ
/v1/messagesምላሽ ብ blockthinkingክጅምር ይኽእል። ቀዳማይ block ምውሳድ ኣብ ክንዲ ምግባር፣ እቲ blocks ዓይነትtextኣንብብ። - Streaming ብ stream helpers ናይ SDK ባዕሉ ይሰርሕ። Usage ኣብ መወዳእታ ነፍሲ ወከፍ stream ይመጽእ።
- ነፍሲ ወከፍ ምላሽ header
x-request-idኣለዎ። ናትካx-request-idልኣኽ እሞ ተመሳሳሊ ዋጋ ይምለስ።
Community SDKs
Clients ን OpenAI API ብካልኦት ደራሲያን ዝተጻሕፉ ብተመሳሳሊ ይሰርሑ፦ ንclient እቲ base URL ምስ /v1፣ ቁልፍካ ከምኡውን id ናይ Shannon ሞዴል ሃቦ። እዚኣቶም ብደራሲኦም እምበር ብShannon ኣይእረሙን።
| ቋንቋ | Install | 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 |
ብዘይ SDK
SDK ኣየድልየካን። ዝኾነ JSON ክልእኽ ዝኽእል HTTP client ይሰርሕ፦
POSTምስ JSON body ከምኡውን headerContent-Type: application/json። ብዘይኡ እቲ ጠለብ ብ415ይምለስ።- ቁልፍካ ኣብ
Authorization: Bearer <key>ወይ ኣብx-api-key: <key>። ክልቲኦም ኣብ ነፍሲ ወከፍ endpoint ይሰርሑ። - body ክሳብ 32 MiB።
- ምስ
"stream": trueእቲ ምላሽ server-sent event stream (text/event-stream) እዩ። መስመር ብመስመር ኣንብቦ ከምኡውን buffer ኣይትግብሮ። - ጌጋ JSON body እዩ ምስ
error.typeከምኡውንerror.message፣ ጎኒ 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); ን events ናይ stream ከምኡውን ዓይነታት ጌጋ፣ ርአ፦ ስትሪም ሓጋይ ኣስተዳደር