MCPcopy Index your code
hub / github.com/InfinitiBit/graphbit / stream

Method stream

python/src/llm/client.rs:653–710  ·  view source on GitHub ↗
(
        &self,
        prompt: String,
        max_tokens: Option<i64>,
        temperature: Option<f64>,
    )

Source from the content-addressed store, hash-verified

651 #[instrument(skip(self), fields(prompt_len = prompt.len()))]
652 #[pyo3(signature = (prompt, max_tokens=None, temperature=None))]
653 fn stream(
654 &self,
655 prompt: String,
656 max_tokens: Option<i64>,
657 temperature: Option<f64>,
658 ) -> PyResult<StreamIterator> {
659 // Validate input
660 if prompt.is_empty() {
661 return Err(validation_error(
662 "prompt",
663 Some(&prompt),
664 "Prompt cannot be empty",
665 ));
666 }
667
668 // Validate max_tokens
669 let validated_max_tokens = if let Some(tokens) = max_tokens {
670 if tokens <= 0 {
671 return Err(validation_error(
672 "max_tokens",
673 Some(&tokens.to_string()),
674 "max_tokens must be greater than 0",
675 ));
676 }
677 if tokens > u32::MAX as i64 {
678 return Err(validation_error(
679 "max_tokens",
680 Some(&tokens.to_string()),
681 "max_tokens is too large",
682 ));
683 }
684 Some(tokens as u32)
685 } else {
686 None
687 };
688
689 // Validate temperature
690 let validated_temperature = if let Some(temp) = temperature {
691 if !(0.0..=2.0).contains(&temp) {
692 return Err(validation_error(
693 "temperature",
694 Some(&temp.to_string()),
695 "temperature must be between 0.0 and 2.0",
696 ));
697 }
698 Some(temp as f32)
699 } else {
700 None
701 };
702
703 Ok(StreamIterator::new(
704 Arc::clone(&self.provider),
705 self.config.clone(),
706 prompt,
707 validated_max_tokens,
708 validated_temperature,
709 ))
710 }

Callers 5

__anext__Method · 0.45
complete_streamMethod · 0.45
__anext__Method · 0.45
streaming_responseMethod · 0.45

Calls 4

validation_errorFunction · 0.85
to_stringMethod · 0.80
cloneMethod · 0.80
is_emptyMethod · 0.45

Tested by

no test coverage detected