Expand description
§Spider Agent
A concurrent-safe multimodal agent for web automation and research.
§Features
- Concurrent-safe: Designed to be wrapped in
Arcfor multi-task access - Feature-gated: Only include dependencies you need
- Multiple LLM providers: OpenAI, OpenAI-compatible APIs
- Multiple search providers: Serper, Brave, Bing, Tavily
- Browser automation: Chrome support via chromiumoxide
§Quick Start
ⓘ
use spider_agent::{Agent, AgentConfig};
use std::sync::Arc;
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let agent = Arc::new(Agent::builder()
.with_openai("sk-...", "gpt-4o-mini")
.with_search_serper("serper-key")
.build()?);
// Search
let results = agent.search("rust web frameworks").await?;
println!("Found {} results", results.len());
// Extract from first result
let html = agent.fetch(&results.results[0].url).await?.html;
let data = agent.extract(&html, "Extract framework name and features").await?;
println!("{}", serde_json::to_string_pretty(&data)?);
Ok(())
}§Concurrent Execution
ⓘ
use spider_agent::Agent;
use std::sync::Arc;
let agent = Arc::new(Agent::builder()
.with_openai("sk-...", "gpt-4o")
.with_search_serper("serper-key")
.with_max_concurrent_llm_calls(10)
.build()?);
// Execute multiple searches concurrently
let queries = vec!["rust async", "rust web frameworks", "rust databases"];
let mut handles = Vec::new();
for query in queries {
let agent = agent.clone();
let query = query.to_string();
handles.push(tokio::spawn(async move {
agent.search(&query).await
}));
}
// Collect results
for handle in handles {
let result = handle.await??;
println!("Found {} results", result.results.len());
}§Feature Flags
openai- OpenAI/OpenAI-compatible LLM providerchrome- Browser automation via chromiumoxidesearch- Base search functionalitysearch_serper- Serper.dev search providersearch_brave- Brave Search providersearch_bing- Bing Search providersearch_tavily- Tavily AI Search providerfull- All features
Re-exports§
pub use tools::AuthConfig;pub use tools::CustomTool;pub use tools::CustomToolRegistry;pub use tools::CustomToolResult;pub use tools::HttpMethod;pub use automation::ActionRecord;pub use automation::ActionResult;pub use automation::ActionType;pub use automation::ActResult;pub use automation::AutomationConfig;pub use automation::AutomationResult;pub use automation::AutomationUsage;pub use automation::CaptureProfile;pub use automation::ChainBuilder;pub use automation::ChainCondition;pub use automation::ChainContext;pub use automation::ChainResult;pub use automation::ChainStep;pub use automation::ChainStepResult;pub use automation::CleaningIntent;pub use automation::ClipViewport;pub use automation::ContentAnalysis;pub use automation::CostTier;pub use automation::ExtractionSchema;pub use automation::FormField;pub use automation::FormInfo;pub use automation::HtmlCleaningProfile;pub use automation::InteractiveElement;pub use automation::ModelEndpoint;pub use automation::ModelPolicy;pub use automation::PageObservation;pub use automation::PromptUrlGate;pub use automation::RecoveryStrategy;pub use automation::RetryPolicy;pub use automation::SelectorCache;pub use automation::SelectorCacheEntry;pub use automation::StructuredOutputConfig;pub use automation::VisionRouteMode;pub use automation::RemoteMultimodalConfig;pub use automation::RemoteMultimodalConfigs;pub use automation::RemoteMultimodalEngine;pub use automation::EngineError;pub use automation::EngineResult;pub use automation::best_effort_parse_json_object;pub use automation::extract_assistant_content;pub use automation::extract_last_code_block;pub use automation::extract_last_json_array;pub use automation::extract_last_json_boundaries;pub use automation::extract_last_json_object;pub use automation::extract_usage;pub use automation::fnv1a64;pub use automation::truncate_utf8_tail;pub use automation::clean_html;pub use automation::clean_html_base;pub use automation::clean_html_full;pub use automation::clean_html_raw;pub use automation::clean_html_slim;pub use automation::clean_html_with_profile;pub use automation::clean_html_with_profile_and_intent;pub use automation::smart_clean_html;pub use automation::categories;pub use automation::DiscoveredUrl;pub use automation::MapResult;pub use automation::AutomationMemory;pub use automation::MemoryOperation;pub use automation::ACT_SYSTEM_PROMPT;pub use automation::CONFIGURATION_SYSTEM_PROMPT;pub use automation::DEFAULT_SYSTEM_PROMPT;pub use automation::EXTRACT_SYSTEM_PROMPT;pub use automation::MAP_SYSTEM_PROMPT;pub use automation::OBSERVE_SYSTEM_PROMPT;pub use automation::ConcurrentChainConfig;pub use automation::ConcurrentChainResult;pub use automation::DependencyGraph;pub use automation::DependentStep;pub use automation::StepResult;pub use automation::Alternative;pub use automation::ConfidenceRetryStrategy;pub use automation::ConfidenceSummary;pub use automation::ConfidenceTracker;pub use automation::ConfidentStep;pub use automation::Verification;pub use automation::VerificationType;pub use automation::ActionToolSchemas;pub use automation::FunctionCall;pub use automation::FunctionDefinition;pub use automation::ToolCall;pub use automation::ToolCallingMode;pub use automation::ToolDefinition;pub use automation::ChangeType;pub use automation::DiffStats;pub use automation::ElementChange;pub use automation::HtmlDiffMode;pub use automation::HtmlDiffResult;pub use automation::PageStateDiff;pub use automation::Checkpoint;pub use automation::CheckpointResult;pub use automation::CheckpointType;pub use automation::ExecutionPlan;pub use automation::PageState;pub use automation::PlanExecutionState;pub use automation::PlanningModeConfig;pub use automation::PlannedStep;pub use automation::ReplanContext;pub use automation::HealedSelectorCache;pub use automation::HealingDiagnosis;pub use automation::HealingRequest;pub use automation::HealingResult;pub use automation::HealingStats;pub use automation::SelectorIssueType;pub use automation::SelfHealingConfig;pub use automation::MultiPageContext;pub use automation::PageContext;pub use automation::PageContribution;pub use automation::SynthesisConfig;pub use automation::SynthesisResult;pub use automation::build_schema_generation_prompt;pub use automation::generate_schema;pub use automation::infer_schema;pub use automation::infer_schema_from_examples;pub use automation::refine_schema;pub use automation::GeneratedSchema;pub use automation::SchemaCache;pub use automation::SchemaGenerationRequest;pub use automation::extract_html_context;pub use automation::parse_tool_calls;pub use automation::tool_calls_to_steps;pub use automation::execute_graph;pub use automation::cache::CacheStats;pub use automation::cache::CacheValue;pub use automation::cache::SmartCache;pub use automation::executor::BatchExecutor;pub use automation::executor::ChainExecutor;pub use automation::executor::PrefetchManager;pub use automation::router::ModelRouter;pub use automation::router::RoutingDecision;pub use automation::router::TaskAnalysis;pub use automation::router::TaskCategory;
Modules§
- automation
- Automation module for spider_agent.
- tools
- Custom tool support for external API calls.
Structs§
- Agent
- Multimodal agent for web automation and research.
- Agent
Builder - Agent builder for configuring and creating agents.
- Agent
Config - Agent configuration.
- Agent
Memory - Session memory for storing state across operations.
- Completion
Options - Options for completion requests.
- Completion
Response - Response from a completion request.
- Fetch
Result - Result from fetching a URL.
- Message
- A message in a conversation.
- Page
Extraction - Extraction from a single page.
- Research
Options - Research options for research tasks.
- Retry
Config - Retry configuration.
- Search
Options - Search options for web search.
- Token
Usage - Token usage from a completion.
- Usage
Limits - Usage limits for controlling agent resource consumption.
- Usage
Snapshot - Snapshot of usage statistics.
- Usage
Stats - Usage statistics for tracking agent operations.
Enums§
- Agent
Error - Agent error types.
- Html
Cleaning Mode - HTML cleaning mode.
- Limit
Type - Type of limit that was exceeded.
- Message
Content - Message content - either text or multi-part.
- Search
Error - Search-specific error types.
- Time
Range - Time range for filtering search results.
Traits§
- LLMProvider
- LLM provider trait for abstracting different LLM APIs.
Type Aliases§
- Agent
Result - Result type for agent operations.