pub struct AnthropicClient {
api_key: Option<SecretString>,
endpoint: String,
model: String,
client: Client,
}Expand description
Anthropic Claude LLM client.
API keys are stored using SecretString which zeroizes memory on drop,
preventing sensitive credentials from lingering in memory after use.
Fields§
§api_key: Option<SecretString>API key (zeroized on drop for security).
endpoint: StringAPI endpoint.
model: StringModel to use.
client: ClientHTTP client.
Implementations§
Source§impl AnthropicClient
impl AnthropicClient
Sourcepub const DEFAULT_ENDPOINT: &'static str = "https://api.anthropic.com/v1"
pub const DEFAULT_ENDPOINT: &'static str = "https://api.anthropic.com/v1"
Default API endpoint.
Sourcepub const DEFAULT_MODEL: &'static str = "claude-3-haiku-20240307"
pub const DEFAULT_MODEL: &'static str = "claude-3-haiku-20240307"
Default model.
Sourcepub fn with_api_key(self, key: impl Into<String>) -> Self
pub fn with_api_key(self, key: impl Into<String>) -> Self
Sets the API key.
Sourcepub fn with_endpoint(self, endpoint: impl Into<String>) -> Self
pub fn with_endpoint(self, endpoint: impl Into<String>) -> Self
Sets the API endpoint.
Sourcepub fn with_model(self, model: impl Into<String>) -> Self
pub fn with_model(self, model: impl Into<String>) -> Self
Sets the model.
Sourcepub fn with_http_config(self, config: LlmHttpConfig) -> Self
pub fn with_http_config(self, config: LlmHttpConfig) -> Self
Sets HTTP client timeouts for LLM requests.
Sourcefn validate(&self) -> Result<()>
fn validate(&self) -> Result<()>
Validates that the client is configured with a valid API key (SEC-M1).
Anthropic API keys follow the format: sk-ant-api03-... (variable length).
This validation ensures early rejection of obviously invalid keys.
Sourcefn is_valid_api_key_format(key: &str) -> bool
fn is_valid_api_key_format(key: &str) -> bool
Checks if an API key has a valid format (SEC-M1).
Valid Anthropic keys:
- Start with
sk-ant-prefix - Are at least 40 characters (typical keys are 100+ chars)
- Contain only alphanumeric characters, hyphens, and underscores
This validation catches obviously malformed keys early, before making network requests that would fail with 401 errors.
Trait Implementations§
Source§impl Default for AnthropicClient
impl Default for AnthropicClient
Source§impl LlmProvider for AnthropicClient
impl LlmProvider for AnthropicClient
Source§fn complete(&self, prompt: &str) -> Result<String>
fn complete(&self, prompt: &str) -> Result<String>
Source§fn analyze_for_capture(&self, content: &str) -> Result<CaptureAnalysis>
fn analyze_for_capture(&self, content: &str) -> Result<CaptureAnalysis>
Source§fn complete_with_system(&self, system: &str, user: &str) -> Result<String>
fn complete_with_system(&self, system: &str, user: &str) -> Result<String>
Source§fn analyze_for_capture_extended(
&self,
content: &str,
existing_memories: Option<&str>,
) -> Result<ExtendedCaptureAnalysis>
fn analyze_for_capture_extended( &self, content: &str, existing_memories: Option<&str>, ) -> Result<ExtendedCaptureAnalysis>
Source§fn classify_search_intent(&self, prompt: &str) -> Result<ExtendedSearchIntent>
fn classify_search_intent(&self, prompt: &str) -> Result<ExtendedSearchIntent>
Source§fn analyze_for_consolidation(
&self,
memories: &str,
) -> Result<ConsolidationAnalysis>
fn analyze_for_consolidation( &self, memories: &str, ) -> Result<ConsolidationAnalysis>
Auto Trait Implementations§
impl Freeze for AnthropicClient
impl !RefUnwindSafe for AnthropicClient
impl Send for AnthropicClient
impl Sync for AnthropicClient
impl Unpin for AnthropicClient
impl !UnwindSafe for AnthropicClient
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
§impl<T> FutureExt for T
impl<T> FutureExt for T
§fn with_context(self, otel_cx: Context) -> WithContext<Self>
fn with_context(self, otel_cx: Context) -> WithContext<Self>
§fn with_current_context(self) -> WithContext<Self>
fn with_current_context(self) -> WithContext<Self>
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§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>
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>
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§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T in a tonic::Request§impl<L> LayerExt<L> for L
impl<L> LayerExt<L> for L
§fn named_layer<S>(&self, service: S) -> Layered<<L as Layer<S>>::Service, S>where
L: Layer<S>,
fn named_layer<S>(&self, service: S) -> Layered<<L as Layer<S>>::Service, S>where
L: Layer<S>,
Layered].