Skip to main content

tokn_convert/
lib.rs

1pub use tokn_core::provider;
2
3pub mod chat;
4pub mod error;
5pub mod ir;
6pub mod messages;
7pub mod responses;
8pub mod sse;
9pub mod tools;
10pub mod usage;
11
12use crate::provider::Endpoint;
13use serde_json::Value;
14
15pub use error::Result;
16
17pub fn convert_request(from: Endpoint, to: Endpoint, body: &Value) -> Result<Value> {
18  if from == to {
19    return Ok(body.clone());
20  }
21  let req = match from {
22    Endpoint::ChatCompletions => chat::request_from_value(body)?,
23    Endpoint::Responses => responses::request_from_value(body)?,
24    Endpoint::Messages => messages::request_from_value(body)?,
25  };
26  match to {
27    Endpoint::ChatCompletions => chat::request_to_value(&req),
28    Endpoint::Responses => responses::request_to_value(&req),
29    Endpoint::Messages => messages::request_to_value(&req),
30  }
31}
32
33pub fn convert_response(from: Endpoint, to: Endpoint, body: &Value) -> Result<Value> {
34  if from == to {
35    return Ok(body.clone());
36  }
37  let resp = match from {
38    Endpoint::ChatCompletions => chat::response_from_value(body)?,
39    Endpoint::Responses => responses::response_from_value(body)?,
40    Endpoint::Messages => messages::response_from_value(body)?,
41  };
42  match to {
43    Endpoint::ChatCompletions => chat::response_to_value(&resp),
44    Endpoint::Responses => responses::response_to_value(&resp),
45    Endpoint::Messages => messages::response_to_value(&resp),
46  }
47}