Skip to main content

ProviderBridgeAdapter

Enum ProviderBridgeAdapter 

Source
pub enum ProviderBridgeAdapter {
    None,
    DeepSeek(DeepSeekBridgeAdapter),
    Kimi(KimiBridgeAdapter),
    Mimo(MimoBridgeAdapter),
    MiniMax(MiniMaxBridgeAdapter),
    DashScope(DashScopeBridgeAdapter),
    Xai(XaiBridgeAdapter),
    Zai(ZaiBridgeAdapter),
}

Variants§

Implementations§

Source§

impl ProviderBridgeAdapter

Source

pub fn for_provider( provider_id: &str, _target_protocol: WireProtocol, config: ProviderBridgeAdapterConfig, ) -> Self

Examples found in repository?
examples/provider_adapter.rs (lines 37-47)
7fn main() -> Result<(), Box<dyn std::error::Error>> {
8    let original_responses_body = json!({
9        "model": "deepseek-v4-pro",
10        "input": [
11            {
12                "type": "message",
13                "role": "user",
14                "content": [
15                    { "type": "input_text", "text": "Call lookup_bridge_fact, then answer." }
16                ]
17            }
18        ],
19        "tools": [{
20            "type": "function",
21            "name": "lookup_bridge_fact",
22            "description": "Look up a bridge fact.",
23            "parameters": {
24                "type": "object",
25                "properties": {
26                    "topic": { "type": "string" }
27                },
28                "required": ["topic"]
29            }
30        }],
31        "tool_choice": "required"
32    });
33
34    let universal = OpenAiResponsesTranslator.decode_request(original_responses_body.clone())?;
35    let mut chat_body = OpenAiChatTranslator.encode_request(&universal)?;
36
37    let mut adapter = ProviderBridgeAdapter::for_provider(
38        "deepseek",
39        WireProtocol::OpenAiChat,
40        ProviderBridgeAdapterConfig {
41            deepseek: DeepSeekBridgeSettings {
42                thinking: true,
43                replay_reasoning_content: true,
44            },
45            ..ProviderBridgeAdapterConfig::default()
46        },
47    );
48    adapter.prepare_chat_request(
49        ProviderRequestSource::OpenAiResponses,
50        &original_responses_body,
51        &mut chat_body,
52    );
53
54    println!("{}", serde_json::to_string_pretty(&chat_body)?);
55    Ok(())
56}
Source

pub fn prepare_responses_request(&mut self, request: &mut Value)

Source

pub fn prepare_chat_request( &mut self, source: ProviderRequestSource, original_request: &Value, chat_request: &mut Value, )

Examples found in repository?
examples/provider_adapter.rs (lines 48-52)
7fn main() -> Result<(), Box<dyn std::error::Error>> {
8    let original_responses_body = json!({
9        "model": "deepseek-v4-pro",
10        "input": [
11            {
12                "type": "message",
13                "role": "user",
14                "content": [
15                    { "type": "input_text", "text": "Call lookup_bridge_fact, then answer." }
16                ]
17            }
18        ],
19        "tools": [{
20            "type": "function",
21            "name": "lookup_bridge_fact",
22            "description": "Look up a bridge fact.",
23            "parameters": {
24                "type": "object",
25                "properties": {
26                    "topic": { "type": "string" }
27                },
28                "required": ["topic"]
29            }
30        }],
31        "tool_choice": "required"
32    });
33
34    let universal = OpenAiResponsesTranslator.decode_request(original_responses_body.clone())?;
35    let mut chat_body = OpenAiChatTranslator.encode_request(&universal)?;
36
37    let mut adapter = ProviderBridgeAdapter::for_provider(
38        "deepseek",
39        WireProtocol::OpenAiChat,
40        ProviderBridgeAdapterConfig {
41            deepseek: DeepSeekBridgeSettings {
42                thinking: true,
43                replay_reasoning_content: true,
44            },
45            ..ProviderBridgeAdapterConfig::default()
46        },
47    );
48    adapter.prepare_chat_request(
49        ProviderRequestSource::OpenAiResponses,
50        &original_responses_body,
51        &mut chat_body,
52    );
53
54    println!("{}", serde_json::to_string_pretty(&chat_body)?);
55    Ok(())
56}
Source

pub fn prepare_anthropic_request( &mut self, source: ProviderRequestSource, request: &mut Value, )

Source

pub fn normalize_chat_response(&mut self, response: &mut Value)

Source

pub fn transform_upstream_events(&mut self, events: &mut Vec<UniversalEvent>)

Trait Implementations§

Source§

impl Clone for ProviderBridgeAdapter

Source§

fn clone(&self) -> ProviderBridgeAdapter

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for ProviderBridgeAdapter

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.