Lingara Lingara Documentatie Gidsen API Bibliotheken Apps Bouwen Webapp
Taal: Nederlands

Een tutorbeurt versturen

API-versie 2026-10-affable-towhee

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

Stuurt één bericht naar de tutor en streamt het antwoord als delta-events, eindigend met done. Er wordt niets opgeslagen: stuur het recente gesprek mee in history, tot 20 items. character en situation bepalen de setting. Vereist een betaald abonnement.

Bevoegdheden tutor:converse

Parameters

Lingara-Versionheaderstringoptioneel
De API-versie waaronder dit verzoek wordt beantwoord. Zonder deze krijgt een toegangstoken de versie waaraan zijn client is gekoppeld, en een verzoek zonder token de huidige versie. De versie die nog in ontwikkeling is, bereik je alleen door die hier te noemen. Een onbekende versie geeft 400 met code api_version_unknown. GET /v1/versions toont de versies.

Request-body application/json

messagestringverplicht
historyarray of TurnEntryoptioneel
roleTurnRoleverplicht
contentstringverplicht
source_langstringverplicht
target_langstringverplicht
levelinteger | nulloptioneel
characterstring | nulloptioneel
situationstring | nulloptioneel

Antwoorden

200 Het antwoord van de tutor, stukje voor stukje

Stream-events text/event-stream

Stuurt geen keepalive-commentaren.

delta TurnDelta
textstringverplicht
notice Notice
codestringverplicht
messagestringverplicht
done Done Beëindigt de stream
error StreamError Beëindigt de stream

Komt binnen het 200-antwoord aan. De statusregel is al verzonden, dus een fout nadat de stream is geopend wordt als deze gebeurtenis gemeld.

codestringverplicht
messagestringverplicht
plan_idstring | nulloptioneel

Fouten

402application/json
De aanroep van een client met verbruiksafrekening is geweigerd voordat die iets heeft uitgegeven. spend_cap_reached: de client of zijn account heeft zijn maandelijkse uitgavenlimiet bereikt; verhoog de limiet op de pagina Integraties. metered_billing_inactive: verbruiksafrekening is niet actief voor dit account; stel die in of werk de betaalmethode bij op de pagina Integraties.
410application/json
De API-versie waaronder dit verzoek wordt beantwoord, is stopgezet. Stuur een ondersteunde versie mee in Lingara-Version, of koppel de client aan een andere versie.
4XXapplication/json
Het verzoek is geweigerd. code geeft de reden aan en error beschrijft die in woorden.
503application/json · text/plain
De dienst is tijdelijk niet beschikbaar; probeer het opnieuw na het aantal seconden in Retry-After. Tijdens onderhoud is de body platte tekst in plaats van de foutenvelop.
5XXapplication/json
Het verzoek is geweigerd. code geeft de reden aan en error beschrijft die in woorden.
codestringverplicht

Waarom het verzoek is geweigerd, als stabiele code om op te vertakken: bijvoorbeeld insufficient_scope (403), rate_limited (429) en, voor een client met verbruiksafrekening, spend_cap_reached (402) en metered_billing_inactive (402).

errorstringverplicht

Voorbeeld

Taal van het codevoorbeeld

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

Liever een bibliotheek? Zie de sectie Bibliotheken.

Voorbeeldstream

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

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

event: done
data: {}

Als een vertaling afwijkt van de Engelse referentie, is de Engelse referentie juist.