Goat API
Reference
SKYMOD tarafından geliştirilen Goat büyük dil modeline erişmek için üretim odaklı API. Sohbet, kod, özetleme, analiz ve Türkçe ağırlıklı kurumsal kullanım senaryoları için tasarlanmıştır.
Overview Giriş
Goat API, SKYMOD Teknoloji tarafından geliştirilen Goat büyük dil modeline HTTP üzerinden erişim sağlar. Goat; kullanıcılarla doğal dilde konuşabilen, talimatları takip edebilen, uzun metinleri analiz edebilen, kod üretebilen ve kurumsal bilgi iş akışlarında asistan olarak kullanılabilen genel amaçlı bir dil modelidir.
Tüm istekler HTTPS üzerinden yapılmalıdır. API yanıtları JSON formatında döner.
Goat API, Chat Completions standardını destekler. requests, httpx, fetch gibi standart HTTP kütüphaneleriyle ya da Chat Completions protokolünü destekleyen herhangi bir SDK ile kullanılabilir.
Goat Model
Goat, SKYMOD tarafından geliştirilen yeni nesil büyük dil modelidir. Kullanıcı tarafında model adı her zaman goat olarak kullanılır.
Bu dokümantasyon Goat modelinin public model card ve API kullanım bilgilerini içerir. Dahili eğitim altyapısı ve operasyonel bilgiler API sözleşmesinin parçası değildir.
Model Card
| Başlık | Detay | Kullanıcı İçin Anlamı |
|---|---|---|
| Model Ailesi | Goat | SKYMOD tarafından sunulan üretim sınıfı büyük dil modeli ailesi. |
| Parametre Ölçeği | 122B toplam, ~10B aktif | Büyük model kapasitesi ile verimli çıkarım dengesi. |
| Bağlam Penceresi | 32 768 token | Uzun dokümanlar ve çok turlu görüşmeler tek istekte işlenebilir. |
| Desteklenen Giriş | Metin tabanlı mesajlar | system, user ve assistant rolleriyle sohbet geçmişi. |
| Desteklenen Çıkış | Metin ve yapılandırılmış metin | Doğal dil, Markdown, JSON, kod blokları üretilebilir. |
| Önerilen Alanlar | Kurumsal asistan, teknik destek, kod yardımı | Genel amaçlı asistan ve iş akışı otomasyonu için uygundur. |
Fine-Tuning & Alignment
| Aşama | Açıklama | Hedef |
|---|---|---|
| Instruction Tuning | Türkçe ve İngilizce talimat-cevap örnekleriyle görev takibi güçlendirilmiştir. | Net cevap üretme ve format koruma. |
| Turkish Optimization | Kurumsal üslup ve yerel ifade kalıpları için ek iyileştirme. | Profesyonel ve tutarlı Türkçe yanıtlar. |
| Domain Adaptation | Müşteri destek, yazılım geliştirme, doküman analizi senaryoları. | Kurumsal uygulamalarda kullanılabilirlik. |
| Preference Alignment | Yardımcı, ölçülü ve güvenli yanıt davranışı için tercih hizalaması. | Daha az gereksiz detay, güvenli davranış. |
| Safety Tuning | Hassas bilgi ve zararlı içerik senaryolarında güvenli davranış. | Riskli kullanım senaryolarını azaltma. |
Capabilities
Goat; doğal dilde talimat takip etmek, karmaşık metinleri özetlemek, kod yazmak ve çok turlu diyaloglarda bağlamı korumak için tasarlanmıştır.
Kurumsal Asistanlar
Şirket içi bilgi tabanları, müşteri destek akışları ve operasyonel süreç yönlendirmeleri.
Doküman Analizi
Uzun metinleri özetleme, karar noktalarını çıkarma ve metin karşılaştırma.
Kod & Teknik Yardım
Python, JavaScript, TypeScript için açıklama, refactor önerisi ve örnek üretimi.
İçerik Üretimi
Blog taslakları, e-posta, ürün açıklaması ve marka tonuna uygun yeniden yazım.
Veri Dönüştürme
Serbest metni JSON'a çevirme, sınıflandırma, etiketleme ve alan çıkarımı.
Çok Turlu Diyalog
Önceki mesajları bağlamda tutarak adım adım görev tamamlama.
Quick Start
API Anahtarınızı Alın
SKYMOD ekibinden bir API anahtarı talep edin. Anahtar sk- önekiyle başlar.
İlk İsteği Gönderin
Aşağıdaki örneği kendi API anahtarınızla çalıştırın:
curl https://goat.skymod.ai/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer sk-<API_KEY>" \
-d '{"model":"goat","messages":[{"role":"user","content":"Merhaba! Bana Türkiye hakkında 3 ilginç bilgi ver."}],"max_tokens":512,"temperature":0.7}'import requests
response = requests.post(
"https://goat.skymod.ai/v1/chat/completions",
headers={
"Authorization": "Bearer sk-<API_KEY>",
"Content-Type": "application/json",
},
json={
"model": "goat",
"messages": [{"role": "user", "content": "Merhaba!"}],
"max_tokens": 512, "temperature": 0.7,
},
)
print(response.json()["choices"][0]["message"]["content"])const res = await fetch("https://goat.skymod.ai/v1/chat/completions", {
method: "POST",
headers: {
"Content-Type": "application/json",
"Authorization": "Bearer sk-<API_KEY>",
},
body: JSON.stringify({
model: "goat",
messages: [{role: "user", content: "Merhaba!"}],
max_tokens: 512, temperature: 0.7,
}),
});
const data = await res.json();
console.log(data.choices[0].message.content);Yanıtı İnceleyin
choices[0].message.content modelin ürettiği metni içerir.
{
"id": "chatcmpl-a8f3d2b1c4e5",
"object": "chat.completion",
"model": "goat",
"choices": [{
"index": 0,
"message": {"role": "assistant", "content": "İşte Türkiye hakkında 3 ilginç bilgi..."},
"finish_reason": "stop"
}],
"usage": {"prompt_tokens": 28, "completion_tokens": 147, "total_tokens": 175}
}
Authentication
Goat API, Bearer token tabanlı kimlik doğrulama kullanır. /health hariç tüm endpoint'ler kimlik doğrulama gerektirir.
Header Formatı
Authorization: Bearer sk-<API_KEY>
Güvenlik Notları
- API anahtarları sunucuda SHA-256 hash olarak saklanır; plaintext asla kaydedilmez.
- Anahtarınızı kaynak koda veya log dosyalarına yazmayın —
.env/ environment variable kullanın. - Anahtarın sızdığını düşünüyorsanız SKYMOD ekibiyle iletişime geçerek derhal iptal ettirin.
- Her proje veya müşteri için ayrı anahtar oluşturulması önerilir.
Frontend'de API key kullanmayın. Tarayıcı tarafı kodda API anahtarını açık bırakmak anahtarın ifşasına yol açar. Her zaman backend aracılığıyla proxy yapın.
Base URL & Versioning
https://goat.skymod.ai
Tüm endpoint'ler bu base URL altında /v1/ prefix'i ile sunulur.
| Ortam | Base URL | Açıklama |
|---|---|---|
| Production | https://goat.skymod.ai | Canlı ortam. Tüm üretim trafiği için kullanın. |
Chat Completions
Bir konuşma geçmişini alarak bir sonraki asistan mesajını üretir. Hem tek seferlik sorgular hem de çok turlu diyaloglar için kullanılır.
Request Body
İstek gövdesi application/json formatında gönderilmelidir.
| Alan | Tip | Zorunluluk | Varsayılan | Açıklama |
|---|---|---|---|---|
| model | string | zorunlu | — | Kullanılacak model adı. goat değeri Goat modelini hedefler. |
| messages | array | zorunlu | — | Konuşma geçmişi. Her eleman bir Message Object'tir. En az bir mesaj içermelidir. |
| max_tokens | integer | opsiyonel | 512 | Üretilecek maksimum token sayısı. 1–32768 arasında olmalıdır. |
| temperature | float | opsiyonel | 0.7 | Örnekleme sıcaklığı. 0.0–2.0. Tutarlı çıktı için 0.1–0.4, yaratıcı için 0.7–1.2. |
| top_p | float | opsiyonel | 1.0 | Nükleus örnekleme eşiği. 0.0–1.0. |
| stream | boolean | opsiyonel | false | Gerçek zamanlı token akışı. true olduğunda SSE olarak akar. |
| stop | string | string[] | opsiyonel | null | Model bu dizi/dizilere ulaştığında üretimi durdurur. En fazla 4 dizi. |
| frequency_penalty | float | opsiyonel | 0.0 | Tekrar eden token'lara ceza. -2.0–2.0. |
| presence_penalty | float | opsiyonel | 0.0 | Yeni konular açmayı teşvik eder. -2.0–2.0. |
| n | integer | opsiyonel | 1 | Kaç farklı tamamlama seçeneği döndürüleceği. |
| thinking | object | opsiyonel | null | Akıl yürütme davranışını ayarlar. type değeri off, adaptive veya manual olabilir. Mevcut istek yapısını bozmaz; yalnızca gönderildiğinde uygulanır. |
| user | string | opsiyonel | null | Son kullanıcıyı temsil eden benzersiz kimlik. |
Thinking
Goat API'de thinking tamamen opsiyoneldir. Alan gönderilmezse mevcut Chat Completions request/response sözleşmesi aynı kalır. Yeni thinking alanı gönderildiğinde proxy, public sözleşmeyi vLLM tarafındaki thinking_token_budget ve chat_template_kwargs.enable_thinking ayarlarına çevirir.
| Alan | Tip | Zorunluluk | Varsayılan | Açıklama |
|---|---|---|---|---|
| thinking.type | string | zorunlu* | — | off, adaptive veya manual. thinking objesi gönderildiyse kullanılır. |
| thinking.effort | string | opsiyonel | medium | Adaptive mod için low, medium, high, very_high. Prompt karmaşıklığına göre token bütçesi dinamik seçilir. |
| thinking.level | string | opsiyonel | medium | Manual mod için sabit seviye: low, medium, high, very_high. |
| thinking.budget_tokens | integer | opsiyonel | — | Manual modda doğrudan thinking token bütçesi. Verilirse level yerine bu değer kullanılır. |
| thinking.include_reasoning | boolean | opsiyonel | true | false ise JSON yanıtında reasoning, streaming yanıtında delta.reasoning gizlenir. |
max_tokens, thinking ve nihai cevap toplamını kapsar. Proxy, seçilen thinking bütçesini max_tokens sınırına göre güvenli biçimde küçültebilir.
Adaptive Thinking
{
"model": "goat",
"messages": [{"role": "user", "content": "Bu mimariyi güvenlik ve performans açısından analiz et."}],
"max_tokens": 3000,
"thinking": {
"type": "adaptive",
"effort": "high",
"include_reasoning": false
}
}
Manual Thinking
{
"model": "goat",
"messages": [{"role": "user", "content": "2x + 5 = 13, x kaçtır?"}],
"max_tokens": 1500,
"thinking": {
"type": "manual",
"budget_tokens": 800,
"include_reasoning": true
}
}
Thinking Metadata
Yeni thinking alanı kullanıldığında yanıt, uygulanan ayarı gösteren opsiyonel goat.thinking metadata'sı içerebilir.
{
"goat": {
"thinking": {
"type": "adaptive",
"effort": "high",
"applied_level": "high",
"token_budget": 3072,
"reasoning_included": false
}
}
}
🎛️ Parameter Playground
Parametrelerin etkisini görsel olarak keşfedin. Kod örneği otomatik güncellenir.
Message Object
| Alan | Tip | Zorunluluk | Açıklama |
|---|---|---|---|
| role | string | zorunlu | Mesajın sahibi. Geçerli değerler: system, user, assistant. |
| content | string | zorunlu | Mesaj metni. |
| name | string | opsiyonel | Mesajı gönderenin adı. Çok katılımcılı senaryolarda kullanılır. |
Role Açıklamaları
| Role | Açıklama | Kullanım |
|---|---|---|
| system | Modelin davranışını ve kişiliğini tanımlar. | Bağlam kurma, kısıtlama belirleme |
| user | Son kullanıcının mesajlarını temsil eder. | Sorular, talimatlar, giriş metni |
| assistant | Modelin önceki yanıtlarını temsil eder. | Çok turlu diyalog geçmişi |
Response Schema
ChatCompletion Object
| Alan | Tip | Açıklama |
|---|---|---|
| id | string | Benzersiz tanımlayıcı. chatcmpl- önekiyle başlar. |
| object | string | Her zaman "chat.completion" değerini alır. |
| created | integer | Unix zaman damgası (saniye). |
| model | string | İsteği işleyen modelin adı. |
| choices | array | Tamamlama seçenekleri dizisi. |
| usage | object | Token kullanım istatistikleri. |
| goat | object | Opsiyonel Goat metadata'sı. Yeni thinking alanı kullanıldığında uygulanan thinking ayarını içerebilir. |
Choice Object
| Alan | Tip | Açıklama |
|---|---|---|
| index | integer | Sıra numarası (0 tabanlı). |
| message | object | Modelin ürettiği mesaj. |
| finish_reason | string | Üretimin durma sebebi: stop, length, content_filter. |
Assistant Message Object
| Alan | Tip | Açıklama |
|---|---|---|
| role | string | Her zaman assistant. |
| content | string | Nihai cevap metni. |
| reasoning | string | Opsiyonel akıl yürütme çıktısı. thinking.include_reasoning: false gönderilirse yanıttan kaldırılır. |
Usage Object
| Alan | Tip | Açıklama |
|---|---|---|
| prompt_tokens | integer | Giriş mesajlarında kullanılan token sayısı. |
| completion_tokens | integer | Üretilen yanıttaki token sayısı. |
| total_tokens | integer | Toplam kullanılan token. |
Streaming (SSE)
İstek gövdesinde "stream": true gönderildiğinde API, Server-Sent Events formatında yanıt verir. Her chunk bir data: satırı olarak gelir; akış data: [DONE] ile biter.
Thinking açıkken streaming yanıtlarında delta.reasoning chunk'ları gelebilir. thinking.include_reasoning: false gönderildiğinde proxy bu alanları filtreler ve istemci yalnızca nihai delta.content akışını görür.
curl https://goat.skymod.ai/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer sk-<API_KEY>" \
--no-buffer \
-d '{"model":"goat","messages":[{"role":"user","content":"Uzun bir hikaye anlat."}],"stream":true,"thinking":{"type":"adaptive","effort":"medium","include_reasoning":false}}'import requests, json
with requests.post(
"https://goat.skymod.ai/v1/chat/completions",
headers={"Authorization": "Bearer sk-<API_KEY>", "Content-Type": "application/json"},
json={"model": "goat", "messages": [{"role": "user", "content": "Uzun bir hikaye anlat."}], "stream": True, "thinking": {"type": "adaptive", "effort": "medium", "include_reasoning": False}},
stream=True,
) as resp:
for line in resp.iter_lines():
if line and line.startswith(b"data: "):
payload = line[6:]
if payload == b"[DONE]": break
chunk = json.loads(payload)
print(chunk["choices"][0]["delta"].get("content", ""), end="", flush=True)const res = await fetch("https://goat.skymod.ai/v1/chat/completions", {
method: "POST",
headers: {"Content-Type": "application/json", "Authorization": "Bearer sk-<API_KEY>"},
body: JSON.stringify({model: "goat", messages: [{role: "user", content: "Uzun bir hikaye anlat."}], stream: true, thinking: {type: "adaptive", effort: "medium", include_reasoning: false}}),
});
const reader = res.body.getReader();
const decoder = new TextDecoder();
while (true) {
const { done, value } = await reader.read();
if (done) break;
for (const line of decoder.decode(value).split("\n")) {
if (!line.startsWith("data: ") || line === "data: [DONE]") continue;
const chunk = JSON.parse(line.slice(6));
process.stdout.write(chunk.choices[0]?.delta?.content ?? "");
}
}List Models
curl https://goat.skymod.ai/v1/models \
-H "Authorization: Bearer sk-<API_KEY>"
Health Check
curl https://goat.skymod.ai/health
# → {"status": "ok"}
Postman Collection
Güncel Postman koleksiyonu public olarak aşağıdaki adresten indirilebilir. Koleksiyon yeni thinking sözleşmesini, adaptive/manual örneklerini, reasoning gizleme ve streaming kullanımını içerir.
curl https://goat.skymod.ai/postman
# → goat-api-skymod.postman_collection.json
Errors
API, hata durumlarında standart HTTP durum kodları ve JSON hata gövdesi döner.
OK
İstek başarıyla işlendi.
Unauthorized
Authorization header eksik veya API anahtarı geçersiz/iptal edilmiş.
Unprocessable Entity
İstek gövdesi geçersiz. Zorunlu alanları ve tip uyumluluğunu kontrol edin.
Too Many Requests
Rate limit aşıldı. Retry-After header'ındaki süre kadar bekleyin.
Internal Server Error
Sunucu tarafı hata. Birkaç saniye bekleyip tekrar deneyin.
Kod Örnekleri
Goat API standart HTTP istekleriyle kullanılır.
import requests
API_KEY = "sk-<API_KEY>"
headers = {"Authorization": f"Bearer {API_KEY}", "Content-Type": "application/json"}
payload = {
"model": "goat",
"messages": [
{"role": "system", "content": "Sen yardımcı bir asistansın."},
{"role": "user", "content": "Python decorator nedir?"},
],
"temperature": 0.5, "max_tokens": 1024,
}
response = requests.post("https://goat.skymod.ai/v1/chat/completions", json=payload, headers=headers)
print(response.json()["choices"][0]["message"]["content"])async function ask(question: string): Promise<string> {
const res = await fetch("https://goat.skymod.ai/v1/chat/completions", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.GOAT_API_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({model: "goat", messages: [{role: "user", content: question}], max_tokens: 1024}),
});
const data = await res.json();
return data.choices[0].message.content;
}from openai import OpenAI
client = OpenAI(
api_key="sk-<API_KEY>",
base_url="https://goat.skymod.ai/v1",
)
response = client.chat.completions.create(
model="goat",
messages=[{"role": "user", "content": "Goat API ile neler yapabilirim?"}],
temperature=0.5, max_tokens=512,
)
print(response.choices[0].message.content)Best Practices
Temperature Seçimi
| Kullanım Durumu | Önerilen Temperature |
|---|---|
| Kod üretimi / Faktüel sorular | 0.0–0.3 — Tutarlı, deterministik |
| Genel asistan / Özetleme | 0.4–0.7 — Dengeli |
| Yaratıcı yazarlık / Beyin fırtınası | 0.8–1.2 — Çeşitli, yaratıcı |
Token Yönetimi
max_tokensdeğerini gerçekçi tutun; fazla büyük değerler gereksiz gecikmeye yol açar.finish_reason === "length"ise yanıt kesilmiş demektir —max_tokensdeğerini artırın.- Uzun konuşmalarda bağlam penceresi aşılmaması için eski mesajları budayın.
Guardrails Güvenlik Katmanı
Goat API, üretim kullanımı için guardrail katmanıyla çalışır. Bu katman, kullanıcı isteği modele ulaşmadan önce ve yanıt kullanıcıya dönmeden önce riskli içerikleri azaltmaya yardımcı olur. Amaç; güvenli, tutarlı ve kurumsal kullanıma uygun bir yanıt davranışı sağlamaktır.
OWASP yaklaşımı: Goat guardrail tasarımı, LLM uygulamaları için OWASP Top 10 risk başlıklarını temel referans olarak alır. OWASP iyi bir başlangıç ve ortak dil sağlar; tek başına güvenlik garantisi değildir. Üretimde kimlik doğrulama, oran sınırlama, güvenli loglama, düzenli test ve uygulama tarafı yetki kontrolleriyle birlikte kullanılmalıdır.
Risk Kapsamı
| Risk | Goat Davranışı | Kullanıcıya Etkisi |
|---|---|---|
| Prompt injection | Model davranışını değiştirmeye çalışan yönlendirmeler güvenli cevapla sınırlandırılır. | Normal kullanım akışı korunur; saldırı veya manipülasyon denemeleri sonuç üretmez. |
| Hassas bilgi ifşası | Gizli anahtar, parola, token, iç talimat veya kişisel veri ifşasına yol açabilecek yanıtlar engellenir veya güvenli hale getirilir. | Kullanıcılar API anahtarlarını yine de kendi backend ortamlarında saklamalıdır. |
| Sistem talimatı sızıntısı | İç yönerge, güvenlik politikası veya çalışma talimatı talep eden istekler yanıtlanmaz. | Servis davranışı açıklanır, ancak iç kontrol detayları paylaşılmaz. |
| Yetkisiz aksiyon | Modelden dış sistemlerde işlem yapması, güvenlik kontrollerini atlaması veya yetkisi olmayan eylem üretmesi beklenmez. | Uygulama tarafında ayrıca rol ve yetki kontrolü uygulanmalıdır. |
| Kimlik karmaşası | Model kendisini Goat olarak konumlandırır; başka servis, sağlayıcı veya ürün kimliğiyle cevap vermesi sınırlandırılır. | Müşteri deneyiminde tutarlı ürün kimliği korunur. |
Response Davranışı
Normal isteklerde mevcut Chat Completions istek ve yanıt yapısı korunur. Guardrail tarafından riskli değerlendirilen içeriklerde kullanıcıya güvenli, kısa ve yönlendirici bir yanıt dönebilir. Bu davranış uygulama entegrasyonunu bozmadan riskli akışları azaltmak için tasarlanmıştır.
Not: Guardrails riskleri azaltır, tamamen ortadan kaldırmaz. Kullanıcılar gizli anahtar, parola, müşteri verisi veya mevzuata tabi hassas verileri gereksiz yere modele göndermemeli; üretim entegrasyonlarında erişim kontrolü, veri maskeleme ve denetim kayıtlarını kendi uygulama katmanında da uygulamalıdır.
Production Guide
Goat API üretim ortamlarında backend servisleri üzerinden çağrılmalıdır.
| Katman | Öneri | Açıklama |
|---|---|---|
| Frontend | API key içermez | Kullanıcı mesajını kendi backend'inize gönderir. |
| Backend | Goat API'ye bağlanır | API anahtarı environment variable içinde tutulur. |
| Logging | Hassas veriyi maskeleyin | Kişisel veri ve token loglanmadan önce filtrelenmelidir. |
| Timeout | 60–300 sn | Uzun yanıtlar için makul timeout belirleyin. |
Limits & Quotas
| Sınır | Değer | Açıklama |
|---|---|---|
| Maksimum bağlam | 32 768 token | Sistem + mesajlar + yanıt toplamı bu sınırı aşamaz. |
| max_tokens | 32 768 | Tek yanıtta üretilebilecek maksimum token. |
| stop dizisi | 4 adet | En fazla 4 dizi belirtilebilir. |
| İstek gövdesi | 10 MB | Maksimum istek boyutu. |
| Timeout | 300 sn | Bu süre içinde tamamlanmazsa bağlantı kesilir. |
Token Hesaplama: Ortalama olarak 1 token ≈ 0.75 Türkçe kelime ya da ≈ 4 İngilizce karakter. Uzun konuşmalarda eski mesajları budamanızı öneririz.
Performans
| Eş Zamanlı İstek | Başarı Oranı | Ort. Gecikme (ms) | Durum |
|---|---|---|---|
| 1 | %100 | ~4 000 | Nominal |
| 10 | %100 | ~6 000 | Nominal |
| 50 | %100 | ~18 000 | Nominal |
| 100 | %100 | ~35 000 | Nominal |
| 200 | %100 | ~70 000 | Nominal |
Not: Gecikme değerleri max_tokens=100 ile 200 token giriş uzunluğunda ölçülmüştür. Sistem 200 eş zamanlı istekte sıfır hata ile çalışmaktadır.