mirror of
https://github.com/crewAIInc/crewAI.git
synced 2026-01-08 23:58:34 +00:00
- Added documentation for file operation tools - Added documentation for search tools - Added documentation for web scraping tools - Added documentation for specialized tools (RAG, code interpreter) - Added documentation for API-based tools (SerpApi, Serply) Link to Devin run: https://app.devin.ai/sessions/d2f72a2dfb214659aeb3e9f67ed961f7 Co-Authored-By: Joe Moura <joao@crewai.com>
210 lines
4.9 KiB
Plaintext
210 lines
4.9 KiB
Plaintext
---
|
|
title: SerplyScholarSearchTool
|
|
description: A scholarly literature search tool powered by Serply API with configurable search parameters
|
|
icon: book
|
|
---
|
|
|
|
## SerplyScholarSearchTool
|
|
|
|
The SerplyScholarSearchTool provides scholarly literature search capabilities using the Serply API. It allows for customizable search parameters including language and proxy location for region-specific academic results.
|
|
|
|
## Installation
|
|
|
|
```bash
|
|
pip install 'crewai[tools]'
|
|
```
|
|
|
|
## Usage Example
|
|
|
|
```python
|
|
from crewai import Agent
|
|
from crewai_tools import SerplyScholarSearchTool
|
|
|
|
# Set environment variable
|
|
# export SERPLY_API_KEY='your-api-key'
|
|
|
|
# Basic initialization
|
|
scholar_tool = SerplyScholarSearchTool()
|
|
|
|
# Advanced initialization with custom parameters
|
|
scholar_tool = SerplyScholarSearchTool(
|
|
hl="fr", # French language results
|
|
proxy_location="FR" # Search from France
|
|
)
|
|
|
|
# Create an agent with the tool
|
|
academic_researcher = Agent(
|
|
role='Academic Researcher',
|
|
goal='Find relevant scholarly literature',
|
|
backstory='Expert at academic research and literature review.',
|
|
tools=[scholar_tool],
|
|
verbose=True
|
|
)
|
|
```
|
|
|
|
## Input Schema
|
|
|
|
```python
|
|
class SerplyScholarSearchToolSchema(BaseModel):
|
|
search_query: str = Field(
|
|
description="Mandatory search query for fetching scholarly literature"
|
|
)
|
|
```
|
|
|
|
## Function Signature
|
|
|
|
```python
|
|
def __init__(
|
|
self,
|
|
hl: str = "us",
|
|
proxy_location: Optional[str] = "US",
|
|
**kwargs
|
|
):
|
|
"""
|
|
Initialize the scholar search tool.
|
|
|
|
Args:
|
|
hl (str): Host language code for results (default: "us")
|
|
Reference: https://developers.google.com/custom-search/docs/xml_results?hl=en#wsInterfaceLanguages
|
|
proxy_location (str): Region for local results (default: "US")
|
|
Options: US, CA, IE, GB, FR, DE, SE, IN, JP, KR, SG, AU, BR
|
|
**kwargs: Additional arguments for tool creation
|
|
"""
|
|
|
|
def _run(
|
|
self,
|
|
**kwargs: Any
|
|
) -> str:
|
|
"""
|
|
Perform scholarly literature search using Serply API.
|
|
|
|
Args:
|
|
search_query (str): Academic search query
|
|
|
|
Returns:
|
|
str: Formatted string containing scholarly results:
|
|
- Title
|
|
- Link
|
|
- Description
|
|
- Citation
|
|
- Authors
|
|
"""
|
|
```
|
|
|
|
## Best Practices
|
|
|
|
1. Set up API authentication:
|
|
```bash
|
|
export SERPLY_API_KEY='your-serply-api-key'
|
|
```
|
|
|
|
2. Configure search parameters appropriately:
|
|
- Use relevant language codes
|
|
- Select appropriate proxy location
|
|
- Provide specific academic search terms
|
|
|
|
3. Handle potential API errors
|
|
4. Process structured results effectively
|
|
5. Consider rate limits and quotas
|
|
|
|
## Integration Example
|
|
|
|
```python
|
|
from crewai import Agent, Task, Crew
|
|
from crewai_tools import SerplyScholarSearchTool
|
|
|
|
# Initialize tool with custom configuration
|
|
scholar_tool = SerplyScholarSearchTool(
|
|
hl="en", # English results
|
|
proxy_location="US" # US academic sources
|
|
)
|
|
|
|
# Create agent
|
|
researcher = Agent(
|
|
role='Academic Researcher',
|
|
goal='Research recent academic publications',
|
|
backstory='Expert at analyzing academic literature and research trends.',
|
|
tools=[scholar_tool]
|
|
)
|
|
|
|
# Define task
|
|
research_task = Task(
|
|
description="""Research recent academic publications on
|
|
machine learning applications in healthcare, focusing on
|
|
peer-reviewed articles from the last two years.""",
|
|
agent=researcher
|
|
)
|
|
|
|
# The tool will use:
|
|
# {
|
|
# "search_query": "machine learning healthcare applications"
|
|
# }
|
|
|
|
# Create crew
|
|
crew = Crew(
|
|
agents=[researcher],
|
|
tasks=[research_task]
|
|
)
|
|
|
|
# Execute
|
|
result = crew.kickoff()
|
|
```
|
|
|
|
## Advanced Usage
|
|
|
|
### Language and Region Configuration
|
|
```python
|
|
# French academic sources
|
|
fr_scholar = SerplyScholarSearchTool(
|
|
hl="fr",
|
|
proxy_location="FR"
|
|
)
|
|
|
|
# German academic sources
|
|
de_scholar = SerplyScholarSearchTool(
|
|
hl="de",
|
|
proxy_location="DE"
|
|
)
|
|
```
|
|
|
|
### Result Processing
|
|
```python
|
|
try:
|
|
results = scholar_tool._run(
|
|
search_query="machine learning healthcare applications"
|
|
)
|
|
print(results)
|
|
except Exception as e:
|
|
print(f"Scholar search error: {str(e)}")
|
|
```
|
|
|
|
### Citation Analysis
|
|
```python
|
|
# Extract and analyze citations
|
|
def analyze_citations(results):
|
|
citations = []
|
|
for result in results.split("---"):
|
|
if "Cite:" in result:
|
|
citation = result.split("Cite:")[1].split("\n")[0].strip()
|
|
citations.append(citation)
|
|
return citations
|
|
|
|
results = scholar_tool._run(
|
|
search_query="artificial intelligence ethics"
|
|
)
|
|
citations = analyze_citations(results)
|
|
```
|
|
|
|
## Notes
|
|
|
|
- Requires valid Serply API key
|
|
- Supports multiple languages and regions
|
|
- Returns structured academic article data
|
|
- Includes citation information
|
|
- Lists all authors of publications
|
|
- Thread-safe operations
|
|
- Efficient scholarly search capabilities
|
|
- Handles API rate limiting automatically
|
|
- Supports both direct and document links
|
|
- Provides comprehensive article metadata
|