sim_codec_chat/providers/
openai.rs1mod common;
8mod decode;
9mod encode;
10mod runtime;
11
12pub use decode::{
13 decode_openai_request, decode_openai_request_with_limits, decode_openai_response,
14 decode_openai_response_with_limits, decode_openai_stream, decode_openai_stream_with_limits,
15};
16pub(in crate::providers) use decode::{
17 decode_openai_request_for_codec_with_limits, decode_openai_response_for_codec_with_limits,
18 decode_openai_stream_for_codec_with_limits,
19};
20pub(in crate::providers) use encode::encode_openai_response_for_codec;
21pub use encode::{encode_openai_request, encode_openai_response};
22pub use runtime::{OpenAiCodec, OpenAiCodecLib};
23
24use sim_kernel::{CodecId, Symbol};
25
26pub(super) const OPENAI_CODEC_ID: CodecId = CodecId(0);
27
28#[derive(Clone, Debug, PartialEq, Eq)]
30pub struct OpenAiCodecOptions {
31 pub model: String,
33 pub stream: bool,
35 pub tools: bool,
37}
38
39impl OpenAiCodecOptions {
40 pub fn new(model: impl Into<String>, stream: bool, tools: bool) -> Self {
42 Self {
43 model: model.into(),
44 stream,
45 tools,
46 }
47 }
48}
49
50pub type OpenAiRequestOptions = OpenAiCodecOptions;
52
53pub fn openai_codec_symbol() -> Symbol {
55 Symbol::qualified("codec", "openai")
56}