Lingara Lingara Belgeler Rehberler API Kütüphaneler Uygulamalar Oluştur Web uygulaması
Dil: Türkçe

Eğitmene bir tur gönder

API sürümü 2026-10-affable-towhee

post https://api.getlingara.com/v1/tutor/message

Eğitmene bir mesaj gönderir ve yanıtı delta olayları olarak akış halinde iletir, done ile biter. Hiçbir şey saklanmaz: son sohbeti en fazla 20 girdiyle history içinde gönderin. character ve situation sahneyi belirler. Ücretli bir plan gerektirir.

Kapsamlar tutor:converse

Parametreler

Lingara-Versionheaderstringisteğe bağlı
Bu isteğin yanıtlanacağı API sürümü. Belirtilmezse bir erişim token'ı istemcisinin bağlı olduğu sürümü, token içermeyen bir istek ise güncel sürümü alır. Hâlâ geliştirilmekte olan sürüme yalnızca burada adı verilerek ulaşılır. Bilinmeyen bir sürüm 400 ve api_version_unknown koduyla yanıtlanır. GET /v1/versions sürümleri listeler.

İstek gövdesi application/json

messagestringzorunlu
historyarray of TurnEntryisteğe bağlı
roleTurnRolezorunlu
contentstringzorunlu
source_langstringzorunlu
target_langstringzorunlu
levelinteger | nullisteğe bağlı
characterstring | nullisteğe bağlı
situationstring | nullisteğe bağlı

Yanıtlar

200 Eğitmenin yanıtı, parça parça

Akış olayları text/event-stream

Keepalive yorumu göndermez.

delta TurnDelta
textstringzorunlu
notice Notice
codestringzorunlu
messagestringzorunlu
done Done Akışı sonlandırır
error StreamError Akışı sonlandırır

200 yanıtının içinde gelir. Durum satırı zaten gönderilmiş olduğundan, akış açıldıktan sonraki bir hata bu olay olarak bildirilir.

codestringzorunlu
messagestringzorunlu
plan_idstring | nullisteğe bağlı

Hatalar

402application/json
Kullanım başına ücretlendirilen bir istemcinin çağrısı, hiçbir şey harcamadan reddedildi. spend_cap_reached: istemci veya hesabı aylık harcama sınırına ulaştı; sınırı Entegrasyonlar sayfasında yükseltin. metered_billing_inactive: bu hesap için kullanım başına ücretlendirme etkin değil; Entegrasyonlar sayfasında kurun veya ödeme yöntemini güncelleyin.
410application/json
Bu isteğin yanıtlandığı API sürümü sonlandırıldı. Lingara-Version içinde desteklenen bir sürüm gönderin veya istemciyi başka bir sürüme bağlayın.
4XXapplication/json
İstek reddedildi. code nedenini belirtir, error ise bunu sözcüklerle açıklar.
503application/json · text/plain
Hizmet geçici olarak kullanılamıyor; Retry-After içindeki saniye sayısı kadar bekledikten sonra yeniden deneyin. Bakım sırasında gövde, hata zarfı yerine düz metindir.
5XXapplication/json
İstek reddedildi. code nedenini belirtir, error ise bunu sözcüklerle açıklar.
codestringzorunlu

İsteğin neden reddedildiği, dallanmak için kullanılabilecek sabit bir kod olarak: örneğin insufficient_scope (403), rate_limited (429) ve kullanım başına ücretlendirilen bir istemci için spend_cap_reached (402) ile metered_billing_inactive (402).

errorstringzorunlu

Örnek

Kod örneğinin dili

curl

curl -N -X POST "https://api.getlingara.com/v1/tutor/message" \
  -H "Authorization: Bearer $LINGARA_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"message":"我要两斤荔枝。","history":[{"role":"assistant","content":"欢迎!今天的荔枝很新鲜。"}],"source_lang":"en","target_lang":"zh","level":2,"character":"a fruit seller in a night market","situation":"buying lychees, haggling"}'

TypeScript

const reply = client.sendTutorMessage({
  message: "你好!我想点一杯茶。",
  history: [],
  source_lang: "en",
  target_lang: "zh",
});
for await (const ev of reply) {
  if (ev.event === "delta") process.stdout.write(ev.data.text);
}

Rust

use lingara::models::{SendTutorMessageEvent, TutorTurnRequest};

let request = TutorTurnRequest {
    message: "你好!我想点一杯茶。".into(),
    history: Vec::new(),
    source_lang: "en".into(),
    target_lang: "zh".into(),
    level: None,
    character: None,
    situation: None,
};
let mut reply = client.send_tutor_message(&request).await?;
while let Some(event) = reply.next().await {
    if let SendTutorMessageEvent::Delta(delta) = event? {
        print!("{}", delta.text);
    }
}

Go

s, err := client.SendTutorMessage(ctx, lingara.TutorTurnRequest{
	Message:    "你好!我想点一杯茶。",
	SourceLang: "en",
	TargetLang: "zh",
})
if err != nil {
	return err
}
defer s.Close()
for ev, err := range s.Events() {
	if err != nil {
		return err
	}
	if delta, ok := ev.(lingara.SendTutorMessageEventDelta); ok {
		fmt.Print(delta.Data.Text)
	}
}

Java

import com.getlingara.client.model.SendTutorMessageEvent;
import com.getlingara.client.model.TutorTurnRequest;

TutorTurnRequest turn =
    new TutorTurnRequest().message("荔枝多少钱?").sourceLang("en").targetLang("zh").level(2);
try (EventStream<SendTutorMessageEvent> stream = client.sendTutorMessage(turn)) {
  for (SendTutorMessageEvent event : stream) {
    if (event instanceof SendTutorMessageEvent.Delta delta) {
      System.out.print(delta.data().getText());
    } else if (event instanceof SendTutorMessageEvent.Notice notice) {
      System.out.println("\n(" + notice.data().getMessage() + ")");
    }
  }
}

Kotlin

import com.getlingara.kotlin.LingaraClient
import com.getlingara.kotlin.model.SendTutorMessageEvent
import com.getlingara.kotlin.model.TutorTurnRequest

val turn = TutorTurnRequest(message = "荔枝多少钱?", sourceLang = "en", targetLang = "zh", level = 2)
client.sendTutorMessage(turn).use { stream ->
    stream.collect { event ->
        when (event) {
            is SendTutorMessageEvent.Delta -> print(event.data.text)
            is SendTutorMessageEvent.Notice -> println("\n(${event.data.message})")
        }
    }
}

Ruby

history = [{role: "user", content: "你好"}, {role: "assistant", content: "你好!你想练习什么?"}]
client.send_tutor_message(message: "我想点菜", history: history, source_lang: "en", target_lang: "zh") do |event|
  case event
  in Lingara::SendTutorMessageEventDelta => delta then print delta.data.text
  in Lingara::SendTutorMessageEventNotice => notice then warn notice.data.message
  else nil
  end
end
puts

PHP

use Lingara\Model\TutorTurnRequest;
use Lingara\Stream\SendTutorMessageEvent;

$turn = new TutorTurnRequest(['message' => '荔枝多少钱?', 'source_lang' => 'en', 'target_lang' => 'zh', 'level' => 2]);
foreach ($client->sendTutorMessage($turn) as $event) {
    if ($event instanceof SendTutorMessageEvent\Delta) {
        echo $event->data->getText();
    } elseif ($event instanceof SendTutorMessageEvent\Notice) {
        echo "\n(", $event->data->getMessage(), ')';
    }
}
echo "\n";

Kütüphane mi tercih edersiniz? Kütüphaneler bölümüne bakın.

Örnek akış

event: delta
data: {"text":"两斤荔枝,"}

event: delta
data: {"text":"一共三十块。"}

event: done
data: {}

Bir çeviri ile İngilizce referans arasında fark varsa, İngilizce referans geçerlidir.