# 基于 [tavily-rs](https://github.com/PierreLouisLetoquart/tavily-rs) 进行修改
* 添加多api_key
* 添加重试模式: multi_retry, false: 单个api重试, true: 选择不同api重试
# Tavily2 Rust SDK
Unofficial (for now 🫠) Rust SDK for the
[Tavily Search API](https://tavily.com) - the AI-powered search engine for LLM
applications 🚀
> [!NOTE]
> Requires an API key. You can get one by signing up at
> [Tavily](https://app.tavily.com/home). The API key should be kept secure and
> not shared publicly.
## Installation
```bash
cargo add tavily2
```
## Quick Start
```rust
use std::time::Duration;
use tavily2::{Tavily, SearchRequest, Result};
#[tokio::main]
async fn main() -> Result<()> {
let tavily = Tavily::builder("tvly-your-api-key")
.timeout(Duration::from_secs(60))
.max_retries(5)
.build()?;
// Simple search
let results = tavily.search("Latest AI developments").await?;
// Advanced search with customization
let request = SearchRequest::new("tvly-your-api-key", "Breaking tech news")
.search_depth("advanced")
.topic("news")
.include_answer(true)
.max_results(10);
let results = tavily.call(&request).await?;
// Extract content from URLs
let urls = vec![
"https://tavily.com/",
"https://github.com/PierreLouisLetoquart",
"https://www.google.com/",
];
let results = tavily.extract(urls).await?;
Ok(())
}
```
## Features
- **Simple Search**: Quick search queries with minimal configuration
- **Answer Mode**: Get AI-generated answers along with search results
- **Advanced Customization**: Control search depth, topics, time range, and more
- **Domain Filtering**: Include or exclude specific domains
- **Rich Content**: Optional image results and descriptions
## Documentation
For detailed examples and API documentation, check out:
- [Examples Directory](./examples)
- [API Documentation](https://docs.tavily.com/docs/)
- [Error Codes](https://docs.tavily.com/docs/rest-api/api-reference#error-codes)
## License
[MIT](./LICENSE)