pub struct OpenAI {
pub enable_web_search: bool,
pub web_search_context_size: Option<String>,
pub web_search_user_location_type: Option<String>,
pub web_search_user_location_approximate_country: Option<String>,
pub web_search_user_location_approximate_city: Option<String>,
pub web_search_user_location_approximate_region: Option<String>,
/* private fields */
}Expand description
Client for OpenAI API
Fields§
§enable_web_search: bool§web_search_context_size: Option<String>§web_search_user_location_type: Option<String>§web_search_user_location_approximate_country: Option<String>§web_search_user_location_approximate_city: Option<String>§web_search_user_location_approximate_region: Option<String>Implementations§
Source§impl OpenAI
impl OpenAI
Sourcepub fn new(
api_key: impl Into<String>,
base_url: Option<String>,
model: Option<String>,
max_tokens: Option<u32>,
temperature: Option<f32>,
timeout_seconds: Option<u64>,
system: Option<String>,
top_p: Option<f32>,
top_k: Option<u32>,
embedding_encoding_format: Option<String>,
embedding_dimensions: Option<u32>,
tools: Option<Vec<Tool>>,
tool_choice: Option<ToolChoice>,
reasoning_effort: Option<String>,
json_schema: Option<StructuredOutputFormat>,
voice: Option<String>,
enable_web_search: Option<bool>,
web_search_context_size: Option<String>,
web_search_user_location_type: Option<String>,
web_search_user_location_approximate_country: Option<String>,
web_search_user_location_approximate_city: Option<String>,
web_search_user_location_approximate_region: Option<String>,
) -> Result<Self, LLMError>
pub fn new( api_key: impl Into<String>, base_url: Option<String>, model: Option<String>, max_tokens: Option<u32>, temperature: Option<f32>, timeout_seconds: Option<u64>, system: Option<String>, top_p: Option<f32>, top_k: Option<u32>, embedding_encoding_format: Option<String>, embedding_dimensions: Option<u32>, tools: Option<Vec<Tool>>, tool_choice: Option<ToolChoice>, reasoning_effort: Option<String>, json_schema: Option<StructuredOutputFormat>, voice: Option<String>, enable_web_search: Option<bool>, web_search_context_size: Option<String>, web_search_user_location_type: Option<String>, web_search_user_location_approximate_country: Option<String>, web_search_user_location_approximate_city: Option<String>, web_search_user_location_approximate_region: Option<String>, ) -> Result<Self, LLMError>
Creates a new OpenAI client with the specified configuration.
§Arguments
api_key- OpenAI API keymodel- Model to use (defaults to “gpt-3.5-turbo”)max_tokens- Maximum tokens to generatetemperature- Sampling temperaturetimeout_seconds- Request timeout in secondssystem- System promptstream- Whether to stream responsestop_p- Top-p sampling parametertop_k- Top-k sampling parameterembedding_encoding_format- Format for embedding outputsembedding_dimensions- Dimensions for embedding vectorstools- Function tools that the model can usetool_choice- Determines how the model uses toolsreasoning_effort- Reasoning effort leveljson_schema- JSON schema for structured output
Source§impl OpenAI
impl OpenAI
pub fn api_key(&self) -> &str
pub fn model(&self) -> &str
pub fn base_url(&self) -> &Url
pub fn timeout_seconds(&self) -> Option<u64>
pub fn client(&self) -> &Client
pub fn tools(&self) -> Option<&[Tool]>
Sourcepub async fn chat_with_hosted_tools(
&self,
input: String,
hosted_tools: Vec<OpenAITool>,
) -> Result<Box<dyn ChatResponse>, LLMError>
pub async fn chat_with_hosted_tools( &self, input: String, hosted_tools: Vec<OpenAITool>, ) -> Result<Box<dyn ChatResponse>, LLMError>
Trait Implementations§
Source§impl ChatProvider for OpenAI
impl ChatProvider for OpenAI
Source§fn chat_with_tools<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
messages: &'life1 [ChatMessage],
tools: Option<&'life2 [Tool]>,
) -> Pin<Box<dyn Future<Output = Result<Box<dyn ChatResponse>, LLMError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
fn chat_with_tools<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
messages: &'life1 [ChatMessage],
tools: Option<&'life2 [Tool]>,
) -> Pin<Box<dyn Future<Output = Result<Box<dyn ChatResponse>, LLMError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
Chat with tool calls enabled
Source§fn chat_stream<'life0, 'life1, 'async_trait>(
&'life0 self,
messages: &'life1 [ChatMessage],
) -> Pin<Box<dyn Future<Output = Result<Pin<Box<dyn Stream<Item = Result<String, LLMError>> + Send>>, LLMError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn chat_stream<'life0, 'life1, 'async_trait>(
&'life0 self,
messages: &'life1 [ChatMessage],
) -> Pin<Box<dyn Future<Output = Result<Pin<Box<dyn Stream<Item = Result<String, LLMError>> + Send>>, LLMError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Stream chat responses as a stream of strings
Source§fn chat_stream_struct<'life0, 'life1, 'async_trait>(
&'life0 self,
messages: &'life1 [ChatMessage],
) -> Pin<Box<dyn Future<Output = Result<Pin<Box<dyn Stream<Item = Result<StreamResponse, LLMError>> + Send>>, LLMError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn chat_stream_struct<'life0, 'life1, 'async_trait>(
&'life0 self,
messages: &'life1 [ChatMessage],
) -> Pin<Box<dyn Future<Output = Result<Pin<Box<dyn Stream<Item = Result<StreamResponse, LLMError>> + Send>>, LLMError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Stream chat responses as ChatMessage structured objects, including usage information
Source§fn chat_with_web_search<'life0, 'async_trait>(
&'life0 self,
input: String,
) -> Pin<Box<dyn Future<Output = Result<Box<dyn ChatResponse>, LLMError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn chat_with_web_search<'life0, 'async_trait>(
&'life0 self,
input: String,
) -> Pin<Box<dyn Future<Output = Result<Box<dyn ChatResponse>, LLMError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Sends a chat with web search request to the provider Read more
Source§fn chat<'life0, 'life1, 'async_trait>(
&'life0 self,
messages: &'life1 [ChatMessage],
) -> Pin<Box<dyn Future<Output = Result<Box<dyn ChatResponse>, LLMError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn chat<'life0, 'life1, 'async_trait>(
&'life0 self,
messages: &'life1 [ChatMessage],
) -> Pin<Box<dyn Future<Output = Result<Box<dyn ChatResponse>, LLMError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Sends a chat request to the provider with a sequence of messages. Read more
Source§fn memory_contents<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Option<Vec<ChatMessage>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn memory_contents<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Option<Vec<ChatMessage>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Get current memory contents if provider supports memory
Source§fn summarize_history<'life0, 'life1, 'async_trait>(
&'life0 self,
msgs: &'life1 [ChatMessage],
) -> Pin<Box<dyn Future<Output = Result<String, LLMError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn summarize_history<'life0, 'life1, 'async_trait>(
&'life0 self,
msgs: &'life1 [ChatMessage],
) -> Pin<Box<dyn Future<Output = Result<String, LLMError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Summarizes a conversation history into a concise 2-3 sentence summary Read more
Source§impl CompletionProvider for OpenAI
impl CompletionProvider for OpenAI
Source§fn complete<'life0, 'life1, 'async_trait>(
&'life0 self,
_req: &'life1 CompletionRequest,
) -> Pin<Box<dyn Future<Output = Result<CompletionResponse, LLMError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn complete<'life0, 'life1, 'async_trait>(
&'life0 self,
_req: &'life1 CompletionRequest,
) -> Pin<Box<dyn Future<Output = Result<CompletionResponse, LLMError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Sends a completion request to generate text. Read more
Source§impl EmbeddingProvider for OpenAI
impl EmbeddingProvider for OpenAI
Source§impl ModelsProvider for OpenAI
impl ModelsProvider for OpenAI
Source§fn list_models<'life0, 'life1, 'async_trait>(
&'life0 self,
_request: Option<&'life1 ModelListRequest>,
) -> Pin<Box<dyn Future<Output = Result<Box<dyn ModelListResponse>, LLMError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn list_models<'life0, 'life1, 'async_trait>(
&'life0 self,
_request: Option<&'life1 ModelListRequest>,
) -> Pin<Box<dyn Future<Output = Result<Box<dyn ModelListResponse>, LLMError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Asynchronously retrieves the list of available models ID’s from the provider. Read more
Source§impl SpeechToTextProvider for OpenAI
impl SpeechToTextProvider for OpenAI
Source§fn transcribe<'life0, 'async_trait>(
&'life0 self,
_audio: Vec<u8>,
) -> Pin<Box<dyn Future<Output = Result<String, LLMError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn transcribe<'life0, 'async_trait>(
&'life0 self,
_audio: Vec<u8>,
) -> Pin<Box<dyn Future<Output = Result<String, LLMError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Transcribe the given audio bytes into text Read more
fn transcribe_file<'life0, 'life1, 'async_trait>(
&'life0 self,
file_path: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<String, LLMError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Source§impl TextToSpeechProvider for OpenAI
impl TextToSpeechProvider for OpenAI
Auto Trait Implementations§
impl Freeze for OpenAI
impl !RefUnwindSafe for OpenAI
impl Send for OpenAI
impl Sync for OpenAI
impl Unpin for OpenAI
impl !UnwindSafe for OpenAI
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more