05_heterogenous_examples/
05-heterogenous-examples.rs

1/*
2Script to run a heterogenous example.
3
4Run with:
5```
6cargo run --example 05-heterogenous-examples
7```
8*/
9
10use dspy_rs::{ChatAdapter, LM, Predict, Predictor, configure, example, sign};
11use secrecy::SecretString;
12
13#[tokio::main]
14async fn main() -> anyhow::Result<()> {
15    configure(
16        LM::builder()
17            .api_key(SecretString::from(std::env::var("OPENAI_API_KEY")?))
18            .build(),
19        ChatAdapter {},
20    );
21
22    let exp = example! {
23        "number": "input" => 10,
24    };
25    let predict = Predict::new(sign! {
26        (number: i32) -> number_squared: i32, number_cubed: i32
27    });
28
29    let prediction = predict.forward(exp).await?;
30    println!("{prediction:?}");
31
32    Ok(())
33}