Numex API dokumantasyonu: modeller, uc noktalar, fiyat, limitler, hatalar, ornekler

This commit is contained in:
numexai 2026-09-23 23:43:03 +00:00
parent 6b4c68bbe3
commit 21bc55b485
No known key found for this signature in database
11 changed files with 636 additions and 1 deletions

28
.github/ISSUE_TEMPLATE/api-sorunu.yml vendored Normal file
View File

@ -0,0 +1,28 @@
name: 🐞 API sorunu
description: Bir uç noktada beklenmeyen davranış bildir
labels: ["api"]
body:
- type: input
id: uc
attributes:
label: Uç nokta
placeholder: "ör. POST /api/v1/chat"
validations:
required: true
- type: textarea
id: istek
attributes:
label: İstek gövdesi
description: API anahtarını ASLA paylaşma.
render: json
- type: textarea
id: yanit
attributes:
label: Aldığın yanıt (durum kodu + gövde)
render: json
validations:
required: true
- type: textarea
id: beklenen
attributes:
label: Ne bekliyordun?

8
.github/ISSUE_TEMPLATE/config.yml vendored Normal file
View File

@ -0,0 +1,8 @@
blank_issues_enabled: true
contact_links:
- name: 🔑 API anahtarı al
url: https://www.numexai.com.tr/api
about: 100.000 token hediye ile başla.
- name: 💳 Hesap / ödeme / fatura
url: mailto:destek@numexai.com.tr
about: Hesaba özel konular için e-posta gönder.

61
README.en.md Normal file
View File

@ -0,0 +1,61 @@
<div align="center">
<img src="gorseller/api-banner.png" alt="Numex API" width="100%">
# Numex API
### Add Turkish-first AI to your apps.
[🇹🇷 Türkçe](README.md) · 🇬🇧 **English**
</div>
---
The Numex API gives you [Numex AI](https://numexai.com.tr)'s models — wrapped in a pipeline that turns
every answer into natural, high-quality Turkish. Chat, agentic tool use, vision/OCR, image generation,
embeddings and web search behind one key. **100,000 free tokens** on sign-up, no card required.
## Quick start
```bash
curl https://www.numexai.com.tr/api/v1/chat \
-H "Authorization: Bearer $NUMEX_API_KEY" \
-H "Content-Type: application/json" \
-d '{"message":"Merhaba!","history":[],"maxOutputTokens":512}'
```
→ `{ "success": true, "answer": "...", "modelLabel": "Numex Pro", "usage": { ... } }`
Auth: `Authorization: Bearer nx_live_...` or `x-api-key: nx_live_...`. Keys are shown once; rotate
them from the Numex dashboard. Never ship a key in browser code.
## Models
| Model | Context | Max out | Notes | Input / 1M | Output / 1M |
|---|---|---|---|---|---|
| `numex-pro` | 128K | 4K | Most capable; vision, function calling | ₺30 | ₺250 |
| `numex-fast` | 32K | 4K | ~3× faster, cheapest | ₺15 | ₺30 |
| `numex-think` | 128K | 8K | Deep reasoning (chain-of-thought) | ₺45 | ₺90 |
| `numex-code` | 64K | 8K | Code, 25+ languages | ₺30 | ₺85 |
| `numex-vision` | — | — | Image → text, OCR | ₺100 per image | — |
## Endpoints (`https://www.numexai.com.tr/api/v1`)
`POST /chat` · `POST /chat/stream` · `POST /chat/agent` (tools with `input_schema`) · `POST /vision` ·
`POST /images/generations` · `POST /embeddings` (≤128 texts) · `POST /search` · `GET /models` ·
`GET /features` · `GET /usage`
Full reference (Turkish, with request/response examples): [docs/uc-noktalar.md](docs/uc-noktalar.md)
## Pricing & limits
Pay-as-you-go token packs that **never expire**: Starter ₺499 (5M) · Growth ₺1,499 (20M) ·
Scale ₺3,499 (50M). Rate limits scale automatically with spend: Free 10 req/min → Tier 3 500 req/min.
## SDK & examples
- Node.js/TypeScript: [numex-sdk](https://github.com/mobilcep/numex-sdk)
- Python, cURL and an embeddings-based semantic search demo: [`ornekler/`](ornekler/)
Support: **destek@numexai.com.tr**

247
README.md
View File

@ -1 +1,246 @@
# numex-api
<div align="center">
<img src="gorseller/api-banner.png" alt="Numex API — Uygulamalarına Türkçe AI gücü kat" width="100%">
# Numex API
### Uygulamalarına Türkçe AI gücü kat.
**Tek API ile sohbet, kod, görsel analiz, embedding ve web araması — Türkçe'ye özel.**
[![Base URL](https://img.shields.io/badge/base-numexai.com.tr%2Fapi%2Fv1-00C9A7?style=for-the-badge)](https://www.numexai.com.tr/api)
[![Hediye](https://img.shields.io/badge/ilk_kayıtta-100.000_token-0A1628?style=for-the-badge)](https://www.numexai.com.tr/api)
[![SDK](https://img.shields.io/badge/SDK-numex--sdk-0A1628?style=for-the-badge)](https://github.com/mobilcep/numex-sdk)
🇹🇷 Türkçe · [🇬🇧 English](README.en.md)
</div>
---
Numex API; [Numex AI](https://numexai.com.tr)'ın Türkçe'ye özel **Pipeline** motorundan geçen
modellerini kendi uygulamana bağlamanın yoludur. Ham bir model sarmalayıcısı değil: her yanıt Türkçe
düzeltme, ton ve kalite kontrol katmanlarından geçer.
> 📌 Bu depo Numex API'nin **dokümantasyon, örnek kod ve topluluk** deposudur.
> Anahtar almak için: [numexai.com.tr/api](https://www.numexai.com.tr/api).
## 📑 İçindekiler
- [Hızlı başlangıç](#-hızlı-başlangıç)
- [Kimlik doğrulama](#-kimlik-doğrulama)
- [Modeller](#-modeller)
- [Uç noktalar](#-uç-noktalar)
- [Fiyatlandırma](#-fiyatlandırma)
- [Kullanım limitleri](#-kullanım-limitleri)
- [Hatalar](#️-hatalar)
- [SDK ve örnekler](#-sdk-ve-örnekler)
- [Destek](#-destek)
---
## ⚡ Hızlı başlangıç
**1.** [numexai.com.tr/api](https://www.numexai.com.tr/api) → **Ücretsiz API Anahtarı Al**
(Google/GitHub ile giriş; ilk kayıtta **100.000 token** hediye, kart gerekmez).
**2.** Anahtarını kopyala. `nx_live_` ile başlar ve **yalnızca bir kez** gösterilir.
**3.** İlk isteğini at:
```bash
curl https://www.numexai.com.tr/api/v1/chat \
-H "Authorization: Bearer $NUMEX_API_KEY" \
-H "Content-Type: application/json" \
-d '{"message":"Merhaba, nasılsın?","history":[],"maxOutputTokens":512}'
```
```json
{
"success": true,
"answer": "Merhaba! İyiyim, teşekkür ederim. Sana nasıl yardımcı olabilirim?",
"modelProfile": "pro",
"modelLabel": "Numex Pro",
"usage": {
"estimatedInputTokens": 5,
"estimatedOutputTokens": 18,
"estimatedTotalTokens": 23,
"billedTokens": 23,
"multiplier": 1
}
}
```
<details>
<summary><b>Python</b></summary>
```python
import os, requests
r = requests.post(
"https://www.numexai.com.tr/api/v1/chat",
headers={"Authorization": f"Bearer {os.environ['NUMEX_API_KEY']}"},
json={"message": "Python'da fibonacci fonksiyonu yaz", "history": [], "maxOutputTokens": 1024},
)
print(r.json().get("answer", ""))
```
</details>
<details>
<summary><b>JavaScript (fetch)</b></summary>
```javascript
const res = await fetch('https://www.numexai.com.tr/api/v1/chat', {
method: 'POST',
headers: {
Authorization: `Bearer ${process.env.NUMEX_API_KEY}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({ message: 'React ile todo app yaz', history: [], maxOutputTokens: 2048 }),
});
const data = await res.json();
console.log(data.answer);
```
</details>
<details>
<summary><b>Node.js SDK</b></summary>
```bash
npm install numexcodex-sdk
```
```javascript
const { Numex } = require('numexcodex-sdk');
const numex = new Numex({
apiKey: process.env.NUMEX_API_KEY,
baseURL: 'https://www.numexai.com.tr/api/v1',
});
const r = await numex.chat.completions.create({
messages: [{ role: 'user', content: 'Merhaba!' }],
});
console.log(r.answer);
```
→ [github.com/mobilcep/numex-sdk](https://github.com/mobilcep/numex-sdk)
</details>
Daha fazla hazır örnek: [`ornekler/`](ornekler/)
---
## 🔐 Kimlik doğrulama
İki başlıktan biri yeterli:
```http
Authorization: Bearer nx_live_...
```
```http
x-api-key: nx_live_...
```
- Anahtarı **sunucunda** sakla; tarayıcı koduna, mobil uygulamaya ya da herkese açık depoya koyma.
- Panelden anahtarı **döndürebilir** (rotate), devre dışı bırakabilir ya da silebilirsin.
- Anahtar yoksa: `401 {"error":"x-api-key zorunludur","code":"missing_api_key"}`
---
## 🧠 Modeller
| Model | Rol | Bağlam | Maks. çıktı | Yetenekler | Input / 1M | Output / 1M |
|---|---|---|---|---|---|---|
| ⚡ `numex-pro` | **En popüler.** Akıl yürütme, yaratıcılık, Türkçe'de en yüksek başarım | 128K | 4K | Vision ✓ · Function calling ✓ | ₺30 | ₺250 |
| 🚀 `numex-fast` | Hız ve maliyet odaklı: günlük görevler, sınıflandırma | 32K | 4K | Vision ✓ · ~3× hızlı | ₺15 | ₺30 |
| 🧠 `numex-think` | Derin akıl yürütme: matematik, mantık, strateji | 128K | 8K | Chain-of-thought | ₺45 | ₺90 |
| 💻 `numex-code` | Kod: tamamlama, bug fix, review, refactor | 64K | 8K | 25+ programlama dili | ₺30 | ₺85 |
| 🖼️ `numex-vision` | Görsel anlama, resim açıklama, OCR | — | — | Image → Text · OCR · Türkçe | ₺100 / görsel analizi | — |
Model, istekte `model` (veya `modelProfile`) alanıyla seçilir. Kullanılabilen modeller planına göre
değişir; güncel liste için `GET /models`, açık yetenekler için `GET /features`.
---
## 📚 Uç noktalar
**Base URL:** `https://www.numexai.com.tr/api/v1`
| Yöntem | Yol | Açıklama | Ayrıntı |
|---|---|---|---|
| `POST` | `/chat` | Sohbet yanıtı | [→](docs/uc-noktalar.md#post-chat) |
| `POST` | `/chat/stream` | Akışlı sohbet (SSE) | [→](docs/uc-noktalar.md#post-chatstream) |
| `POST` | `/chat/agent` | Araç kullanan, çok adımlı ajan (function calling) | [→](docs/uc-noktalar.md#post-chatagent) |
| `POST` | `/vision` | Görsel analizi / OCR | [→](docs/uc-noktalar.md#post-vision) |
| `POST` | `/images/generations` | Görsel üretimi | [→](docs/uc-noktalar.md#post-imagesgenerations) |
| `POST` | `/embeddings` | Metin vektörleri (en fazla 128 metin) | [→](docs/uc-noktalar.md#post-embeddings) |
| `POST` | `/search` | Web araması + kaynaklar | [→](docs/uc-noktalar.md#post-search) |
| `GET` | `/models` | Modeller | [→](docs/uc-noktalar.md#get-models) |
| `GET` | `/features` | Hesabında açık yetenekler | [→](docs/uc-noktalar.md#get-features) |
| `GET` | `/usage` · `/usage/history` | Token kullanımı | [→](docs/uc-noktalar.md#hesap-ve-kullanım) |
| `GET` | `/me` · `/account` | Hesap ve bakiye | [→](docs/uc-noktalar.md#hesap-ve-kullanım) |
👉 **Tam referans: [docs/uc-noktalar.md](docs/uc-noktalar.md)**
---
## 💳 Fiyatlandırma
**Token paketleri — kullandıkça öde.** Numex uygulama aboneliğinden bağımsızdır. Tokenler
**kalıcıdır**: ay sonunda sıfırlanmaz, kullanmadıkça devreder. Her çağrıda yalnızca kullanılan token
bakiyeden düşer.
| Paket | Fiyat | Token | Yaklaşık | Öne çıkanlar |
|---|---|---|---|---|
| **Starter API** | ₺499 | 5.000.000 | ~2.500 sohbet mesajı · ~2 CLI projesi | Chat erişimi, kullanım metrikleri |
| **Growth API** ⭐ | ₺1.499 | 20.000.000 | ~10.000 mesaj · ~10 CLI projesi | Premium model havuzu, öncelikli kuyruk, aşım ₺0,10 / 1K |
| **Scale API** | ₺3.499 | 50.000.000 | ~25.000 mesaj · ~25 CLI projesi | Kurumsal destek & SLA, gelişmiş gözlemlenebilirlik, aşım ₺0,075 / 1K |
Model bazlı birim fiyatlar yukarıdaki [Modeller](#-modeller) tablosunda.
*Güncel fiyatlar için [numexai.com.tr/api](https://www.numexai.com.tr/api) esastır.*
## 🚦 Kullanım limitleri
Toplam harcaman arttıkça **tier**'in otomatik yükselir:
| Tier | İstek / dk | Token / dk | Günlük limit | Koşul |
|---|---|---|---|---|
| Free | 10 | 20K | 100K token | Ödeme bilgisi ekle |
| Tier 1 | 60 | 100K | Sınırsız | ₺250+ harcama |
| Tier 2 | 200 | 400K | Sınırsız | ₺2.500+ harcama |
| Tier 3 | 500 | 1M | Sınırsız | ₺10.000+ harcama |
| Enterprise | Özel | Özel | Sınırsız | İletişime geç |
## ⚠️ Hatalar
| Kod | Anlamı | Örnek gövde |
|---|---|---|
| `400` | Eksik / hatalı parametre | `{"error":"message zorunludur"}` |
| `401` | Anahtar yok veya geçersiz | `{"error":"x-api-key zorunludur","code":"missing_api_key"}` |
| `402` | Token bakiyesi yetersiz | `{"error":"Yetersiz token bakiyesi","code":"insufficient_tokens","tokenBalance":0}` |
| `429` | Hız limiti aşıldı | Bekleyip üstel geri çekilmeyle tekrar dene |
| `500` / `502` | Sunucu veya dış servis hatası | Kısa bir süre sonra tekrar dene |
---
## 🧰 SDK ve örnekler
| | |
|---|---|
| 🟩 **Node.js / TypeScript** | [numex-sdk](https://github.com/mobilcep/numex-sdk) — `npm i numexcodex-sdk` |
| 🐍 **Python** | Resmî SDK henüz yok; [`ornekler/python_sohbet.py`](ornekler/python_sohbet.py) |
| 🧪 **cURL** | [`ornekler/curl.sh`](ornekler/curl.sh) |
| ⌨️ **CLI** | [Numex Codex](https://github.com/mobilcep/numex-codex) — `npm i -g @numexai/cli` |
## 📬 Destek
- 📧 **destek@numexai.com.tr** — hafta içi 09:00–18:00
- 📞 **0216 311 53 58** — acil durumlar ve kurumsal, hafta içi 09:00–17:00
- 🤖 Numex sohbetinde *"destek"* yaz — 7/24
- 🐞 Dokümanda hata mı var? → [Issue aç](../../issues/new/choose)
<div align="center">
---
**Numex API** · [Numex Ailesi](https://www.numexai.com.tr/aile)'nin geliştirici kapısı · 🇹🇷
</div>

193
docs/uc-noktalar.md Normal file
View File

@ -0,0 +1,193 @@
# 📚 Numex API — Uç Nokta Referansı
**Base URL:** `https://www.numexai.com.tr/api/v1`
**Kimlik:** `Authorization: Bearer nx_live_...` veya `x-api-key: nx_live_...`
**Gövde:** `Content-Type: application/json`
Tüm yapay zekâ uç noktaları çağrı başına token bakiyenden düşer; bakiye yetmezse `402
insufficient_tokens` döner.
---
## `POST /chat`
Tek bir mesaj ve isteğe bağlı sohbet geçmişiyle yanıt üretir. Yanıt Numex **Pipeline**'ından geçer.
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
| `message` | string | ✅ | Kullanıcının mesajı |
| `history` | array | — | Önceki mesajlar: `[{ "role": "user"\|"assistant", "content": "..." }]` |
| `model` | string | — | `numex-pro`, `numex-fast`, `numex-think`, `numex-code` (planına göre) |
| `maxOutputTokens` | number | — | 32–8192, varsayılan 4096 |
**İstek**
```json
{
"message": "Bu fonksiyonu açıkla: const f = n => n < 2 ? n : f(n-1) + f(n-2)",
"history": [],
"model": "numex-code",
"maxOutputTokens": 1024
}
```
**Yanıt `200`**
```json
{
"success": true,
"answer": "Bu, özyinelemeli bir Fibonacci fonksiyonudur…",
"modelProfile": "code",
"modelLabel": "Numex Code",
"usage": {
"estimatedInputTokens": 24,
"estimatedOutputTokens": 180,
"estimatedTotalTokens": 204,
"billedTokens": 204,
"multiplier": 1
}
}
```
---
## `POST /chat/stream`
`/chat` ile aynı gövde; yanıt **Server-Sent Events** olarak parça parça gelir.
```bash
curl -N https://www.numexai.com.tr/api/v1/chat/stream \
-H "Authorization: Bearer $NUMEX_API_KEY" \
-H "Content-Type: application/json" \
-d '{"message":"Türkiye ekonomisi hakkında kısa bir analiz yaz"}'
```
> Not: Sitedeki örnekler şu an tam yanıt döndüren `/chat` kullanıyor; akışlı yanıta ihtiyacın yoksa
> `/chat` ile başla.
---
## `POST /chat/agent`
Araç kullanan (function calling), çok adımlı ajan çağrısı. OpenAI tarzı `messages` dizisi alır.
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
| `messages` | array | ✅ | `[{ "role": "system"\|"user"\|"assistant"\|"tool", "content": ... }]` |
| `tools` | array | — | JSON Schema ile tanımlı araçlar |
| `system` | string | — | Sistem talimatı |
| `mode` / `agentMode` | string | — | Ajan modu |
| `model` | string | — | Model |
| `maxOutputTokens` | number | — | Çıktı sınırı |
```json
{
"messages": [{ "role": "user", "content": "İstanbul'da yarın hava nasıl olacak?" }],
"tools": [{
"name": "hava_durumu",
"description": "Bir şehir için hava tahmini döner",
"input_schema": {
"type": "object",
"properties": { "sehir": { "type": "string" }, "gun": { "type": "string" } },
"required": ["sehir"]
}
}]
}
```
---
## `POST /vision`
Görsel analizi, açıklama ve OCR.
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
| `image` | string | ✅ | Görsel URL'si **veya** Base64 |
| `prompt` | string | — | Görselle ilgili soru / talimat |
```json
{ "image": "https://ornek.com/fatura.jpg", "prompt": "Bu faturadaki toplam tutarı ve tarihi çıkar" }
```
Hatalar: `400 image alanı (URL veya Base64) zorunludur` · `400 Görsel indirilemedi: …`
---
## `POST /images/generations`
Metinden görsel üretir.
```json
{ "prompt": "Kapadokya'da gün doğumu, sıcak hava balonları, sinematik" }
```
Hata: `400 Geçersiz görsel isteği`
---
## `POST /embeddings`
Metinleri vektöre çevirir — anlamsal arama, RAG, sınıflandırma, kümeleme için.
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
| `input` | string \| string[] | ✅ | Tek metin ya da metin dizisi (`inputs`, `texts` da kabul edilir) |
- Tek istekte **en fazla 128 metin**.
```json
{ "input": ["Kira sözleşmesi nasıl feshedilir?", "Depozito iadesi ne zaman yapılır?"] }
```
**Yanıt:** `{ "success": true, "embeddings": [[0.012, -0.08, …], […]], "dimensions": <vektör boyutu>, "count": 2 }`
(`dimensions` modele göre değişir.)
Hatalar: `400 input (metin veya metin dizisi) zorunludur` · `400 En fazla 128 metin gönderilebilir`
---
## `POST /search`
Web'de arar, kaynakları başlık, bağlantı ve kısa özetle döner.
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
| `query` | string | ✅ | Arama sorgusu (`sorgu` da kabul edilir) |
| `num` | number | — | Kaynak sayısı, 1–10 (varsayılan 5; `limit` da kabul edilir) |
```json
{ "query": "2026 asgari ücret", "num": 5 }
```
Yanıttaki her kaynak: `{ "title": "...", "link": "...", "snippet": "..." }`
Hatalar: `400 query zorunludur` · `502 Web araması şu an yapılamadı.`
---
## `GET /models`
Hesabının kullanabildiği modelleri listeler.
## `GET /features`
Anahtarına bağlı planda hangi yeteneklerin açık olduğunu döner: `{ "success": true, "features": {...} }`.
Entegrasyona başlamadan önce kontrol etmen önerilir.
---
## Hesap ve kullanım
| Yöntem | Yol | Açıklama |
|---|---|---|
| `GET` | `/me` · `/account` | Hesap bilgisi ve token bakiyesi |
| `GET` | `/usage` | Güncel kullanım |
| `GET` | `/usage/history` | Kullanım geçmişi |
| `GET` | `/payments` | Ödeme geçmişi |
| `GET` | `/me/models` | Tercih edilebilir modeller |
| `POST` | `/me/preferred-model` | Varsayılan modeli ayarla |
| `POST` | `/me/test-key` | Anahtarı test et |
Anahtar yönetimi (oluşturma, döndürme, silme) ve paket satın alma **Numex paneli** üzerinden yapılır.
---
← [Ana sayfa](../README.md)

BIN
gorseller/api-banner.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 207 KiB

BIN
gorseller/api-sayfa.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 257 KiB

Binary file not shown.

25
ornekler/curl.sh Executable file
View File

@ -0,0 +1,25 @@
#!/usr/bin/env bash
# Numex API — cURL örnekleri
# Kullanım: export NUMEX_API_KEY=nx_live_... && bash curl.sh
set -euo pipefail
BASE="https://www.numexai.com.tr/api/v1"
AUTH="Authorization: Bearer ${NUMEX_API_KEY:?NUMEX_API_KEY tanımlı değil}"
echo "== Sohbet"
curl -s "$BASE/chat" -H "$AUTH" -H "Content-Type: application/json" \
-d '{"message":"Bana 3 maddede Numex nedir anlat","history":[],"maxOutputTokens":512}'
echo
echo "== Web araması"
curl -s "$BASE/search" -H "$AUTH" -H "Content-Type: application/json" \
-d '{"query":"yapay zeka KVKK","num":3}'
echo
echo "== Embedding"
curl -s "$BASE/embeddings" -H "$AUTH" -H "Content-Type: application/json" \
-d '{"input":["merhaba dünya","selam evren"]}' | head -c 300
echo
echo "== Açık yetenekler"
curl -s "$BASE/features" -H "$AUTH"
echo

35
ornekler/node_rag.mjs Normal file
View File

@ -0,0 +1,35 @@
// Numex API — embeddings ile basit anlamsal arama (RAG'in "R"si)
// Kullanım: NUMEX_API_KEY=nx_live_... node node_rag.mjs
const BASE = 'https://www.numexai.com.tr/api/v1';
const headers = {
Authorization: `Bearer ${process.env.NUMEX_API_KEY}`,
'Content-Type': 'application/json',
};
const belgeler = [
'Kira sözleşmesi, kiracı tarafından 15 gün önceden yazılı bildirimle feshedilebilir.',
'Depozito, taşınmaz hasarsız teslim edildiğinde 30 gün içinde iade edilir.',
'Aidat ödemeleri her ayın 5\'ine kadar yönetim hesabına yatırılır.',
];
async function embed(input) {
const r = await fetch(`${BASE}/embeddings`, { method: 'POST', headers, body: JSON.stringify({ input }) });
if (!r.ok) throw new Error(`${r.status} ${await r.text()}`);
const { embeddings } = await r.json(); // { embeddings: number[][], dimensions, count }
return embeddings;
}
const kosinus = (a, b) => {
let d = 0, na = 0, nb = 0;
for (let i = 0; i < a.length; i++) { d += a[i] * b[i]; na += a[i] ** 2; nb += b[i] ** 2; }
return d / (Math.sqrt(na) * Math.sqrt(nb));
};
const soru = 'Depozitomu ne zaman geri alırım?';
const [soruVek, ...belgeVek] = await embed([soru, ...belgeler]);
const sirali = belgeler
.map((metin, i) => ({ metin, skor: kosinus(soruVek, belgeVek[i]) }))
.sort((a, b) => b.skor - a.skor);
console.log(`Soru: ${soru}\n`);
for (const { metin, skor } of sirali) console.log(`${skor.toFixed(3)} ${metin}`);

40
ornekler/python_sohbet.py Normal file
View File

@ -0,0 +1,40 @@
"""Numex API — Python ile çok turlu sohbet örneği.
Kurulum: pip install requests
Kullanım: NUMEX_API_KEY=nx_live_... python python_sohbet.py
"""
import os
import requests
BASE = "https://www.numexai.com.tr/api/v1"
HEADERS = {"Authorization": f"Bearer {os.environ['NUMEX_API_KEY']}"}
def sor(mesaj, gecmis, model="numex-pro"):
r = requests.post(
f"{BASE}/chat",
headers=HEADERS,
json={"message": mesaj, "history": gecmis, "model": model, "maxOutputTokens": 1024},
timeout=120,
)
if r.status_code == 402:
raise SystemExit("Token bakiyesi yetersiz — numexai.com.tr/api üzerinden paket yükleyin.")
r.raise_for_status()
return r.json()
def main():
gecmis = []
print("Numex ile sohbet (çıkmak için boş satır)\n")
while True:
mesaj = input("Sen: ").strip()
if not mesaj:
break
yanit = sor(mesaj, gecmis)
cevap = yanit.get("answer", "")
print(f"\nNumex ({yanit.get('modelLabel', '')}): {cevap}\n")
gecmis += [{"role": "user", "content": mesaj}, {"role": "assistant", "content": cevap}]
if __name__ == "__main__":
main()