# System Tools Overview

Freddy provides a comprehensive set of built-in system tools that enable your AI assistants to perform various tasks without requiring custom function definitions. These tools are automatically available to all assistants and can be used to enhance their capabilities.

## Available Tools

### **Search and Retrieval**

- **[File Search](/docs/documentation/system-tools/file-search)** - Search through uploaded files and documents
- **[Web Search](/docs/documentation/system-tools/web-search)** - Search the internet for current information
- **[Deep Research](/docs/documentation/system-tools/deep-research)** - Multi-round, multi-source research with synthesised reports
- **[Deep Research vs Web Search](/docs/documentation/system-tools/deep-research-vs-web-search)** - When to use which


### **Computing and Execution**

- **[Code Interpreter](/docs/documentation/system-tools/code-interpreter)** - Execute Python code and analyze data


### **File Operations**

- **[File Retrieval](/docs/documentation/system-tools/file-retrieval)** - Access and retrieve file contents


### **Creative Tools**

- **[Image Generation](/docs/documentation/system-tools/image-generation)** - Create images from text descriptions


### **Messaging**

- **[Messaging Actions](/docs/documentation/system-tools/messaging-actions)** - Create group conversations, compose to several people, and manage participants from chat


## Getting Started

### 1. Enable Tools in Your Assistant

When creating or updating an assistant, you can enable specific tools:


```python
assistant = freddy.assistants.create(
 name="My Assistant",
 instructions="You are a helpful assistant with access to various tools.",
 model="gpt-4o",
 tools=[
 {"type": "file_search"},
 {"type": "web_search"},
 {"type": "code_interpreter"}
 ]
)
```

### 2. Use Tools in Conversations

Once enabled, your assistant can automatically use these tools when needed:


```python
# The assistant will automatically use tools based on the conversation
message = freddy.threads.messages.create(
 thread_id=thread.id,
 role="user",
 content="Analyze this data and create a visualization: [data...]"
)

# Run the assistant
run = freddy.threads.runs.create(thread_id=thread.id, assistant_id=assistant.id)
```

## Tool Capabilities

### File Search

- Search through uploaded documents, PDFs, and text files
- Extract relevant information and quotes
- Support for multiple file formats


### Web Search

- Real-time web search capabilities
- Access to current news and information
- Summarization of search results


### Code Interpreter

- Execute Python code safely
- Generate charts and visualizations
- Perform data analysis and calculations


## Best Practices

1. **Choose Relevant Tools**: Only enable tools that are relevant to your assistant's purpose
2. **Clear Instructions**: Provide clear instructions on when and how to use each tool
3. **Error Handling**: Design your assistant to handle tool failures gracefully
4. **Privacy Considerations**: Be aware of data privacy when using tools that access external resources


## Tool Limitations

- Tools have usage limits and costs
- Some tools are in preview and may have limitations
- Always test your assistant thoroughly with enabled tools
- Monitor tool usage to understand costs and performance


## Examples

Check out these examples to see how to use system tools effectively:

- [Data Analysis with Code Interpreter](/docs/documentation/system-tools/code-interpreter)
- [Research Assistant with Web Search](/docs/documentation/system-tools/web-search)
- [Document Processing with File Search](/docs/documentation/system-tools/file-search)


## Need Help?

- [Code Interpreter Guide](/docs/documentation/system-tools/code-interpreter) - Detailed usage examples
- [Web Search Guide](/docs/documentation/system-tools/web-search) - Best practices for web research
- [File Search Guide](/docs/documentation/system-tools/file-search) - Working with documents


For technical support, contact [support@aitronos.com](mailto:support@aitronos.com).