Lingara Lingara بەڵگەنامەکان ڕێنماییەکان API کتێبخانەکان ئەپەکان دروستکردن ئەپی وێب
زمان: سۆرانی

ناردنی نۆرەیەک بۆ مامۆستا

وەشانی API 2026-10-affable-towhee

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

یەک نامە بۆ مامۆستا دەنێرێت و وەڵامەکە وەک ڕووداوەکانی delta بە ستریم دەنێرێت، کە بە done کۆتایی دێت. هیچ شتێک هەڵناگیرێت: گفتوگۆی دوایی لە history بنێرە، تا 20 تۆمار. character و situation دیمەنەکە دیاری دەکەن. پێویستی بە پلانی پارەدار هەیە.

مەوداکانی دەسەڵات tutor:converse

پارامەترەکان

Lingara-Versionheaderstringئارەزوومەندانە
ئەو وەشانەی API کە ئەم داواکارییەی پێ وەڵام دەدرێتەوە. بەبێ ئەمە، تۆکنی دەستگەیشتن ئەو وەشانە وەردەگرێت کە کڕیارەکەی پێیەوە بەستراوە، و داواکارییەکی بێ تۆکن وەشانی ئێستا وەردەگرێت. وەشانێک کە هێشتا لە گەشەپێداندایە تەنها بە ناوهێنانی لێرە دەگەیەندرێت. وەشانێکی نەناسراو بە 400 لەگەڵ کۆدی api_version_unknown وەڵام دەدرێتەوە. GET /v1/versions وەشانەکان لیست دەکات.

ناوەڕۆکی داواکاری application/json

messagestringپێویست
historyarray of TurnEntryئارەزوومەندانە
roleTurnRoleپێویست
contentstringپێویست
source_langstringپێویست
target_langstringپێویست
levelinteger | nullئارەزوومەندانە
characterstring | nullئارەزوومەندانە
situationstring | nullئارەزوومەندانە

وەڵامەکان

200 وەڵامی مامۆستا، پارچە بە پارچە

ڕووداوەکانی ستریم text/event-stream

هیچ لێدوانێکی keepalive نانێرێت.

delta TurnDelta
textstringپێویست
notice Notice
codestringپێویست
messagestringپێویست
done Done پەخشەکە کۆتایی پێدەهێنێت
error StreamError پەخشەکە کۆتایی پێدەهێنێت

لەناو وەڵامی 200 دا دەگات. هێڵی دۆخ پێشتر نێردراوە، بۆیە هەر شکستێک دوای کرانەوەی پەخشەکە وەک ئەم ڕووداوە ڕاپۆرت دەکرێت.

codestringپێویست
messagestringپێویست
plan_idstring | nullئارەزوومەندانە

هەڵەکان

402application/json
بانگکردنێکی کلاینتێکی پێوانەکراو ڕەتکرایەوە پێش ئەوەی هیچ خەرج بکات. spend_cap_reached: کلاینتەکە یان هەژمارەکەی گەیشتووەتە سنووری خەرجیی مانگانەی؛ لە پەڕەی یەکخستنەکان سنوورەکە بەرز بکەرەوە. metered_billing_inactive: پارەدانی بەپێی بەکارهێنان بۆ ئەم هەژمارە چالاک نییە؛ لە پەڕەی یەکخستنەکان ڕێکی بخە یان شێوازی پارەدان نوێ بکەرەوە.
410application/json
ئەو وەشانەی API کە ئەم داواکارییەی پێ وەڵام دەدرێتەوە ڕاگیراوە. وەشانێکی پشتگیریکراو لە Lingara-Version بنێرە، یان کڕیارەکە بە وەشانێکی ترەوە ببەستەوە.
4XXapplication/json
داواکارییەکە ڕەتکرایەوە. code هۆکارەکەی دەڵێت، و error بە وشە ڕوونی دەکاتەوە.
503application/json · text/plain
خزمەتگوزارییەکە بە شێوەیەکی کاتی بەردەست نییە؛ دوای ئەو ژمارە چرکەیەی کە Retry-After دیاری دەکات دووبارە هەوڵ بدەرەوە. لە کاتی چاککردنەوەدا، ناوەڕۆکی وەڵامەکە دەقی سادەیە نەک پێچراوەی هەڵە.
5XXapplication/json
داواکارییەکە ڕەتکرایەوە. code هۆکارەکەی دەڵێت، و error بە وشە ڕوونی دەکاتەوە.
codestringپێویست

هۆکاری ڕەتکردنەوەی داواکارییەکە، وەک کۆدێکی جێگیر بۆ لقبوونەوە لەسەری: بۆ نموونە insufficient_scope (403)، rate_limited (429) و، بۆ کلاینتێکی پێوانەکراو، spend_cap_reached (402) و metered_billing_inactive (402).

errorstringپێویست

نموونە

زمانی نموونەی کۆد

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";

کتێبخانەیەکت پێ باشترە؟ بەشی کتێبخانەکان ببینە.

نموونەی ستریم

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

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

event: done
data: {}

ئەگەر وەرگێڕانێک و سەرچاوە ئینگلیزییەکە جیاواز بن، سەرچاوە ئینگلیزییەکە دروستە.