langchain/openai_api/
files.rs1use super::client::OpenAIRequest;
2use reqwest::Method;
3use serde::{Deserialize, Serialize, Serializer};
4use std::collections::HashMap;
5
6pub enum FilePayload<'a> {
7 FineTuning {
8 payload: &'a str,
10 },
11}
12
13impl<'a> Serialize for FilePayload<'a> {
14 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
15 where
16 S: Serializer,
17 {
18 #[derive(Serialize)]
19 struct Payload<'a> {
20 payload: &'a str,
21 purpose: &'static str,
22 }
23 match self {
24 FilePayload::FineTuning { payload } => Payload {
25 payload,
26 purpose: "fine-tuning",
27 }
28 .serialize(serializer),
29 }
30 }
31}
32
33impl<'a> OpenAIRequest for FilePayload<'a> {
34 type Response = FileObject;
35
36 fn method() -> Method {
37 Method::POST
38 }
39
40 fn url() -> &'static str {
41 todo!()
42 }
43}
44
45#[derive(Deserialize)]
46pub struct FileObject {
47 pub id: String,
48 pub object: String,
49 pub bytes: i64,
50 pub created_at: i64,
51 pub filename: String,
52 pub purpose: String,
53}
54
55#[cfg(test)]
56mod test {
57 #[test]
58 fn serialisation() {
59 use super::*;
60 let payload = FilePayload::FineTuning {
61 payload: "Hello world",
62 };
63 let json = serde_json::to_string(&payload).unwrap();
64 assert_eq!(json, r#"{"payload":"Hello world","purpose":"fine-tuning"}"#);
65 }
66}