swiftide_core/chat_completion/
chat_completion_request.rs1use std::collections::HashSet;
2
3use derive_builder::Builder;
4
5use super::{chat_message::ChatMessage, tools::ToolSpec};
6
7#[derive(Builder, Clone, PartialEq, Debug)]
10#[builder(setter(into, strip_option))]
11pub struct ChatCompletionRequest {
12 pub messages: Vec<ChatMessage>,
13 #[builder(default)]
14 pub tools_spec: HashSet<ToolSpec>,
15}
16
17impl ChatCompletionRequest {
18 pub fn builder() -> ChatCompletionRequestBuilder {
19 ChatCompletionRequestBuilder::default()
20 }
21
22 pub fn messages(&self) -> &[ChatMessage] {
23 self.messages.as_slice()
24 }
25
26 pub fn tools_spec(&self) -> &HashSet<ToolSpec> {
27 &self.tools_spec
28 }
29}
30
31impl From<Vec<ChatMessage>> for ChatCompletionRequest {
32 fn from(messages: Vec<ChatMessage>) -> Self {
33 ChatCompletionRequest {
34 messages,
35 tools_spec: HashSet::new(),
36 }
37 }
38}