pub struct LMBuilder<S: State = Empty> { /* private fields */ }
Expand description
Use builder syntax to set the inputs and finish with build()
.
Implementations§
Source§impl<S: State> LMBuilder<S>
impl<S: State> LMBuilder<S>
Sourcepub fn build(self) -> LMwhere
S: IsComplete,
pub fn build(self) -> LMwhere
S: IsComplete,
Finish building and return the requested object
Examples found in repository?
examples/01-simple.rs (line 79)
75async fn main() {
76 configure(
77 LM::builder()
78 .api_key(SecretString::from(std::env::var("OPENAI_API_KEY").unwrap()))
79 .build(),
80 ChatAdapter,
81 );
82
83 let example = example! {
84 "question": "input" => "What is the capital of France?",
85 };
86
87 let qa_rater = QARater::builder().build();
88 let prediction = qa_rater.forward(example).await.unwrap();
89 println!("{prediction:?}");
90}
More examples
examples/03-evaluate-hotpotqa.rs (line 63)
59async fn main() -> anyhow::Result<()> {
60 configure(
61 LM::builder()
62 .api_key(SecretString::from(std::env::var("OPENAI_API_KEY")?))
63 .build(),
64 ChatAdapter {},
65 );
66
67 let examples = DataLoader::load_hf(
68 "hotpotqa/hotpot_qa",
69 vec!["question".to_string()],
70 vec!["answer".to_string()],
71 "fullwiki",
72 "validation",
73 true,
74 )?[..10]
75 .to_vec();
76
77 let evaluator = QARater::builder().build();
78 let metric = evaluator.evaluate(examples).await;
79
80 println!("Metric: {metric}");
81 Ok(())
82}
examples/04-optimize-hotpotqa.rs (line 63)
59async fn main() -> anyhow::Result<()> {
60 configure(
61 LM::builder()
62 .api_key(SecretString::from(std::env::var("OPENAI_API_KEY")?))
63 .build(),
64 ChatAdapter {},
65 );
66
67 let examples = DataLoader::load_hf(
68 "hotpotqa/hotpot_qa",
69 vec!["question".to_string()],
70 vec!["answer".to_string()],
71 "fullwiki",
72 "validation",
73 true,
74 )?[..10]
75 .to_vec();
76
77 let mut rater = QARater::builder().build();
78 let optimizer = COPRO::builder().breadth(10).depth(1).build();
79
80 println!("Rater: {:?}", rater.answerer.get_signature().instruction());
81
82 optimizer.compile(&mut rater, examples.clone()).await?;
83
84 println!("Rater: {:?}", rater.answerer.get_signature().instruction());
85
86 Ok(())
87}
Sourcepub fn api_key(self, value: SecretString) -> LMBuilder<SetApiKey<S>>where
S::ApiKey: IsUnset,
pub fn api_key(self, value: SecretString) -> LMBuilder<SetApiKey<S>>where
S::ApiKey: IsUnset,
Required.
Examples found in repository?
examples/01-simple.rs (line 78)
75async fn main() {
76 configure(
77 LM::builder()
78 .api_key(SecretString::from(std::env::var("OPENAI_API_KEY").unwrap()))
79 .build(),
80 ChatAdapter,
81 );
82
83 let example = example! {
84 "question": "input" => "What is the capital of France?",
85 };
86
87 let qa_rater = QARater::builder().build();
88 let prediction = qa_rater.forward(example).await.unwrap();
89 println!("{prediction:?}");
90}
More examples
examples/03-evaluate-hotpotqa.rs (line 62)
59async fn main() -> anyhow::Result<()> {
60 configure(
61 LM::builder()
62 .api_key(SecretString::from(std::env::var("OPENAI_API_KEY")?))
63 .build(),
64 ChatAdapter {},
65 );
66
67 let examples = DataLoader::load_hf(
68 "hotpotqa/hotpot_qa",
69 vec!["question".to_string()],
70 vec!["answer".to_string()],
71 "fullwiki",
72 "validation",
73 true,
74 )?[..10]
75 .to_vec();
76
77 let evaluator = QARater::builder().build();
78 let metric = evaluator.evaluate(examples).await;
79
80 println!("Metric: {metric}");
81 Ok(())
82}
examples/04-optimize-hotpotqa.rs (line 62)
59async fn main() -> anyhow::Result<()> {
60 configure(
61 LM::builder()
62 .api_key(SecretString::from(std::env::var("OPENAI_API_KEY")?))
63 .build(),
64 ChatAdapter {},
65 );
66
67 let examples = DataLoader::load_hf(
68 "hotpotqa/hotpot_qa",
69 vec!["question".to_string()],
70 vec!["answer".to_string()],
71 "fullwiki",
72 "validation",
73 true,
74 )?[..10]
75 .to_vec();
76
77 let mut rater = QARater::builder().build();
78 let optimizer = COPRO::builder().breadth(10).depth(1).build();
79
80 println!("Rater: {:?}", rater.answerer.get_signature().instruction());
81
82 optimizer.compile(&mut rater, examples.clone()).await?;
83
84 println!("Rater: {:?}", rater.answerer.get_signature().instruction());
85
86 Ok(())
87}
Sourcepub fn maybe_base_url(self, value: Option<String>) -> LMBuilder<SetBaseUrl<S>>where
S::BaseUrl: IsUnset,
pub fn maybe_base_url(self, value: Option<String>) -> LMBuilder<SetBaseUrl<S>>where
S::BaseUrl: IsUnset,
Sourcepub fn maybe_config(self, value: Option<LMConfig>) -> LMBuilder<SetConfig<S>>where
S::Config: IsUnset,
pub fn maybe_config(self, value: Option<LMConfig>) -> LMBuilder<SetConfig<S>>where
S::Config: IsUnset,
Sourcepub fn history(self, value: Vec<LMResponse>) -> LMBuilder<SetHistory<S>>where
S::History: IsUnset,
pub fn history(self, value: Vec<LMResponse>) -> LMBuilder<SetHistory<S>>where
S::History: IsUnset,
Sourcepub fn maybe_history(
self,
value: Option<Vec<LMResponse>>,
) -> LMBuilder<SetHistory<S>>where
S::History: IsUnset,
pub fn maybe_history(
self,
value: Option<Vec<LMResponse>>,
) -> LMBuilder<SetHistory<S>>where
S::History: IsUnset,
Sourcepub fn client(self, value: Client<OpenAIConfig>) -> LMBuilder<SetClient<S>>where
S::Client: IsUnset,
pub fn client(self, value: Client<OpenAIConfig>) -> LMBuilder<SetClient<S>>where
S::Client: IsUnset,
Sourcepub fn maybe_client(
self,
value: Option<Client<OpenAIConfig>>,
) -> LMBuilder<SetClient<S>>where
S::Client: IsUnset,
pub fn maybe_client(
self,
value: Option<Client<OpenAIConfig>>,
) -> LMBuilder<SetClient<S>>where
S::Client: IsUnset,
Auto Trait Implementations§
impl<S> Freeze for LMBuilder<S>
impl<S = Empty> !RefUnwindSafe for LMBuilder<S>
impl<S> Send for LMBuilder<S>
impl<S> Sync for LMBuilder<S>
impl<S> Unpin for LMBuilder<S>
impl<S = Empty> !UnwindSafe for LMBuilder<S>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self
into a Left
variant of Either<Self, Self>
if into_left
is true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self
into a Left
variant of Either<Self, Self>
if into_left(&self)
returns true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read more