starweaver_model/providers/
client.rs1mod adapter_impl;
4mod factory;
5mod output_schema;
6mod request_options;
7mod wire;
8
9use crate::{
10 profile::ModelProfile,
11 settings::ModelSettings,
12 transport::{
13 DynHttpClient, DynProviderRequestAuditRecorder, DynSleeper, HttpModelConfig,
14 ProviderRequestAuditCapture, ProviderRequestAuditPolicy, TokioSleeper,
15 },
16};
17
18pub struct ProtocolModelClient {
20 provider_name: String,
21 model_name: String,
22 profile: ModelProfile,
23 default_settings: Option<ModelSettings>,
24 http_config: HttpModelConfig,
25 http_client: DynHttpClient,
26 sleeper: DynSleeper,
27 request_audit: Option<ProviderRequestAuditCapture>,
28}
29
30impl ProtocolModelClient {
31 #[must_use]
33 pub fn new(
34 provider_name: impl Into<String>,
35 model_name: impl Into<String>,
36 profile: ModelProfile,
37 http_config: HttpModelConfig,
38 http_client: DynHttpClient,
39 ) -> Self {
40 Self {
41 provider_name: provider_name.into(),
42 model_name: model_name.into(),
43 profile,
44 default_settings: None,
45 http_config,
46 http_client,
47 sleeper: std::sync::Arc::new(TokioSleeper),
48 request_audit: None,
49 }
50 }
51
52 #[must_use]
54 pub fn with_default_settings(mut self, settings: ModelSettings) -> Self {
55 self.default_settings = Some(settings);
56 self
57 }
58
59 #[must_use]
61 pub fn with_profile(mut self, profile: ModelProfile) -> Self {
62 self.profile = profile;
63 self
64 }
65
66 #[must_use]
68 pub fn with_sleeper(mut self, sleeper: DynSleeper) -> Self {
69 self.sleeper = sleeper;
70 self
71 }
72
73 #[must_use]
75 pub fn with_provider_request_audit(
76 mut self,
77 recorder: DynProviderRequestAuditRecorder,
78 policy: ProviderRequestAuditPolicy,
79 ) -> Self {
80 self.request_audit = Some(ProviderRequestAuditCapture::new(recorder, policy));
81 self
82 }
83}