Tools
Agents use tools to take actions and interact with external systems.
Tools are functions that an Agent can run to achieve tasks. For example: searching the web, running SQL, sending an email or calling APIs. You can use any python function as a tool or use a pre-built toolkit. The general syntax is:
Using a Toolkit
Phidata provides many pre-built toolkits that you can add to your Agents. For example, let’s use the DuckDuckGo toolkit to search the web.
Create Web Search Agent
Create a file web_search.py
Run the agent
Install libraries
Run the agent
Writing your own Tools
For more control, write your own python functions and add them as tools to an Agent. For example, here’s how to add a get_top_hackernews_stories
tool to an Agent.
Read more about:
Attributes
The following attributes allow an Agent
to use tools
Parameter | Type | Default | Description |
---|---|---|---|
tools | List[Union[Tool, Toolkit, Callable, Dict, Function]] | - | A list of tools provided to the Model. Tools are functions the model may generate JSON inputs for. |
show_tool_calls | bool | False | Print the signature of the tool calls in the Model response. |
tool_call_limit | int | - | Maximum number of tool calls allowed. |
tool_choice | Union[str, Dict[str, Any]] | - | Controls which (if any) tool is called by the model. “none” means the model will not call a tool and instead generates a message. “auto” means the model can pick between generating a message or calling a tool. Specifying a particular function via {"type": "function", "function": {"name": "my_function"}} forces the model to call that tool. “none” is the default when no tools are present. “auto” is the default if tools are present. |
read_chat_history | bool | False | Add a tool that allows the Model to read the chat history. |
search_knowledge | bool | False | Add a tool that allows the Model to search the knowledge base (aka Agentic RAG). |
update_knowledge | bool | False | Add a tool that allows the Model to update the knowledge base. |
read_tool_call_history | bool | False | Add a tool that allows the Model to get the tool call history. |