@@ -11,7 +11,7 @@ use crate::{
1111 error:: ServerError ,
1212 server:: RustDocsServer , // Import the updated RustDocsServer
1313} ;
14- use async_openai:: Client as OpenAIClient ;
14+ use async_openai:: { Client as OpenAIClient , config :: OpenAIConfig } ;
1515use bincode:: config;
1616use cargo:: core:: PackageIdSpec ;
1717use clap:: Parser ; // Import clap Parser
@@ -182,7 +182,12 @@ async fn main() -> Result<(), ServerError> {
182182 let mut documents_for_server: Vec < Document > = loaded_documents_from_cache. unwrap_or_default ( ) ;
183183
184184 // --- Initialize OpenAI Client (needed for question embedding even if cache hit) ---
185- let openai_client = OpenAIClient :: new ( ) ;
185+ let openai_client = if let Ok ( api_base) = env:: var ( "OPENAI_API_BASE" ) {
186+ let config = OpenAIConfig :: new ( ) . with_api_base ( api_base) ;
187+ OpenAIClient :: with_config ( config)
188+ } else {
189+ OpenAIClient :: new ( )
190+ } ;
186191 OPENAI_CLIENT
187192 . set ( openai_client. clone ( ) ) // Clone the client for the OnceCell
188193 . expect ( "Failed to set OpenAI client" ) ;
@@ -209,12 +214,10 @@ async fn main() -> Result<(), ServerError> {
209214 documents_for_server = loaded_documents. clone ( ) ;
210215
211216 eprintln ! ( "Generating embeddings..." ) ;
212- let ( generated_embeddings, total_tokens) = generate_embeddings (
213- & openai_client,
214- & loaded_documents,
215- "text-embedding-3-small" ,
216- )
217- . await ?;
217+ let embedding_model: String = env:: var ( "EMBEDDING_MODEL" )
218+ . unwrap_or_else ( |_| "text-embedding-3-small" . to_string ( ) ) ;
219+ let ( generated_embeddings, total_tokens) =
220+ generate_embeddings ( & openai_client, & loaded_documents, & embedding_model) . await ?;
218221
219222 let cost_per_million = 0.02 ;
220223 let estimated_cost = ( total_tokens as f64 / 1_000_000.0 ) * cost_per_million;
0 commit comments