mirror of
https://github.com/crewAIInc/crewAI.git
synced 2026-01-09 16:18:30 +00:00
68 lines
2.0 KiB
Markdown
68 lines
2.0 KiB
Markdown
---
|
||
title: Creating your own Tools
|
||
description: Guide on how to create and use custom tools within the crewAI framework.
|
||
---
|
||
|
||
## Creating your own Tools
|
||
!!! example "Custom Tool Creation"
|
||
Developers can craft custom tools tailored for their agent’s needs or utilize pre-built options:
|
||
|
||
To create your own crewAI tools you will need to install our extra tools package:
|
||
|
||
```bash
|
||
pip install 'crewai[tools]'
|
||
```
|
||
|
||
Once you do that there are two main ways for one to create a crewAI tool:
|
||
|
||
### Subclassing `BaseTool`
|
||
|
||
```python
|
||
from crewai_tools import BaseTool
|
||
|
||
class MyCustomTool(BaseTool):
|
||
name: str = "Name of my tool"
|
||
description: str = "Clear description for what this tool is useful for, you agent will need this information to use it."
|
||
|
||
def _run(self, argument: str) -> str:
|
||
# Implementation goes here
|
||
return "Result from custom tool"
|
||
```
|
||
|
||
Define a new class inheriting from `BaseTool`, specifying `name`, `description`, and the `_run` method for operational logic.
|
||
|
||
|
||
### Utilizing the `tool` Decorator
|
||
|
||
For a simpler approach, create a `Tool` object directly with the required attributes and a functional logic.
|
||
|
||
```python
|
||
from crewai_tools import tool
|
||
@tool("Name of my tool")
|
||
def my_tool(question: str) -> str:
|
||
"""Clear description for what this tool is useful for, you agent will need this information to use it."""
|
||
# Function logic here
|
||
```
|
||
|
||
```python
|
||
import json
|
||
import requests
|
||
from crewai import Agent
|
||
from crewai.tools import tool
|
||
from unstructured.partition.html import partition_html
|
||
|
||
# Annotate the function with the tool decorator from crewAI
|
||
@tool("Integration with a given API")
|
||
def integtation_tool(argument: str) -> str:
|
||
"""Integration with a given API"""
|
||
# Code here
|
||
return resutls # string to be sent back to the agent
|
||
|
||
# Assign the scraping tool to an agent
|
||
agent = Agent(
|
||
role='Research Analyst',
|
||
goal='Provide up-to-date market analysis',
|
||
backstory='An expert analyst with a keen eye for market trends.',
|
||
tools=[integtation_tool]
|
||
)
|
||
``` |