use crate::core::runnables::Runnable;
use async_trait::async_trait;
#[async_trait]
pub trait BaseLanguageModel<Input: Send + Sync + 'static, Output: Send + Sync + 'static>:
Runnable<Input, Output>
{
fn model_name(&self) -> &str;
fn get_num_tokens(&self, text: &str) -> usize;
fn temperature(&self) -> Option<f32> {
None
}
fn max_tokens(&self) -> Option<usize> {
None
}
fn with_temperature(self, temp: f32) -> Self
where
Self: Sized;
fn with_max_tokens(self, max: usize) -> Self
where
Self: Sized;
}