AI Search API integration for CrewAI - Enable intelligent web search in your crews
Project description
AI Search API for CrewAI - Developer Guide
What is it?
A web search tool that gives your CrewAI agents the ability to search the internet and get intelligent, context-aware responses with source citations.
Installation
pip install crewai-aisearchapi
Quick Start
from crewai import Agent, Task, Crew
from crewai_aisearchapi import AISearchTool
# Create the search tool
search_tool = AISearchTool(api_key='your-api-key')
# Give it to an agent
agent = Agent(
role='Researcher',
goal='Find information on the internet',
tools=[search_tool]
)
# Create a task
task = Task(
description='Search for the latest news about SpaceX',
agent=agent
)
# Run it
crew = Crew(agents=[agent], tasks=[task])
result = crew.kickoff()
Common Use Cases
1. Basic Web Search Agent
from crewai import Agent, Task, Crew
from crewai_aisearchapi import AISearchTool
# Setup
search = AISearchTool(api_key='your-key')
researcher = Agent(
role='Web Researcher',
goal='Search the web for information',
tools=[search]
)
# Search for anything
task = Task(
description='Find the current Bitcoin price and recent news about cryptocurrency',
agent=researcher
)
crew = Crew(agents=[researcher], tasks=[task])
result = crew.kickoff()
print(result)
2. News Monitoring Agent
news_agent = Agent(
role='News Monitor',
goal='Find latest news and updates',
tools=[AISearchTool(api_key='your-key')]
)
def get_latest_news(topic):
task = Task(
description=f'Search for the latest news about {topic} from the last 24 hours',
agent=news_agent
)
crew = Crew(agents=[news_agent], tasks=[task])
return crew.kickoff()
# Get news about any topic
tech_news = get_latest_news("artificial intelligence")
print(tech_news)
3. Fact-Checking Agent
fact_checker = Agent(
role='Fact Checker',
goal='Verify claims by searching for reliable sources',
tools=[AISearchTool(api_key='your-key')]
)
def verify_claim(claim):
task = Task(
description=f'Search the web to verify this claim: "{claim}". Find reliable sources.',
agent=fact_checker
)
crew = Crew(agents=[fact_checker], tasks=[task])
return crew.kickoff()
# Check any claim
result = verify_claim("The Great Wall of China is visible from space")
print(result)
4. Multi-Step Research
search = AISearchTool(api_key='your-key')
agent = Agent(
role='Research Analyst',
goal='Conduct thorough research',
tools=[search]
)
# Create multiple search tasks
tasks = [
Task(
description='Search for information about renewable energy trends in 2024',
agent=agent
),
Task(
description='Find the top 5 solar panel manufacturers by market share',
agent=agent
),
Task(
description='Search for government incentives for solar energy in the United States',
agent=agent
)
]
crew = Crew(agents=[agent], tasks=tasks)
results = crew.kickoff()
5. Question-Answering Bot
from crewai import Agent, Task, Crew
from crewai_aisearchapi import AISearchTool
qa_bot = Agent(
role='Q&A Assistant',
goal='Answer questions using web search',
tools=[AISearchTool(api_key='your-key')]
)
def answer_question(question):
task = Task(
description=f'Search the web and provide a comprehensive answer to: {question}',
agent=qa_bot
)
crew = Crew(agents=[qa_bot], tasks=[task])
return crew.kickoff()
# Ask anything
answer = answer_question("What are the health benefits of green tea?")
print(answer)
Configuration Options
from crewai_aisearchapi import AISearchTool, AISearchToolConfig
# Customize the tool behavior
config = AISearchToolConfig(
default_response_type="markdown", # or "text"
include_sources=True, # Include source URLs
timeout=30, # Request timeout
verbose=True # Show debug info
)
search = AISearchTool(
api_key='your-key',
config=config
)
Using Environment Variables
# Set your API key
export AISEARCHAPI_API_KEY="your-api-key"
# No need to pass API key
search = AISearchTool() # Automatically uses env variable
Handling Responses
The search tool returns responses with:
- Answer: The main search result
- Sources: URLs of sources used
- Response Time: How long the search took
# The tool handles formatting automatically
# Your agents will receive formatted responses like:
"""
The current Bitcoin price is approximately $45,000 USD...
**Sources:**
- [1] https://coinmarketcap.com/...
- [2] https://finance.yahoo.com/...
*Response time: 150ms*
"""
Multiple Agents with Search
from crewai import Agent, Task, Crew, Process
search = AISearchTool(api_key='your-key')
# First agent searches
searcher = Agent(
role='Searcher',
goal='Find information',
tools=[search]
)
# Second agent analyzes
analyzer = Agent(
role='Analyzer',
goal='Analyze search results',
tools=[]
)
# Chain tasks
search_task = Task(
description='Search for information about the latest iPhone',
agent=searcher
)
analyze_task = Task(
description='Analyze the search results and create a summary of key features',
agent=analyzer
)
crew = Crew(
agents=[searcher, analyzer],
tasks=[search_task, analyze_task],
process=Process.sequential
)
result = crew.kickoff()
Error Handling
# The tool handles errors gracefully
search = AISearchTool(api_key='your-key')
# If there's an error (rate limit, bad connection, etc.)
# The tool returns a formatted error message instead of crashing
# Your crew continues running
Check Your Balance
search = AISearchTool(api_key='your-key')
# Check remaining API credits
balance = search.check_balance()
print(f"Credits remaining: {balance['available_credits']}")
Complete Example: Company Research Bot
from crewai import Agent, Task, Crew
from crewai_aisearchapi import AISearchTool
def research_company(company_name):
# Create search tool
search = AISearchTool(api_key='your-key')
# Create agent
researcher = Agent(
role='Company Researcher',
goal='Gather comprehensive information about companies',
tools=[search]
)
# Define what to search for
task = Task(
description=f"""
Search for information about {company_name}:
1. What does the company do?
2. Recent news or announcements
3. Who are the main competitors?
4. Any recent product launches
Provide a comprehensive summary.
""",
agent=researcher
)
# Run the research
crew = Crew(agents=[researcher], tasks=[task])
return crew.kickoff()
# Research any company
result = research_company("OpenAI")
print(result)
Tips for Best Results
- Be specific in task descriptions - The clearer your search task, the better the results
- Use markdown format - Set
response_type="markdown"for better formatted responses - Check your balance - Monitor API credits if running many searches
- Include sources - Keep
include_sources=Truefor credibility
That's it!
Your AI Search API tool is now ready to use with CrewAI. Just:
- Get your API key from aisearchapi.io
- Install the package
- Give the tool to your agents
- Start searching!
# Minimal working example
from crewai import Agent, Task, Crew
from crewai_aisearchapi import AISearchTool
agent = Agent(role='Searcher', tools=[AISearchTool(api_key='your-key')])
task = Task(description='Search for anything', agent=agent)
crew = Crew(agents=[agent], tasks=[task])
result = crew.kickoff()
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file crewai_aisearchapi-1.0.2.tar.gz.
File metadata
- Download URL: crewai_aisearchapi-1.0.2.tar.gz
- Upload date:
- Size: 14.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
26e9c6eefbf554cbd0ad03a72386f24b2500b03ded2777fa91a1e864f71b9fc6
|
|
| MD5 |
31c25aeefe9941d703eaf7842e177e2a
|
|
| BLAKE2b-256 |
374544ad3cc5546bbc86aeeac58cfd14dadbc2cefde936f6879e02c2f08681f8
|
File details
Details for the file crewai_aisearchapi-1.0.2-py3-none-any.whl.
File metadata
- Download URL: crewai_aisearchapi-1.0.2-py3-none-any.whl
- Upload date:
- Size: 14.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
27d8dda367b789fa432fca9647a91271c837e7fe6186de0c33ff80b2bdef65cb
|
|
| MD5 |
093aaf7e64288d1293a85fd6b4554e1e
|
|
| BLAKE2b-256 |
30fd9217538c0eb263f05a5cc4d6a8eca829947118c37c19cd19d6256a34085b
|