1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
//! LLM (Rust LLM) is a unified interface for interacting with Large Language Model providers.
//!
//! # Overview
//! This crate provides a consistent API for working with different LLM backends by abstracting away
//! provider-specific implementation details. It supports:
//!
//! - Chat-based interactions
//! - Text completion
//! - Embeddings generation
//! - Multiple providers (OpenAI, Anthropic, etc.)
//! - Request validation and retry logic
//!
//! # Architecture
//! The crate is organized into modules that handle different aspects of LLM interactions:
// Re-export for convenience
pub use async_trait;
use ;
use ;
/// Backend implementations for supported LLM providers like OpenAI, Anthropic, etc.
/// Builder pattern for configuring and instantiating LLM providers
/// Chain multiple LLM providers together for complex workflows
/// Chat-based interactions with language models (e.g. ChatGPT style)
/// Text completion capabilities (e.g. GPT-3 style completion)
/// Common constants used across different backends
/// Vector embeddings generation for text
/// Error types and handling
/// Validation wrapper for LLM providers with retry capabilities
/// Evaluator for LLM providers
/// Speech-to-text support
/// Text-to-speech support
/// Server-Sent Events (SSE) parsing utilities
/// Secret store for storing API keys and other sensitive information
/// Listing models support
/// Memory providers for storing and retrieving conversation history
/// Initialize logging using env_logger if the "logging" feature is enabled.
/// This is a no-op if the feature is not enabled.
/// Core trait that all LLM providers must implement, combining chat, completion
/// and embedding capabilities into a unified interface
/// Tool call represents a function call that an LLM wants to make.
/// This is a standardized structure used across all providers.
/// FunctionCall contains details about which function to call and with what arguments.