Dokumentacja
Smart AIPI udostępnia API kompatybilne zarówno z OpenAI, jak i Anthropic. Używaj naszej usługi z dowolnym istniejącym OpenAI lub Anthropic SDK, narzędziem albo aplikacją, po prostu zmieniając base URL. Bez zmian w kodzie.
OpenAI Base URL
https://api.smartaipi.com/v1
Anthropic Base URL
https://api.smartaipi.com
Narzędzia CLI i MCP
Smart AIPI udostępnia dwa pakiety npm, które pomagają deweloperom pracować ze swoimi kontami:
Zainstaluj oba
npm install -g smart-aipi @smart-aipi/mcp
Zainstaluj osobno
npm install -g smart-aipi
npm install -g @smart-aipi/mcp
Uwierzytelnianie
Wszystkie żądania API wymagają API key. Ten sam klucz działa z obiema metodami uwierzytelniania:
Authorization: Bearer YOUR_API_KEY
x-api-key: YOUR_API_KEY
Przewodnik migracji
Migracja zajmuje mniej niż minutę. Nasze API jest w 100% kompatybilne z endpointami OpenAI i Anthropic.
Z OpenAI
Pobierz swój API key Smart AIPI
Zarejestruj się i utwórz API key w swoim dashboard.
Zmień base URL
Zamień https://api.openai.com/v1 na https://api.smartaipi.com/v1
Zaktualizuj swój API key
Użyj swojego klucza Smart AIPI zamiast klucza OpenAI. To wszystko!
Z Anthropic
Pobierz swój API key Smart AIPI
Zarejestruj się i utwórz API key w swoim dashboard.
Zmień base URL
Zamień https://api.anthropic.com na https://api.smartaipi.com
Zaktualizuj swój API key
Użyj swojego klucza Smart AIPI zamiast klucza Anthropic. Twoje obecne nazwy modeli Claude działają bez zmian.
Twój istniejący kod, SDK i aplikacje korzystające z Anthropic Messages API będą działać bez żadnych zmian w kodzie. Nazwy modeli Claude (claude-opus-4-6, claude-sonnet-4-5-20250929, claude-haiku-4-5-20251001) są automatycznie kierowane do wydajnych modeli GPT-5.4. Każda odpowiedź zawiera x-actual-model header pokazujący rzeczywisty model backendu dla pełnej przejrzystości.
Chat Completions
Utwórz chat completion dla podanych wiadomości i modelu. To główny endpoint do interakcji z language models.
Parametry request body
| Parametr | Typ | Wymagane | Opis |
|---|---|---|---|
| model | string | Tak | ID modelu do użycia (np. "gpt-6-astra", "gpt-5.6-sol") |
| messages | array | Tak | Array obiektów wiadomości z rolą i treścią |
| temperature | number | Nie | Temperatura próbkowania (0-2). Wyższa = bardziej losowo. Domyślnie: 1 |
| max_tokens | integer | Nie | Maksymalna liczba tokens do wygenerowania w odpowiedzi |
| top_p | number | Nie | Nucleus sampling. Uwzględnia tokens z prawdopodobieństwem top_p. Domyślnie: 1 |
| frequency_penalty | number | Nie | Nakłada karę na tokens na podstawie częstotliwości (-2 do 2). Domyślnie: 0 |
| presence_penalty | number | Nie | Nakłada karę na tokens na podstawie obecności (-2 do 2). Domyślnie: 0 |
| stop | string/array | Nie | Sekwencje stop. Maksymalnie 4 sekwencje, w których generowanie zostanie zatrzymane. |
| stream | boolean | Nie | Włącz streaming odpowiedzi przez SSE. Domyślnie: false |
Role wiadomości
system- system - Ustawia zachowanie/osobowość asystentauser- user - Wiadomości od użytkownikaassistant- assistant - Poprzednie odpowiedzi asystenta
Przykłady kodu
from openai import OpenAI
client = OpenAI(
base_url="https://api.smartaipi.com/v1",
api_key="your-api-key"
)
response = client.chat.completions.create(
model="gpt-6-astra",
messages=[
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "Hello!"}
],
temperature=0.7,
max_tokens=1000
)
print(response.choices[0].message.content)
Streaming
Włącz streaming, aby odbierać tokens w miarę ich generowania przez Server-Sent Events (SSE). Zapewnia to lepsze doświadczenie użytkownika przy długich odpowiedziach.
Ustaw "stream": true w swoim żądaniu, aby włączyć streaming.
Przykład streaming
from openai import OpenAI
client = OpenAI(
base_url="https://api.smartaipi.com/v1",
api_key="your-api-key"
)
# Enable streaming
stream = client.chat.completions.create(
model="gpt-6-astra",
messages=[{"role": "user", "content": "Write a poem"}],
stream=True
)
# Process chunks as they arrive
for chunk in stream:
if chunk.choices[0].delta.content:
print(chunk.choices[0].delta.content, end="")
Wysiłek reasoning
Kontroluj głębokość reasoning za pomocą parametru reasoning_effort dla modeli GPT-5.
Smart AIPI domyślnie używa reasoning.effort = "high" dla wszystkich żądań Responses API.
Po szeroko zakrojonych testach ustaliliśmy, że high to najlepszy poziom wysiłku reasoning do praktycznego użycia — zapewnia głębokie, niezawodne użycie narzędzi i analizę bez kosztu opóźnienia jak w przypadku xhigh. Możesz to nadpisać, ustawiając jawnie wysiłek reasoning w swoim żądaniu.
Smart AIPI domyślnie ustawia store = false dla wszystkich żądań Responses API i WebSocket.
Upstream API wymaga store: false dla GPT-5.4 i nowszych modeli. Jeśli jawnie ustawisz store: true w swoich żądaniach, otrzymasz błąd "Store must be set to false". Usuń to albo ustaw na false.
Obsługiwane modele
API Responses
gpt-5.4, gpt-5.3, gpt-5.1, gpt-5 i wszystkie warianty Codex
Tylko Chat Completions
gpt-5.4-nano — wsparcie dla reasoning jest dostępne tylko w /v1/chat/completions .
Poziomy wysiłku reasoning
none- Brak reasoning. Całkowicie pomija myślenie.low- Minimalny reasoning. Świetne do prostych zadań.medium- Zbalansowana szybkość i głębokość.high- Głęboka analiza dla złożonych problemów. (Domyślnie w Smart AIPI)xhigh- Ekstra wysoki. Maksymalna głębokość reasoning dla najtrudniejszych problemów.
Fast Mode (przetwarzanie priorytetowe)
Użyj service_tier: "priority" dla przetwarzania priorytetowego z niższym opóźnieniem. Tego właśnie używa polecenie /fast w Codex CLI. Nie zmienia to głębokości reasoning — otrzymujesz tę samą jakość, szybciej.
Cennik: Przetwarzanie priorytetowe jest rozliczane 1.5x standardowej stawki. Na przykład GPT-5.4 output zwykle kosztuje $3.75/1M tokens — z priorytetem kosztuje $5.625/1M tokens.
response = client.responses.create(
model="gpt-6-astra",
input="Refactor this function",
service_tier="priority" # priority processing, lower latency
)
API Chat Completions
response = client.chat.completions.create(
model="gpt-6-astra",
messages=[{"role": "user", "content": "Analyze this code for bugs..."}],
reasoning_effort="high" # or "xhigh" for maximum depth
)
API Responses
# Reasoning is set via the "reasoning" object
response = client.responses.create(
model="gpt-6-astra",
input=[{"role": "user", "content": "Refactor this function..."}],
reasoning={"effort": "high"} # defaults to "high" on Smart AIPI
)
Generowanie obrazów
Generuj obrazy z tekstowych prompts przy użyciu naszego endpoint do generowania obrazów.
/v1/images/variations ) nie są jeszcze obsługiwane. Edycja obrazów jest dostępna przez /v1/images/edits.
Parametry request body
| Parametr | Typ | Opis |
|---|---|---|
| prompt | string | Opis tekstowy obrazu do wygenerowania (wymagany) |
| model | string | "gpt-image-2.5-flare" (frontier), "gpt-image-2.5-sunburst" lub "gpt-image-2". Domyślnie: "gpt-image-2.5-flare" |
| n | integer | Liczba obrazów do wygenerowania (1-10). Domyślnie: 1 |
| size | string | "1024x1024", "1024x1792" lub "1792x1024". Domyślnie: "1024x1024" |
| quality | string | "standard" lub "hd". Domyślnie: "standard" |
Dostępne modele
gpt-image-2.5-flare- Model frontier, najwyższa jakość (domyślnie)gpt-image-2.5-sunburst- Precyzyjna edycja i kreatywna praca premium (wolniejsze generowanie)gpt-image-latest- Alias dla gpt-image-2.5-flaregpt-image-2- Flagowy model poprzedniej generacjigpt-image-1.5- Starszy flagowy model (obsługuje przezroczyste tła)gpt-image-1- Generowanie obrazów w pełnej jakościgpt-image-1-mini- Szybsze, mniejsze obrazy
Przykład
response = client.images.generate(
model="gpt-image-2.5-flare",
prompt="A futuristic city at sunset, cyberpunk style",
size="1024x1024",
n=1
)
# Response contains base64-encoded image
image_b64 = response.data[0].b64_json
# Save to file
import base64
with open("output.png", "wb") as f:
f.write(base64.b64decode(image_b64))
Edycja obrazów
Edytuj istniejące obrazy za pomocą tekstowego prompt. Obsługuje zarówno JSON (ciąg base64), jak i multipart/form-data (upload pliku), więc OpenAI SDK działają od razu.
Parametry request body
| Parametr | Typ | Opis |
|---|---|---|
| prompt | string | Opis tekstowy żądanej edycji (wymagany) |
| image | string | Obraz zakodowany w base64 do edycji (wymagany) |
| model | string | "gpt-image-2.5-flare" (domyślnie), "gpt-image-2.5-sunburst" lub "gpt-image-2" |
| n | integer | Liczba edytowanych obrazów do wygenerowania (1-10). Domyślnie: 1 |
| size | string | "1024x1024", "1024x1792" lub "1792x1024". Domyślnie: "1024x1024" |
| quality | string | "low", "medium", "high" lub "auto". Domyślnie: "medium" |
image as an array of base64 strings (JSON) or as repeated image / image[] parts (multipart). Add a mask field alongside image to restrict edits to specific regions (white = edit, black = preserve). Works identically to the official OpenAI SDK.
Przykład
import base64
response = client.images.edit(
model="gpt-image-2.5-flare",
image=open("input.png", "rb"),
prompt="Change the background to a sunset beach",
size="1024x1024",
n=1
)
# Save the edited image
edited_b64 = response.data[0].b64_json
with open("edited.png", "wb") as f:
f.write(base64.b64decode(edited_b64))
Realtime API z WebSocket
WebSockets to szeroko wspierane API do transferu danych w czasie rzeczywistym i świetny wybór do łączenia ze Smart AIPI Realtime API w aplikacjach server-to-server.
W integracji server-to-server Twój system backend łączy się przez WebSocket bezpośrednio z Realtime API. Użyj standardowego API key do uwierzytelnienia połączenia, ponieważ token jest dostępny tylko na Twoim bezpiecznym serwerze backend.
Połącz przez WebSocket
Poniżej znajduje się kilka przykładów łączenia przez WebSocket. Oprócz użycia URL WebSocket musisz przekazać nagłówek uwierzytelniający z użyciem swojego API key.
import WebSocket from "ws";
const url = "wss://api.smartaipi.com/v1/responses";
const ws = new WebSocket(url, {
headers: {
Authorization: "Bearer " + process.env.SMARTAIPI_API_KEY,
},
});
ws.on("open", function open() {
console.log("Connected to server.");
// Send a response.create event
ws.send(JSON.stringify({
type: "response.create",
response: {
model: "gpt-6-astra",
store: false,
input: [{ role: "user", content: "Hello!" }],
stream: true,
},
}));
});
ws.on("message", function incoming(message) {
const event = JSON.parse(message.toString());
console.log(event.type, event);
});
Wysyłanie i odbieranie zdarzeń
Sesjami zarządza się za pomocą wysyłanych przez klienta i serwer zdarzeń JSON przez połączenie WebSocket. Owiń swoje żądanie w kopertę response.create :
| Zdarzenie | Kierunek | Opis |
|---|---|---|
| response.create | Klient | Wyślij żądanie (zawiera model, input i parametry) |
| response.created | Serwer | Sesja zaakceptowana, rozpoczęto przetwarzanie |
| response.output_text.delta | Serwer | Strumieniowany fragment tekstu |
| response.completed | Serwer | Końcowe zdarzenie z pełną odpowiedzią i użyciem |
| response.failed | Serwer | Końcowe zdarzenie wskazujące błąd |
"store": false w kopercie odpowiedzi. Połączenie utrzymuje się przez wiele tur — wysyłaj dodatkowe ramki response.create bez ponownego łączenia.
Lista modeli
Pobierz listę wszystkich dostępnych modeli. Użyj tego endpoint, aby dynamicznie sprawdzać, które modele są dostępne dla Twojego konta.
Format odpowiedzi
{
"object": "list",
"data": [
{
"id": "gpt-6-astra",
"object": "model",
"created": 1700000000,
"owned_by": "smart-aipi"
},
{
"id": "gpt-5.3-codex",
"object": "model",
"created": 1700000000,
"owned_by": "smart-aipi"
},
// ... more models
]
}
Przykład
from openai import OpenAI
client = OpenAI(
base_url="https://api.smartaipi.com/v1",
api_key="your-api-key"
)
# List all available models
models = client.models.list()
for model in models.data:
print(model.id)
Dostępne modele
Seria GPT
- gpt-6-astra Najnowsze
- gpt-5.6-sol
- gpt-5.6-terra
- gpt-5.6-luna
- gpt-5.5
- gpt-5.4-pro
- gpt-5.4
- gpt-5.4-mini
- gpt-5.4-nano tylko completions
Seria Codex
- gpt-5.3-codex
- gpt-5.2-codex
- gpt-5.2
- gpt-5.1
Anthropic Messages API
Pełna kompatybilność z Anthropic Messages API. Używaj dowolnego Anthropic SDK, Claude Code lub aplikacji mówiącej protokołem Anthropic — wystarczy zmienić base URL.
Obsługiwane funkcje
- ✓ Streaming (pełny protokół zdarzeń Anthropic SSE)
- ✓ Użycie narzędzi / function calling
- ✓ Wiadomości systemowe (format string i array)
- ✓ Wejścia obrazów (base64 i URL)
- ✓ Zliczanie tokenów (
/v1/messages/count_tokens) - ✓ Rozszerzone myślenie / wysiłek reasoning
Przykłady kodu
from anthropic import Anthropic
client = Anthropic(
base_url="https://api.smartaipi.com",
api_key="your-api-key"
)
response = client.messages.create(
model="claude-sonnet-4-5-20250929",
max_tokens=1024,
messages=[
{"role": "user", "content": "Hello!"}
]
)
print(response.content[0].text)
Mapowanie modeli
Nazwy modeli Claude są akceptowane i automatycznie kierowane do GPT-5.4 z warstwowym wysiłkiem reasoning. Każda odpowiedź zawiera x-actual-model header pokazujący rzeczywisty model backendu.
| Model Claude | Backend | Reasoning | Najlepsze do |
|---|---|---|---|
| claude-opus-4-6 | gpt-5.4 | Wysoki | Złożone reasoning, architektura |
| claude-sonnet-4-5-20250929 | gpt-5.4 | Średni | Codzienne kodowanie, zbalansowana jakość |
| claude-haiku-4-5-20251001 | gpt-5.4 | Niski | Szybkie odpowiedzi, proste zadania |
Claude Code
Używaj Claude Code ze Smart AIPI jako backendem. Pełne wsparcie dla tool use, streaming i możliwości agentowych.
Konfiguracja automatyczna
npx smart-aipi claude
To automatycznie skonfiguruje ~/.claude/settings.json i ~/.claude.json Jeśli masz już Claude Code skonfigurowane z kontem Anthropic, zobaczysz ręczną konfigurację zamiast nadpisania istniejących ustawień.
Konfiguracja ręczna
Dodaj do ~/.claude/settings.json:
{
"env": {
"ANTHROPIC_BASE_URL": "https://api.smartaipi.com",
"ANTHROPIC_API_KEY": "sk-your-key",
"ANTHROPIC_DEFAULT_HAIKU_MODEL": "claude-haiku-4-5-20251001"
},
"model": "opus"
}
Następnie dodaj "hasCompletedOnboarding": true do ~/.claude.json aby pominąć kreatora konfiguracji.
Po edycji ustawień uruchom ponownie Claude Code, aby zmiany zaczęły obowiązywać. Jeśli masz już Claude Code połączone z prawdziwym kontem Anthropic, ustawienie tych env vars nadpisze to połączenie — użyj na poziomie projektu .claude/settings.json aby zachować oba.
Co robi każde ustawienie
"model": "opus"— Główny model. Używa claude-opus-4-6 (high reasoning) do wszystkich podstawowych zadań.ANTHROPIC_DEFAULT_HAIKU_MODEL— Model działający w tle. Używa claude-haiku-4-5 (low reasoning) do szybkich zadań w tle, takich jak indeksowanie plików.- Przełączaj modele w trakcie sesji za pomocą
/model sonnet,/model opus, lub/model haiku.
| Alias | Model Claude | Backend | Reasoning |
|---|---|---|---|
| opus | claude-opus-4-6 | gpt-5.4 | Wysoki |
| sonnet | claude-sonnet-4-5-20250929 | gpt-5.4 | Średni |
| haiku | claude-haiku-4-5-20251001 | gpt-5.4 | Niski |
OpenCode
Używaj Smart AIPI jako backendu OpenCode przez SDK kompatybilne z OpenAI.
Konfiguracja config
{
"$schema": "https://opencode.ai/config.json",
"provider": {
"smart-aipi": {
"npm": "@ai-sdk/openai-compatible",
"name": "Smart AIPI",
"options": {
"baseURL": "https://api.smartaipi.com/v1",
"apiKey": "YOUR_API_KEY"
},
"models": {
"gpt-6-astra": {
"name": "GPT-6 Astra",
"reasoning": true,
"limit": { "context": 400000, "output": 128000 }
},
"gpt-5.3-codex": {
"name": "GPT-5.3 Codex",
"reasoning": true,
"limit": { "context": 400000, "output": 128000 }
},
"gpt-5.2-codex": {
"name": "GPT-5.2 Codex",
"reasoning": true,
"limit": { "context": 400000, "output": 128000 }
},
"gpt-5-codex": {
"name": "GPT-5 Codex",
"reasoning": true,
"limit": { "context": 400000, "output": 128000 }
}
}
}
},
"model": "smart-aipi/gpt-6-astra"
}
Codex CLI
Używaj Smart AIPI z narzędziem OpenAI Codex CLI. Trzeba skonfigurować trzy pliki.
Konfiguracja automatyczna
npx smart-aipi codex
To automatycznie skonfiguruje wszystkie trzy pliki poniżej. Po uruchomieniu dodaj model_reasoning_effort do swojej konfiguracji (zobacz krok 2).
Konfiguracja ręczna
Skonfiguruj te trzy pliki:
1. API Key — ~/.codex/auth.json
{
"auth_mode": "apikey",
"OPENAI_API_KEY": "sk-your-key"
}
2. Model i reasoning — ~/.codex/config.toml
Zawsze dodawaj model_reasoning_effort — wymagane dla modeli niestandardowych.
Bez tego Codex domyślnie użyje braku reasoning i nie będzie działać poprawnie. Użyj "high" dla najlepszych rezultatów.
model = "gpt-6-astra"
model_reasoning_effort = "high"
Prawidłowe poziomy reasoning: low, medium, high (zalecane), xhigh.
3. Zmienne środowiskowe — ~/.zshrc
# Smart AIPI
export OPENAI_API_KEY="sk-your-key"
export OPENAI_BASE_URL="https://api.smartaipi.com/v1"
Po edycji profilu shell uruchom ponownie terminal albo wykonaj source ~/.zshrc aby zmiany zaczęły obowiązywać.
Następnie używaj Codex normalnie:
codex "fix this bug"
Przewodnik szybkości Codex WebSocket
Tryb WebSocket jest zwykle szybszy w agentowych przepływach kodowania z dużą liczbą wywołań narzędzi. Zamiast wielokrotnie ponownie łączyć się przez HTTP i wysyłać pełne koperty żądań, Codex utrzymuje jedno aktywne połączenie i wysyła przyrostowe tury, co zmniejsza narzut kontynuacji.
Włącz WebSockets w Codex
Użyj flagi funkcji WebSocket v2 w ~/.codex/config.toml: ~/.codex/config.toml:
model = "gpt-6-astra"
model_reasoning_effort = "high"
[features]
responses_websockets_v2 = true
Odpowiednik w CLI:
codex --enable responses_websockets_v2
Starsze buildy mogą używać starszej flagi:
[features]
responses_websockets = true
Znane zachowanie Homebrew
W niektórych buildach dystrybuowanych przez Homebrew tury WebSocket mogą zawieszać się podczas długotrwałych zadań, a potem po cichu wracać do HTTP. Szczególnie widzieliśmy to w złożonych pętlach wywołań narzędzi. Ponowna kompilacja z otwartego kodu źródłowego z poprawkami poniżej poprawiła zarówno stabilność, jak i szybkość.
Po merge: napraw błąd WebSocket w open-source
Po zmergowaniu swojego brancha użyj tej checklisty, aby upewnić się, że poprawka znajduje się w lokalnym binarium:
# 1) Pull merged main
git checkout main
git pull --ff-only
# 2) Confirm websocket flags exist
codex features list | rg responses_websockets
# 3) Build and install
cd codex-rs
cargo build --release
install -m 0755 target/release/codex ~/.local/bin/codex-beta
# 4) Run with websocket enabled
CODEX_RS_RESPONSES_WS=true \
OPENAI_BASE_URL=https://api.smartaipi.com/v1 \
~/.local/bin/codex-beta --enable responses_websockets_v2
Jeśli musisz ręcznie nałożyć poprawki, sprawdź, czy obecne są te poprawki na poziomie kodu:
# A) Build websocket request with IntoClientRequest so required headers are set
let mut request = url.as_str().into_client_request()?;
request.headers_mut().extend(headers);
# B) Ensure TLS roots are enabled for tokio-tungstenite in Cargo.toml
tokio-tungstenite = { version = "...", features = ["rustls-tls-native-roots"] }
Cursor i Cline
Używaj Smart AIPI z Cursor IDE albo rozszerzeniem Cline do VS Code.
Cursor
- Otwórz ustawienia Cursor
- Przejdź do zakładki
Modelskarta - Kliknij
+ Add Model - Ustaw Base URL:
https://api.smartaipi.com/v1 - Wprowadź swój API key
- Model:
gpt-6-astra
Cline (VS Code)
- Otwórz ustawienia Cline w VS Code
- Wybierz
OpenAI Compatible - Base URL:
https://api.smartaipi.com/v1 - Wprowadź swój API key
- Model:
gpt-6-astra
Czat
Używaj Smart AIPI Chat pod adresem chat.smartaipi.com. do pracy z tekstem, obrazami, wideo, kodem, wyszukiwaniem i głosem.
Funkcje
- ✓ Czat — Uniwersalne rozmowy tekstowe z modelami Smart AIPI.
- ✓ Obrazy — Generuj i edytuj obrazy na podstawie prompts.
- ✓ Wideo — Generuj wideo z tekstu lub obrazów wejściowych.
- ✓ Kod — Pomoc z kodem i edycja w przeglądarce.
- ✓ Wyszukiwanie — Użyj wyszukiwania w sieci, aby uzyskać odpowiedzi oparte na źródłach.
- ✓ Głos — Rozmawiaj z modelem za pomocą wejścia głosowego i odpowiedzi głosowych.
Pierwsze kroki
- 1. Otwórz chat.smartaipi.com
- 2. Zaloguj się lub utwórz konto.
- 3. Rozpocznij chat z tekstem, obrazami, wideo, kodem, wyszukiwaniem lub głosem.
Rozliczenia: Użycie jest rozliczane z Twoich kredytów Smart AIPI.
Tester API
Przetestuj API bezpośrednio z przeglądarki: