Compare commits

...
3 Commits
Author SHA1 Message Date
Mervin Praison 57040333a7 Merge pull request #275 from MervinPraison/develop
Develop
2025-01-07 18:19:17 +00:00
MervinPraison 8c6800f876 adding langchain with uv 2025-01-07 18:18:46 +00:00
MervinPraison 0d701ae43c adding langchain 2025-01-07 14:15:32 +00:00
34 changed files with 569 additions and 37805 deletions

No files matched your search

+1 -1
View File
@@ -1,6 +1,6 @@
FROM python:3.11-slim
WORKDIR /app
COPY . .
RUN pip install flask praisonai==2.0.35 gunicorn markdown
RUN pip install flask praisonai==2.0.36 gunicorn markdown
EXPOSE 8080
CMD ["gunicorn", "-b", "0.0.0.0:8080", "api:app"]
+6
View File
@@ -0,0 +1,6 @@
Make it minimal change as possible
Firstly try not to make any modification to the existing code as possible
Only if its highly required, without that if it can't be done, then modify the existing.
So by default try to add new code section and not modify the existing.
-74
View File
@@ -1,74 +0,0 @@
from praisonaiagents import Agent, Task, PraisonAIAgents
from typing import List, Dict
from duckduckgo_search import DDGS
# 1. Tool
def internet_search_tool(query: str) -> List[Dict]:
"""
Perform a search using DuckDuckGo.
Args:
query (str): The search query.
Returns:
list: A list of search result titles, URLs, and snippets.
"""
try:
results = []
ddgs = DDGS()
for result in ddgs.text(keywords=query, max_results=10):
results.append({
"title": result.get("title", ""),
"url": result.get("href", ""),
"snippet": result.get("body", "")
})
return results
except Exception as e:
print(f"Error during DuckDuckGo search: {e}")
return []
# 2. Agent
data_agent = Agent(
name="DataCollector",
role="Search Specialist",
goal="Perform internet searches to collect relevant information.",
backstory="Expert in finding and organising internet data.",
tools=[internet_search_tool],
self_reflect=False
)
# 3. Tasks
collect_task = Task(
description="Perform an internet search using the query: 'AI job trends in 2024'. Return results as a list of title, URL, and snippet.",
expected_output="List of search results with titles, URLs, and snippets.",
agent=data_agent,
name="collect_data",
is_start=True,
next_tasks=["validate_data"]
)
validate_task = Task(
description="""Validate the collected data. Check if:
1. At least 5 results are returned.
2. Each result contains a title and a URL.
Return validation_result as 'valid' or 'invalid' only no other text.""",
expected_output="Validation result indicating if data is valid or invalid.",
agent=data_agent,
name="validate_data",
task_type="decision",
condition={
"valid": [], # End the workflow on valid data
"invalid": ["collect_data"] # Retry data collection on invalid data
},
)
# 4. Workflow
agents = PraisonAIAgents(
agents=[data_agent],
tasks=[collect_task, validate_task],
verbose=1,
process="workflow"
)
agents.start()
+151
View File
@@ -0,0 +1,151 @@
from praisonaiagents import Agent, Task, PraisonAIAgents
from typing import List, Dict, Union
from duckduckgo_search import DDGS
from langchain_community.tools import YouTubeSearchTool
from langchain_community.utilities import WikipediaAPIWrapper
# 1. Tool
def internet_search_tool(query: str) -> List[Dict]:
"""
Perform a search using DuckDuckGo.
Args:
query (str): The search query.
Returns:
list: A list of search result titles, URLs, and snippets.
"""
try:
results = []
ddgs = DDGS()
for result in ddgs.text(keywords=query, max_results=10):
results.append({
"title": result.get("title", ""),
"url": result.get("href", ""),
"snippet": result.get("body", "")
})
return results
except Exception as e:
print(f"Error during DuckDuckGo search: {e}")
return []
def youtube_search_tool(query: str, inspect: bool = False, max_results: int = 2):
"""
Provide a custom wrapper around the YouTubeSearchTool.
Args:
query (str): The search query for YouTube.
inspect (bool): If True, returns tool inspection info instead of search results.
max_results (int): Maximum number of results to return (default: 2).
Returns:
Union[List[str], dict]: List of YouTube video URLs or tool inspection info.
"""
yt = YouTubeSearchTool()
if inspect:
inspection_info = {
"type": type(yt),
"attributes": [attr for attr in dir(yt) if not attr.startswith('_')],
"methods": {
"run": getattr(yt, 'run', None),
"arun": getattr(yt, 'arun', None)
},
"properties": {
"name": getattr(yt, 'name', 'youtube_search'),
"description": getattr(yt, 'description', 'Search YouTube videos'),
"return_direct": getattr(yt, 'return_direct', False)
}
}
return inspection_info
# Format query with max_results
formatted_query = f"{query}, {max_results}"
return yt.run(formatted_query)
def wikipedia_search_tool(query: str, inspect: bool = False, max_chars: int = 4000, top_k: int = 3):
"""
Provide a custom wrapper around langchain_community's WikipediaAPIWrapper.
Args:
query (str): A search query for Wikipedia.
inspect (bool): If True, returns tool inspection info instead of search results.
max_chars (int): Maximum characters to return (default: 4000).
top_k (int): Number of top results to consider (default: 3).
Returns:
Union[str, dict]: Summary from Wikipedia or tool inspection info if inspect=True.
"""
w = WikipediaAPIWrapper(
top_k_results=top_k,
doc_content_chars_max=max_chars,
lang='en'
)
if inspect:
inspection_info = {
"type": type(w),
"attributes": [attr for attr in dir(w) if not attr.startswith('_')],
"methods": {
"run": getattr(w, 'run', None),
"arun": getattr(w, 'arun', None)
},
"properties": {
"name": "wikipedia",
"description": "Search and get summaries from Wikipedia",
"top_k": w.top_k_results,
"lang": w.lang,
"max_chars": w.doc_content_chars_max
}
}
return inspection_info
try:
result = w.run(query)
return result
except Exception as e:
return f"Error searching Wikipedia: {str(e)}"
# 2. Agent
data_agent = Agent(
name="DataCollector",
role="Search Specialist",
goal="Perform internet searches to collect relevant information.",
backstory="Expert in finding and organizing internet data from multiple sources.",
tools=[internet_search_tool, youtube_search_tool, wikipedia_search_tool],
self_reflect=False
)
# 3. Tasks
collect_task = Task(
description="Perform an internet search using the query: 'AI job trends in 2024'. Return results as a list of title, URL, and snippet.",
expected_output="List of search results with titles, URLs, and snippets.",
agent=data_agent,
name="collect_data",
is_start=True,
next_tasks=["validate_data"]
)
validate_task = Task(
description="""Validate the collected data. Check if:
1. At least 5 results are returned.
2. Each result contains a title and a URL.
Return validation_result as 'valid' or 'invalid' only no other text.""",
expected_output="Validation result indicating if data is valid or invalid.",
agent=data_agent,
name="validate_data",
task_type="decision",
condition={
"valid": [], # End the workflow on valid data
"invalid": ["collect_data"] # Retry data collection on invalid data
},
)
# 4. Workflow
agents = PraisonAIAgents(
agents=[data_agent],
tasks=[collect_task, validate_task],
verbose=1,
process="workflow"
)
agents.start()
File renamed without changes.
-28535
View File
File diff suppressed because it is too large. Load diff
+30
View File
@@ -0,0 +1,30 @@
from praisonaiagents import Agent, Task, PraisonAIAgents
from langchain_community.tools import YouTubeSearchTool
from langchain_community.utilities import WikipediaAPIWrapper
# Create an agent with both tools
agent = Agent(
name="SearchAgent",
role="Research Assistant",
goal="Search for information from multiple sources",
backstory="I am an AI assistant that can search YouTube and Wikipedia.",
tools=[YouTubeSearchTool, WikipediaAPIWrapper],
self_reflect=False
)
# Create tasks to demonstrate both tools
task = Task(
name="search_task",
description="Search for information about 'AI advancements' on both YouTube and Wikipedia",
expected_output="Combined information from YouTube videos and Wikipedia articles",
agent=agent
)
# Create and start the workflow
agents = PraisonAIAgents(
agents=[agent],
tasks=[task],
verbose=True
)
agents.start()
+73
View File
@@ -0,0 +1,73 @@
from langchain_community.tools import YouTubeSearchTool
from langchain_community.utilities import WikipediaAPIWrapper
def test_tools():
"""Test both YouTube and Wikipedia tools"""
print("\n=== Testing YouTube Search ===")
# Test YouTube
yt = YouTubeSearchTool()
# Test basic search
print("\nBasic YouTube Search:")
query = "AI advancements 2024"
print(f"Query: {query}")
result = yt.run(query)
print(f"Results: {result}")
# Test with max results
print("\nYouTube Search with max results:")
query = "AI advancements 2024, 3" # Format: query, max_results
print(f"Query: {query}")
result = yt.run(query)
print(f"Results: {result}")
print("\n=== Testing Wikipedia Search ===")
# Test Wikipedia
wiki = WikipediaAPIWrapper(
top_k_results=2,
doc_content_chars_max=500
)
# Test basic search
print("\nBasic Wikipedia Search:")
query = "Artificial Intelligence"
print(f"Query: {query}")
result = wiki.run(query)
print(f"Results: {result[:200]}..." if result else "No result")
# Test with different parameters
print("\nWikipedia Search with different language:")
wiki_fr = WikipediaAPIWrapper(
lang='fr',
top_k_results=1,
doc_content_chars_max=300
)
result = wiki_fr.run("Intelligence Artificielle")
print(f"French Results: {result[:200]}..." if result else "No result")
def print_tool_info():
"""Print detailed information about the tools"""
print("\n=== Tool Information ===")
# YouTube Tool Info
print("\nYouTube Tool:")
yt = YouTubeSearchTool()
print("Type:", type(yt))
print("Name:", getattr(yt, 'name', None))
print("Description:", getattr(yt, 'description', None))
print("Arguments:", getattr(yt, 'args', None))
# Wikipedia Tool Info
print("\nWikipedia Tool:")
wiki = WikipediaAPIWrapper()
print("Type:", type(wiki))
print("Available Settings:")
print("- Language:", wiki.lang)
print("- Top K Results:", wiki.top_k_results)
print("- Max Characters:", wiki.doc_content_chars_max)
if __name__ == "__main__":
print_tool_info()
test_tools()
+33 -11
View File
@@ -18,6 +18,7 @@ from ..main import (
client,
error_logs
)
import inspect
if TYPE_CHECKING:
from ..task.task import Task
@@ -67,9 +68,24 @@ class Agent:
return None
import inspect
# Langchain tools
if inspect.isclass(func) and hasattr(func, 'run'):
original_func = func
func = func.run
function_name = original_func.__name__
sig = inspect.signature(func)
logging.debug(f"Function signature: {sig}")
# Skip self, *args, **kwargs, so they don't get passed in arguments
parameters_list = []
for name, param in sig.parameters.items():
if name == "self":
continue
if param.kind in (inspect.Parameter.VAR_POSITIONAL, inspect.Parameter.VAR_KEYWORD):
continue
parameters_list.append((name, param))
parameters = {
"type": "object",
"properties": {},
@@ -95,7 +111,7 @@ class Agent:
logging.debug(f"Parameter descriptions: {param_descriptions}")
for name, param in sig.parameters.items():
for name, param in parameters_list:
param_type = "string" # Default type
if param.annotation != inspect.Parameter.empty:
if param.annotation == int:
@@ -249,25 +265,31 @@ Your Goal: {self.goal}
# Try to find the function in the agent's tools list first
func = None
for tool in self.tools:
if callable(tool) and getattr(tool, '__name__', '') == function_name:
if (callable(tool) and getattr(tool, '__name__', '') == function_name) or \
(inspect.isclass(tool) and tool.__name__ == function_name):
func = tool
break
logging.debug(f"Looking for {function_name} in agent tools: {func is not None}")
# If not found in tools, try globals and main
if not func:
if func is None:
# If not found in tools, try globals and main
func = globals().get(function_name)
logging.debug(f"Looking for {function_name} in globals: {func is not None}")
if not func:
import __main__
func = getattr(__main__, function_name, None)
logging.debug(f"Looking for {function_name} in __main__: {func is not None}")
if func and callable(func):
if func:
try:
return func(**arguments)
# If it's a class with run method, instantiate and call run
if inspect.isclass(func) and hasattr(func, 'run'):
instance = func()
# Extract only the parameters that run() expects
run_params = {k: v for k, v in arguments.items()
if k in inspect.signature(instance.run).parameters
and k != 'self'}
return instance.run(**run_params)
# Otherwise treat as regular function
elif callable(func):
return func(**arguments)
except Exception as e:
error_msg = str(e)
logging.error(f"Error executing tool {function_name}: {error_msg}")
+1 -1
View File
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
[project]
name = "praisonaiagents"
version = "0.0.26"
version = "0.0.27"
description = "Praison AI agents for completing complex tasks with Self Reflection Agents"
authors = [
{ name="Mervin Praison" }
+1 -1
View File
@@ -186,7 +186,7 @@ wheels = [
[[package]]
name = "praisonaiagents"
version = "0.0.26"
version = "0.0.27"
source = { editable = "." }
dependencies = [
{ name = "openai" },
+1 -1
View File
@@ -110,7 +110,7 @@ Loads environment variables from .env file or system and sets them.</p>
file.write(&#34;FROM python:3.11-slim\n&#34;)
file.write(&#34;WORKDIR /app\n&#34;)
file.write(&#34;COPY . .\n&#34;)
file.write(&#34;RUN pip install flask praisonai==2.0.35 gunicorn markdown\n&#34;)
file.write(&#34;RUN pip install flask praisonai==2.0.36 gunicorn markdown\n&#34;)
file.write(&#34;EXPOSE 8080\n&#34;)
file.write(&#39;CMD [&#34;gunicorn&#34;, &#34;-b&#34;, &#34;0.0.0.0:8080&#34;, &#34;api:app&#34;]\n&#39;)
+5 -5
View File
@@ -1,7 +1,7 @@
---
title: "arXiv Tools"
description: "Scientific paper search and retrieval tools for AI agents."
icon: "book"
title: "arXiv Agent"
description: "arXiv research paper search and analysis tools for AI agents."
icon: "book-open"
---
<Note>
@@ -11,9 +11,9 @@ icon: "book"
- `arxiv` package installed
</Note>
## Quick Start
## arXiv Tools
Use arXiv Tools to search and retrieve scientific papers with AI agents.
Use arXiv Tools to search and analyze research papers with AI agents.
<Steps>
<Step title="Install Dependencies">
+194 -272
View File
@@ -1,294 +1,216 @@
---
title: "Calculator Tools"
description: "Tools for performing mathematical calculations, unit conversions, and financial computations."
title: "Calculator Agent"
description: "Mathematical calculation tools for AI agents."
icon: "calculator"
---
## Available Functions
<Note>
**Prerequisites**
- Python 3.10 or higher
- PraisonAI Agents package installed
- `sympy` and `pint` packages installed
</Note>
```python
from praisonaiagents.tools import (
evaluate, solve_equation, convert_units,
calculate_statistics, calculate_financial
)
```
## Calculator Tools
## Example Code
Use Calculator Tools to perform mathematical calculations with AI agents.
```python
from praisonaiagents import Agent, Task, PraisonAIAgents
from praisonaiagents.tools import (
evaluate, solve_equation, convert_units,
calculate_statistics, calculate_financial
)
<Steps>
<Step title="Install Dependencies">
First, install the required packages:
```bash
pip install praisonaiagents sympy pint
```
</Step>
agent = Agent(
name="MathAssistant",
tools=[
<Step title="Import Components">
Import the necessary components:
```python
from praisonaiagents import Agent, Task, PraisonAIAgents
from praisonaiagents.tools import (
evaluate, solve_equation, convert_units,
calculate_statistics, calculate_financial
]
)
)
```
</Step>
task = Task(
description="Calculate the area of a circle with radius 5",
expected_output="The area of the circle is 78.54 square units",
agent=agent,
name="calculate_circle_area"
)
<Step title="Create Agent">
Create a calculator agent:
```python
calculator_agent = Agent(
name="MathAssistant",
role="Mathematical Computation Specialist",
goal="Perform accurate mathematical calculations and solve equations.",
backstory="Expert in mathematical computations and problem-solving.",
tools=[
evaluate, solve_equation, convert_units,
calculate_statistics, calculate_financial
],
self_reflect=False
)
```
</Step>
<Step title="Define Task">
Define the calculation task:
```python
calc_task = Task(
description="Calculate the area of a circle with radius 5",
expected_output="The area of the circle in square units",
agent=calculator_agent,
name="circle_area"
)
```
</Step>
# Run agent
agents = PraisonAIAgents(
agents=[agent],
tasks=[task],
process="sequential"
)
agents.start()
```
<Step title="Run Agent">
Initialize and run the agent:
```python
agents = PraisonAIAgents(
agents=[calculator_agent],
tasks=[calc_task],
process="sequential"
)
agents.start()
```
</Step>
</Steps>
## Function Details
## Understanding Calculator Tools
### evaluate(expression: str, variables: Optional[Dict[str, float]] = None, precision: int = 10)
<Card title="What are Calculator Tools?" icon="question">
Calculator Tools provide mathematical computation capabilities for AI agents:
- Expression evaluation
- Equation solving
- Unit conversions
- Support for mathematical functions
- Variable substitution
</Card>
Evaluate mathematical expressions:
- Basic arithmetic
- Mathematical functions
- Variable substitution
- Precision control
- Error handling
## Key Components
```python
# Basic arithmetic
result = evaluate("2 + 2 * 3")
<CardGroup cols={2}>
<Card title="Expression Evaluation" icon="function">
Evaluate mathematical expressions:
```python
result = evaluate("2 + 2 * 3")
```
</Card>
<Card title="Equation Solving" icon="equals">
Solve mathematical equations:
```python
result = solve_equation("2*x + 3 = 7")
```
</Card>
<Card title="Unit Conversions" icon="exchange">
Convert between units:
```python
result = convert_units(100, "meters", "kilometers")
```
</Card>
<Card title="Statistical Calculations" icon="chart-line">
Calculate statistical metrics:
```python
result = calculate_statistics([1, 2, 3, 4, 5])
```
</Card>
<Card title="Financial Calculations" icon="chart-pie">
Calculate financial metrics:
```python
result = calculate_financial(1000, 5, 2)
```
</Card>
</CardGroup>
# Complex expressions
result = evaluate(
"sin(pi/2) + sqrt(16)",
precision=5
)
## Advanced Usage
# With variables
result = evaluate(
"x^2 + y",
variables={"x": 3, "y": 4}
)
<AccordionGroup>
<Accordion title="Expression Evaluation">
Evaluate complex mathematical expressions with variables:
```python
# Basic arithmetic
result = evaluate("2 + 2 * 3")
# With mathematical functions
result = evaluate("sin(pi/2) + sqrt(16)")
# With variables
result = evaluate(
"x^2 + y",
variables={"x": 3, "y": 4}
)
```
</Accordion>
<Accordion title="Equation Solving">
Solve different types of equations:
```python
# Linear equation
result = solve_equation("2*x + 3 = 7")
# With custom variable
result = solve_equation("y^2 = 4", variable="y")
```
</Accordion>
<Accordion title="Unit Conversions">
Convert between different units:
```python
# Length conversion
result = convert_units(100, "meters", "kilometers")
# Temperature conversion
result = convert_units(32, "fahrenheit", "celsius")
# Time conversion
result = convert_units(2.5, "hours", "minutes")
```
</Accordion>
<Accordion title="Statistical Calculations">
Calculate statistical metrics:
```python
result = calculate_statistics([1, 2, 3, 4, 5])
```
</Accordion>
<Accordion title="Financial Calculations">
Calculate financial metrics:
```python
result = calculate_financial(1000, 5, 2)
```
</Accordion>
</AccordionGroup>
# Returns: Dict[str, Any]
# Example output:
# {
# "result": 8.0
# }
# or
# {
# "error": "Invalid expression"
# }
```
## Error Handling
### solve_equation(equation: str, variable: str = 'x')
<Card title="Error Management" icon="shield-check">
The tools include comprehensive error handling:
```python
# Returns success result
{"result": 8.0}
# Returns error message
{"error": "Invalid expression"}
```
</Card>
Solve mathematical equations:
- Linear equations
- Quadratic equations
- Polynomial equations
- Real solutions
- Error handling
## Best Practices
```python
# Linear equation
result = solve_equation("2*x + 3 = 7")
# Quadratic equation
result = solve_equation(
"x^2 - 5*x + 6 = 0"
)
# Custom variable
result = solve_equation(
"y^2 = 4",
variable='y'
)
# Returns: Dict[str, Any]
# Example output:
# {
# "solutions": [2.0, 3.0]
# }
# or
# {
# "error": "No real solutions found"
# }
```
### convert_units(value: float, from_unit: str, to_unit: str)
Convert between units:
- Length units
- Mass units
- Temperature units
- Time units
- Error handling
```python
# Length conversion
result = convert_units(100, "meters", "kilometers")
# Temperature conversion
result = convert_units(32, "fahrenheit", "celsius")
# Time conversion
result = convert_units(
2.5,
"hours",
"minutes"
)
# Returns: Dict[str, Any]
# Example output:
# {
# "result": 0.1 # 100 meters = 0.1 kilometers
# }
# or
# {
# "error": "Invalid units"
# }
```
### calculate_statistics(numbers: List[float])
Calculate statistical metrics:
- Mean
- Median
- Standard deviation
- Variance
- Range
- Min/Max values
```python
# Basic statistics
result = calculate_statistics([1, 2, 3, 4, 5])
# Returns: Dict[str, Any]
# Example output:
# {
# "mean": 3.0,
# "median": 3.0,
# "std_dev": 1.58,
# "variance": 2.5,
# "min": 1.0,
# "max": 5.0,
# "range": 4.0,
# "count": 5
# }
```
### calculate_financial(principal: float, rate: float, time: float, frequency: str = 'yearly')
Calculate financial metrics:
- Compound interest
- Simple interest
- Interest comparison
- Multiple frequencies
```python
# Basic compound interest
result = calculate_financial(1000, 5, 2) # $1000, 5%, 2 years
# Monthly compounding
result = calculate_financial(
principal=1000,
rate=5,
time=2,
frequency='monthly'
)
# Returns: Dict[str, Any]
# Example output:
# {
# "final_amount": 1102.50,
# "compound_interest": 102.50,
# "simple_interest": 100.00,
# "difference": 2.50
# }
```
## Example Agent Configuration
```python
from praisonaiagents import Agent
from praisonaiagents.tools import (
evaluate, solve_equation, convert_units,
calculate_statistics, calculate_financial
)
agent = Agent(
name="MathAssistant",
description="An agent that helps with mathematical calculations",
tools=[
evaluate, solve_equation, convert_units,
calculate_statistics, calculate_financial
]
)
```
## Dependencies
The calculator tools require the following packages:
- sympy: For equation solving and symbolic mathematics
- pint: For unit conversions
These will be automatically installed when needed.
## Supported Features
### Mathematical Functions
- Basic: +, -, *, /, ^
- Trigonometric: sin, cos, tan
- Roots: sqrt
- Logarithmic: log, exp
- Constants: pi, e
### Unit Categories
- Length: meters, kilometers, miles, etc.
- Mass: grams, kilograms, pounds, etc.
- Temperature: celsius, fahrenheit, kelvin
- Time: seconds, minutes, hours, days
- Many more via the pint library
### Financial Frequencies
- yearly
- semi-annual
- quarterly
- monthly
- daily
## Common Use Cases
1. Scientific Calculations:
```python
# Complex mathematical expressions
gravity = evaluate("9.81 * sin(pi/4)^2")
kinetic = evaluate(
"0.5 * m * v^2",
variables={"m": 10, "v": 5}
)
```
2. Unit Conversions:
```python
# Multiple conversions
distances = {
"marathon": convert_units(42.195, "kilometers", "miles"),
"height": convert_units(180, "centimeters", "feet"),
"weight": convert_units(75, "kilograms", "pounds")
}
```
3. Investment Analysis:
```python
# Compare investment strategies
investments = {
"conservative": calculate_financial(10000, 3, 5, "yearly"),
"moderate": calculate_financial(10000, 5, 5, "quarterly"),
"aggressive": calculate_financial(10000, 8, 5, "monthly")
}
```
<CardGroup cols={2}>
<Card title="Precision Control" icon="ruler">
Control calculation precision:
```python
evaluate(
"pi",
precision=5
)
```
</Card>
<Card title="Safe Execution" icon="shield">
Uses safe evaluation environment with:
- Restricted builtins
- Mathematical functions only
- Variable validation
</Card>
</CardGroup>
+5 -5
View File
@@ -1,6 +1,6 @@
---
title: "CSV Tools"
description: "Tools for working with CSV files in AI agents."
title: "CSV Agent"
description: "CSV file processing tools for AI agents."
icon: "file-csv"
---
@@ -8,12 +8,12 @@ icon: "file-csv"
**Prerequisites**
- Python 3.10 or higher
- PraisonAI Agents package installed
- Basic understanding of CSV files
- `pandas` package installed
</Note>
## Quick Start
## CSV Tools
Use CSV Tools to process and manipulate CSV files with AI agents.
Use CSV Tools to read, write, and manipulate CSV files with AI agents.
<Steps>
<Step title="Install Dependencies">
+4 -3
View File
@@ -1,6 +1,7 @@
---
title: "DuckDB Tools"
description: "Tools for working with DuckDB databases in AI agents."
title: "DuckDB Agent"
description: "DuckDB database tools for AI agents."
icon: "database"
---
<Note>
@@ -11,7 +12,7 @@ description: "Tools for working with DuckDB databases in AI agents."
- Basic understanding of SQL and databases
</Note>
## Quick Start
## DuckDB Tools
Use DuckDB Tools to manage and query databases with AI agents.
+2 -2
View File
@@ -1,5 +1,5 @@
---
title: "DuckDuckGo Tools"
title: "DuckDuckGo Agent"
description: "Internet search tools using DuckDuckGo for AI agents."
icon: "magnifying-glass"
---
@@ -11,7 +11,7 @@ icon: "magnifying-glass"
- `duckduckgo-search` package installed
</Note>
## Quick Start
## DuckDuckGo Tools
Use DuckDuckGo Tools to perform internet searches with AI agents.
+7 -5
View File
@@ -1,6 +1,7 @@
---
title: "Excel Tools"
description: "Tools for working with Excel files in AI agents."
title: "Excel Agent"
description: "Excel file processing tools for AI agents."
icon: "file-excel"
---
<Note>
@@ -11,7 +12,7 @@ description: "Tools for working with Excel files in AI agents."
- Basic understanding of Excel files
</Note>
## Quick Start
## Excel Tools
Use Excel Tools to process and manipulate Excel files with AI agents.
@@ -314,8 +315,7 @@ agents.start()
Define specific Excel operations:
```python
Task(
description="Process sales data and generate reports",
expected_output="Sales analysis report"
description="Process sales data and generate reports"
)
```
</Accordion>
@@ -438,3 +438,5 @@ processed = {
# Write back to new file
write_excel("processed_data.xlsx", processed)
```
+5 -4
View File
@@ -1,6 +1,7 @@
---
title: "File Tools"
description: "Basic file operation tools for AI agents."
title: "File Agent"
description: "File system operation tools for AI agents."
icon: "folder"
---
<Note>
@@ -10,9 +11,9 @@ description: "Basic file operation tools for AI agents."
- Basic understanding of file operations
</Note>
## Quick Start
## File Tools
Use File Tools to manage files and directories with AI agents.
Use File Tools to perform file system operations with AI agents.
<Steps>
<Step title="Install Dependencies">
+4 -3
View File
@@ -1,6 +1,7 @@
---
title: "JSON Tools"
description: "Tools for working with JSON files in AI agents."
title: "JSON Agent"
description: "JSON data processing tools for AI agents."
icon: "braces"
---
<Note>
@@ -10,7 +11,7 @@ description: "Tools for working with JSON files in AI agents."
- Basic understanding of JSON format
</Note>
## Quick Start
## JSON Tools
Use JSON Tools to process and manipulate JSON files with AI agents.
+4 -4
View File
@@ -1,6 +1,6 @@
---
title: "Newspaper Tools"
description: "News article scraping and analysis tools for AI agents."
title: "Newspaper Agent"
description: "News article extraction tools for AI agents."
icon: "newspaper"
---
@@ -11,9 +11,9 @@ icon: "newspaper"
- `newspaper3k` package installed
</Note>
## Quick Start
## Newspaper Tools
Use Newspaper Tools to scrape and analyze news articles with AI agents.
Use Newspaper Tools to extract and analyze news articles with AI agents.
<Steps>
<Step title="Install Dependencies">
+3 -3
View File
@@ -1,6 +1,6 @@
---
title: "Pandas Tools"
description: "Data manipulation and analysis tools for AI agents using pandas."
title: "Pandas Agent"
description: "Pandas data manipulation tools for AI agents."
icon: "table"
---
@@ -11,7 +11,7 @@ icon: "table"
- `pandas` package installed
</Note>
## Quick Start
## Pandas Tools
Use Pandas Tools to manipulate and analyze data with AI agents.
+4 -3
View File
@@ -1,6 +1,7 @@
---
title: "Python Tools"
description: "Tools for Python code execution, analysis, and formatting in AI agents."
title: "Python Agent"
description: "Python code execution tools for AI agents."
icon: "code"
---
<Note>
@@ -10,7 +11,7 @@ description: "Tools for Python code execution, analysis, and formatting in AI ag
- Basic understanding of Python programming
</Note>
## Quick Start
## Python Tools
Use Python Tools to execute and manage Python code with AI agents.
+5 -4
View File
@@ -1,6 +1,7 @@
---
title: "Shell Tools"
description: "Tools for executing shell commands and managing system processes in AI agents."
title: "Shell Agent"
description: "Shell command execution tools for AI agents."
icon: "terminal"
---
<Note>
@@ -10,9 +11,9 @@ description: "Tools for executing shell commands and managing system processes i
- Basic understanding of shell commands
</Note>
## Quick Start
## Shell Tools
Use Shell Tools to execute and manage shell commands with AI agents.
Use Shell Tools to execute shell commands with AI agents.
<Steps>
<Step title="Install Dependencies">
+6 -7
View File
@@ -1,6 +1,6 @@
---
title: "Spider Tools"
description: "Web scraping and crawling tools for AI agents."
title: "Spider Agent"
description: "Web scraping tools for AI agents."
icon: "spider"
---
@@ -8,19 +8,18 @@ icon: "spider"
**Prerequisites**
- Python 3.10 or higher
- PraisonAI Agents package installed
- `beautifulsoup4` package installed
- `requests` package installed
- `scrapy` package installed
</Note>
## Quick Start
## Spider Tools
Use Spider Tools to scrape and crawl web content with AI agents.
Use Spider Tools to crawl and scrape web content with AI agents.
<Steps>
<Step title="Install Dependencies">
First, install the required packages:
```bash
pip install praisonaiagents beautifulsoup4 requests
pip install praisonaiagents scrapy
```
</Step>
+2 -2
View File
@@ -1,5 +1,5 @@
---
title: "Wikipedia Tools"
title: "Wikipedia Agent"
description: "Wikipedia data retrieval tools for AI agents."
icon: "book"
---
@@ -12,7 +12,7 @@ icon: "book"
- Basic understanding of Wikipedia APIs
</Note>
## Quick Start
## Wikipedia Tools
Use Wikipedia Tools to retrieve and analyze Wikipedia content with AI agents.
+5 -5
View File
@@ -1,6 +1,6 @@
---
title: "XML Tools"
description: "XML file processing tools for AI agents."
title: "XML Agent"
description: "XML data processing tools for AI agents."
icon: "code"
---
@@ -8,12 +8,12 @@ icon: "code"
**Prerequisites**
- Python 3.10 or higher
- PraisonAI Agents package installed
- Basic understanding of XML format
- `lxml` package installed
</Note>
## Quick Start
## XML Tools
Use XML Tools to process and manipulate XML files with AI agents.
Use XML Tools to read, write, and manipulate XML data with AI agents.
<Steps>
<Step title="Install Dependencies">
+4 -4
View File
@@ -1,7 +1,7 @@
---
title: "YAML Tools"
description: "YAML file processing tools for AI agents."
icon: "file-code"
title: "YAML Agent"
description: "YAML data processing tools for AI agents."
icon: "code"
---
<Note>
@@ -12,7 +12,7 @@ icon: "file-code"
- Basic understanding of YAML format
</Note>
## Quick Start
## YAML Tools
Use YAML Tools to process and manipulate YAML files with AI agents.
+2 -2
View File
@@ -1,5 +1,5 @@
---
title: "YFinance Tools"
title: "YFinance Agent"
description: "Yahoo Finance data retrieval tools for AI agents."
icon: "chart-line"
---
@@ -12,7 +12,7 @@ icon: "chart-line"
- Basic understanding of financial data
</Note>
## Quick Start
## YFinance Tools
Use YFinance Tools to retrieve and analyze financial data with AI agents.
Generated
-8837
View File
File diff suppressed because it is too large. Load diff
+1 -1
View File
@@ -3,7 +3,7 @@ class Praisonai < Formula
desc "AI tools for various AI applications"
homepage "https://github.com/MervinPraison/PraisonAI"
url "https://github.com/MervinPraison/PraisonAI/archive/refs/tags/2.0.35.tar.gz"
url "https://github.com/MervinPraison/PraisonAI/archive/refs/tags/2.0.36.tar.gz"
sha256 "1828fb9227d10f991522c3f24f061943a254b667196b40b1a3e4a54a8d30ce32" # Replace with actual SHA256 checksum
license "MIT"
+1 -1
View File
@@ -56,7 +56,7 @@ class CloudDeployer:
file.write("FROM python:3.11-slim\n")
file.write("WORKDIR /app\n")
file.write("COPY . .\n")
file.write("RUN pip install flask praisonai==2.0.35 gunicorn markdown\n")
file.write("RUN pip install flask praisonai==2.0.36 gunicorn markdown\n")
file.write("EXPOSE 8080\n")
file.write('CMD ["gunicorn", "-b", "0.0.0.0:8080", "api:app"]\n')
+4 -4
View File
@@ -1,6 +1,6 @@
[project]
name = "PraisonAI"
version = "2.0.35"
version = "2.0.36"
description = "PraisonAI is an AI Agents Framework with Self Reflection. PraisonAI application combines PraisonAI Agents, AutoGen, and CrewAI into a low-code solution for building and managing multi-agent LLM systems, focusing on simplicity, customisation, and efficient human–agent collaboration."
readme = "README.md"
license = ""
@@ -12,7 +12,7 @@ dependencies = [
"rich>=13.7",
"markdown>=3.5",
"pyparsing>=3.0.0",
"praisonaiagents>=0.0.26",
"praisonaiagents>=0.0.27",
"python-dotenv>=0.19.0",
"instructor>=1.3.3",
"PyYAML>=6.0",
@@ -84,7 +84,7 @@ autogen = ["pyautogen>=0.2.19", "praisonai-tools>=0.0.7", "crewai"]
[tool.poetry]
name = "PraisonAI"
version = "2.0.35"
version = "2.0.36"
description = "PraisonAI is an AI Agents Framework with Self Reflection. PraisonAI application combines PraisonAI Agents, AutoGen, and CrewAI into a low-code solution for building and managing multi-agent LLM systems, focusing on simplicity, customisation, and efficient human–agent collaboration."
authors = ["Mervin Praison"]
license = ""
@@ -102,7 +102,7 @@ python = ">=3.10,<3.13"
rich = ">=13.7"
markdown = ">=3.5"
pyparsing = ">=3.0.0"
praisonaiagents = ">=0.0.26"
praisonaiagents = ">=0.0.27"
python-dotenv = ">=0.19.0"
instructor = ">=1.3.3"
PyYAML = ">=6.0"
Generated
+5 -5
View File
@@ -3061,7 +3061,7 @@ wheels = [
[[package]]
name = "praisonai"
version = "2.0.34"
version = "2.0.36"
source = { editable = "." }
dependencies = [
{ name = "instructor" },
@@ -3198,7 +3198,7 @@ requires-dist = [
{ name = "plotly", marker = "extra == 'realtime'", specifier = ">=5.24.0" },
{ name = "praisonai-tools", marker = "extra == 'autogen'", specifier = ">=0.0.7" },
{ name = "praisonai-tools", marker = "extra == 'crewai'", specifier = ">=0.0.7" },
{ name = "praisonaiagents", specifier = ">=0.0.25" },
{ name = "praisonaiagents", specifier = ">=0.0.27" },
{ name = "pyautogen", marker = "extra == 'autogen'", specifier = ">=0.2.19" },
{ name = "pydantic", marker = "extra == 'chat'", specifier = "<=2.10.1" },
{ name = "pydantic", marker = "extra == 'code'", specifier = "<=2.10.1" },
@@ -3251,16 +3251,16 @@ wheels = [
[[package]]
name = "praisonaiagents"
version = "0.0.25"
version = "0.0.27"
source = { registry = "https://pypi.org/simple" }
dependencies = [
{ name = "openai" },
{ name = "pydantic" },
{ name = "rich" },
]
sdist = { url = "https://files.pythonhosted.org/packages/6c/9c/07a6fd1d939eb98ae6399fb16aad870f16dba7ab5d64825af2420a46c09b/praisonaiagents-0.0.25.tar.gz", hash = "sha256:2ef1292fa5e0a5dc5d1b982670f3d0c6bb1cd9c59febbcbe6c2b8af5fa21ca43", size = 61241 }
sdist = { url = "https://files.pythonhosted.org/packages/05/c9/b368dc9c23e9d0df0b2d427055b71e842beebc15e3d005520b52baf05481/praisonaiagents-0.0.27.tar.gz", hash = "sha256:a195a8ea902ef437cc2ba8a6cac4ff76d7c4a208ef387ff69e752343e53ce104", size = 61683 }
wheels = [
{ url = "https://files.pythonhosted.org/packages/50/78/1ab28fe9e32f2d765052b3870532238f6c4a72a98168b73b443d76c0235f/praisonaiagents-0.0.25-py3-none-any.whl", hash = "sha256:5b0cf04f294d81dbee8be855fc7026cc190a05b1d169e286eb7e387b8f8bd7de", size = 80127 },
{ url = "https://files.pythonhosted.org/packages/0d/63/b4b45c943c78b1818cec8b2dd92b3fdea36075eb5e323c8ca22e917ca75e/praisonaiagents-0.0.27-py3-none-any.whl", hash = "sha256:3404a186f2be2dfed0b56efec613896f4306f5589dc65d4b3f7034b0401d7593", size = 80590 },
]
[[package]]