-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmain.rs
62 lines (55 loc) · 2.22 KB
/
main.rs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
use std::env;
use tokio::time::{sleep, Duration};
use qstash_rs::{
client::QstashClient,
llm_types::{ChatCompletionRequest, Message},
};
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let api_key = env::var("QSTASH_API_KEY").expect("QSTASH_API_KEY not set");
let client = QstashClient::builder().api_key(&api_key).build()?;
let mut chat_completion_request = ChatCompletionRequest::default();
chat_completion_request.model = "meta-llama/Meta-Llama-3-8B-Instruct".to_string();
chat_completion_request.messages = vec![Message {
role: "user".to_string(),
content: "What is the capital of Türkiye?".to_string(),
name: None,
}];
println!("Starting the process to create a chat completion.");
let resp = client
.create_chat_completion(chat_completion_request)
.await?;
println!("Retrieved response succesfully");
println!("{:#?}", resp);
println!("Now lets get response as stream of tokens");
sleep(Duration::from_secs(2)).await;
let mut chat_completion_request = ChatCompletionRequest::default();
chat_completion_request.model = "meta-llama/Meta-Llama-3-8B-Instruct".to_string();
chat_completion_request.max_tokens = Some(200);
chat_completion_request.messages = vec![Message {
role: "user".to_string(),
content: "Tell me a funny joke"
.to_string(),
name: None,
}];
chat_completion_request.stream = Some(true);
let resp = client
.create_chat_completion(chat_completion_request)
.await?;
let mut streamed_response = match resp {
qstash_rs::llm_types::ChatCompletionResponse::Stream(streamed_response) => streamed_response,
qstash_rs::llm_types::ChatCompletionResponse::Direct(_) => {
panic!("Response is not of type StreamedResponse");
}
};
println!("Retrieved response succesfully");
println!("Tell me a funny joke");
while let Some(a) = streamed_response.get_next_stream_message().await? {
if a.choices[0].delta.content.is_some() {
print!("{}", &a.choices[0].delta.content.as_ref().unwrap());
sleep(Duration::from_millis(200)).await;
}
}
println!();
Ok(())
}