Lingara Lingara ឯកសារ មគ្គុទ្ទេសក៍សិក្សា API បណ្ណាល័យ កម្មវិធី បង្កើត កម្មវិធីលើបណ្ដាញ
ភាសា: ខ្មែរ

ស្ទ្រីម

ទំព័រនេះត្រូវបានបកប្រែពីភាសាអង់គ្លេស។ ប្រសិនបើទាំងពីរខុសគ្នា ទំព័រភាសាអង់គ្លេសគឺត្រឹមត្រូវ។ អានទំព័រភាសាអង់គ្លេស

ប្រតិបត្តិការបួនស្ទ្រីមលទ្ធផលរបស់ពួកវាជា server-sent events៖ ការបង្កើតវាក្យសព្ទ ការផ្ញើសារទៅគ្រូ ការបង្កើតផែនការមេរៀន និងការតាមដានផែនការមេរៀន។ បណ្ណាល័យនីមួយៗប្តូរស្ទ្រីមព្រឹត្តិការណ៍ទៅជា iterator ផ្ទាល់របស់ភាសានោះ ហើយប្រគល់ព្រឹត្តិការណ៍នីមួយៗឱ្យអ្នកជាតម្លៃដែលមានប្រភេទ ដែលបានឌិកូដរួចហើយ។

របៀបដែលស្ទ្រីមបញ្ចប់

  • នៅពេលការងាររួចរាល់។ ការធ្វើម្តងហើយម្តងទៀតឈប់ដោយខ្លួនឯងនៅព្រឹត្តិការណ៍ចុងក្រោយរបស់ស្ទ្រីម។ សម្រាប់ផែនការមេរៀន ព្រឹត្តិការណ៍ចុងក្រោយនោះផ្ទុកលទ្ធផល ដូច្នេះអ្នកទទួលបានវាមុនពេលរង្វិលជុំបញ្ចប់។
  • នៅពេល API រាយការណ៍កំហុស។ កំហុសដែលមកដល់ក្នុងស្ទ្រីម ត្រូវបានបោះចេញជាកំហុស API ដែលជាប្រភេទដូចគ្នានឹងកំហុសដែលមកដល់មុនស្ទ្រីម។
  • នៅពេលការតភ្ជាប់បរាជ័យ។ ស្ទ្រីមដែលបញ្ចប់មុនព្រឹត្តិការណ៍ចុងក្រោយរបស់វា ឬដែលមិនផ្ញើអ្វីសោះរយៈពេល 120 វិនាទី ត្រូវបានបោះចេញជាកំហុសបញ្ជូន។
  • នៅពេលអ្នកឈប់។ បោះបង់ការហៅតាមរបៀបធម្មតានៃភាសារបស់អ្នក ឬឈប់អាន ហើយការតភ្ជាប់នឹងបិទភ្លាមៗ។

មតិ keepalive និងប្រភេទព្រឹត្តិការណ៍ដែលបណ្ណាល័យមិនទាន់ស្គាល់ ត្រូវបានរំលង ដូច្នេះ API ថ្មីជាងមិនដែលធ្វើឱ្យបណ្ណាល័យចាស់ជាងខូចទេ។

មិនដែលចាក់ឡើងវិញ

ស្ទ្រីមដែលបានបញ្ជូនព្រឹត្តិការណ៍សូម្បីតែមួយ មិនដែលត្រូវបានបណ្ណាល័យព្យាយាមឡើងវិញទេ ព្រោះការធ្វើវាម្តងទៀតអាចចំណាយកូតារបស់អ្នកពីរដង។ ប្រសិនបើស្ទ្រីមផែនការមេរៀនដាច់បន្ទាប់ពីវាបានចាប់ផ្តើម សូមតាមដានផែនការដដែលដោយប្រើ streamLessonPlan និង plan_id ពីព្រឹត្តិការណ៍ដំបូងរបស់វា។

ភាសានៃឧទាហរណ៍កូដ

TypeScript

const stream = client.generateVocabulary({ level: 2, source_lang: "en", target_lang: "zh", count: 8 });
for await (const ev of stream) {
  if (ev.event === "item") console.log(ev.data.word, ev.data.translation);
}

Rust

use lingara::models::{GenerateVocabularyEvent, VocabRequest};
use std::num::NonZeroU8;

let request = VocabRequest { level: 2, source_lang: "en".into(), target_lang: "zh".into(), count: NonZeroU8::new(8) };
let mut stream = client.generate_vocabulary(&request).await?;
while let Some(event) = stream.next().await {
    if let GenerateVocabularyEvent::Item(item) = event? {
        println!("{} {}", item.word, item.translation);
    }
}

Go

count := uint8(8)
s, err := client.GenerateVocabulary(ctx, lingara.VocabRequest{Level: 2, SourceLang: "en", TargetLang: "zh", Count: &count})
if err != nil {
	return err
}
defer s.Close()
for ev, err := range s.Events() {
	if err != nil {
		return err
	}
	if item, ok := ev.(lingara.GenerateVocabularyEventItem); ok {
		fmt.Println(item.Data.Word, item.Data.Translation)
	}
}

Java

import com.getlingara.client.model.GenerateVocabularyEvent;
import com.getlingara.client.model.VocabRequest;

VocabRequest request = new VocabRequest().level(2).sourceLang("en").targetLang("zh").count(8);
try (EventStream<GenerateVocabularyEvent> stream = client.generateVocabulary(request)) {
  for (GenerateVocabularyEvent event : stream) {
    if (event instanceof GenerateVocabularyEvent.Item item) {
      System.out.println(item.data().getWord() + " " + item.data().getTranslation());
    }
  }
}

Kotlin

import com.getlingara.kotlin.LingaraClient
import com.getlingara.kotlin.model.GenerateVocabularyEvent
import com.getlingara.kotlin.model.VocabRequest

val request = VocabRequest(level = 2, sourceLang = "en", targetLang = "zh", count = 8)
// The request is sent here; collect the stream once, inside use {}.
client.generateVocabulary(request).use { stream ->
    stream.collect { event ->
        when (event) {
            is GenerateVocabularyEvent.Item -> println("${event.data.word} ${event.data.translation}")
            is GenerateVocabularyEvent.Started -> Unit
        }
    }
}

Ruby

client.generate_vocabulary(level: 2, source_lang: "en", target_lang: "zh", count: 8) do |event|
  case event
  in Lingara::GenerateVocabularyEventItem => item then puts "#{item.data.word}: #{item.data.translation}"
  else nil
  end
end

PHP

use Lingara\Model\VocabRequest;
use Lingara\Stream\GenerateVocabularyEvent;

$request = new VocabRequest(['level' => 2, 'source_lang' => 'en', 'target_lang' => 'zh', 'count' => 8]);
foreach ($client->generateVocabulary($request) as $event) {
    if ($event instanceof GenerateVocabularyEvent\Item) {
        echo $event->data->getWord(), ': ', $event->data->getTranslation(), "\n";
    }
}

អ្វីដែលទំព័រនេះរុំ