Lingara Lingara Ohjeet Oppaat API Kirjastot Sovellukset Rakenna Verkkosovellus
Kieli: Suomi

Lähetä tutorvuoro

API-versio 2026-10-affable-towhee

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

Lähettää yhden viestin tutorille ja suoratoistaa vastauksen delta-tapahtumina, jotka päättyvät done-tapahtumaan. Mitään ei tallenneta: lähetä viimeaikainen keskustelu kentässä history, enintään 20 merkintää. character ja situation määrittävät tilanteen. Vaatii maksullisen tilauksen.

Oikeuslaajuudet tutor:converse

Parametrit

Lingara-Versionheaderstringvalinnainen
API-versio, jolla tähän pyyntöön vastataan. Ilman sitä käyttötunnus saa version, johon sen asiakas on kiinnitetty, ja pyyntö ilman tunnusta saa nykyisen version. Vielä kehitteillä olevaan versioon pääsee vain nimeämällä sen tässä. Tuntemattomaan versioon vastataan 400 koodilla api_version_unknown. GET /v1/versions luettelee versiot.

Pyynnön runko application/json

messagestringpakollinen
historyarray of TurnEntryvalinnainen
roleTurnRolepakollinen
contentstringpakollinen
source_langstringpakollinen
target_langstringpakollinen
levelinteger | nullvalinnainen
characterstring | nullvalinnainen
situationstring | nullvalinnainen

Vastaukset

200 Tutorin vastaus pala palalta

Virran tapahtumat text/event-stream

Ei lähetä keepalive-kommentteja.

delta TurnDelta
textstringpakollinen
notice Notice
codestringpakollinen
messagestringpakollinen
done Done Päättää virran
error StreamError Päättää virran

Saapuu 200-vastauksen sisällä. Tilarivi on jo lähetetty, joten virran avaamisen jälkeinen virhe ilmoitetaan tänä tapahtumana.

codestringpakollinen
messagestringpakollinen
plan_idstring | nullvalinnainen

Virheet

402application/json
Käytön mukaan laskutettavan asiakkaan kutsu hylättiin ennen kuin se kulutti mitään. spend_cap_reached: asiakas tai sen tili on saavuttanut kuukausittaisen kulutusrajansa; nosta rajaa Integraatiot-sivulla. metered_billing_inactive: käytön mukainen laskutus ei ole tällä tilillä käytössä; ota se käyttöön tai päivitä maksutapa Integraatiot-sivulla.
410application/json
API-versio, jolla tähän pyyntöön vastataan, on lopetettu. Lähetä tuettu versio Lingara-Version-otsakkeessa tai kiinnitä asiakas toiseen versioon.
4XXapplication/json
Pyyntö hylättiin. code kertoo syyn, ja error kertoo sen sanoin.
503application/json · text/plain
Palvelu ei ole tilapäisesti käytettävissä; yritä uudelleen Retry-After-otsakkeen ilmoittaman sekuntimäärän jälkeen. Huoltokatkon aikana runko on pelkkää tekstiä virhekehyksen sijaan.
5XXapplication/json
Pyyntö hylättiin. code kertoo syyn, ja error kertoo sen sanoin.
codestringpakollinen

Miksi pyyntö hylättiin, pysyvänä koodina, jonka mukaan voit haarautua: esimerkiksi insufficient_scope (403), rate_limited (429) ja käytön mukaan laskutettavalle asiakkaalle spend_cap_reached (402) ja metered_billing_inactive (402).

errorstringpakollinen

Esimerkki

Koodiesimerkin kieli

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äytätkö mieluummin kirjastoa? Katso Kirjastot-osio.

Esimerkkivirta

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

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

event: done
data: {}

Jos käännös ja englanninkielinen viite poikkeavat toisistaan, englanninkielinen viite on oikea.