2024-07-24 17:51:39 +00:00
import sys
from pathlib import Path
SEARCH_TOOL_FEAT_TABLE = {
2024-08-08 15:59:02 +00:00
" Tavily Search " : {
" pricing " : " 1000 free searches/month " ,
" available_data " : " URL, Content, Title, Images, Answer " ,
" link " : " /docs/integrations/tools/tavily_search " ,
} ,
2024-07-24 17:51:39 +00:00
" Exa Search " : {
" pricing " : " 1000 free searches/month " ,
" available_data " : " URL, Author, Title, Published Date " ,
" link " : " /docs/integrations/tools/exa_search " ,
} ,
" Bing Search " : {
" pricing " : " Paid " ,
" available_data " : " URL, Snippet, Title " ,
" link " : " /docs/integrations/tools/bing_search " ,
} ,
" DuckDuckgoSearch " : {
" pricing " : " Free " ,
" available_data " : " URL, Snippet, Title " ,
" link " : " /docs/integrations/tools/ddg " ,
} ,
" Brave Search " : {
" pricing " : " Free " ,
" available_data " : " URL, Snippet, Title " ,
" link " : " /docs/integrations/tools/brave_search " ,
} ,
" Google Search " : {
" pricing " : " Paid " ,
" available_data " : " URL, Snippet, Title " ,
" link " : " /docs/integrations/tools/google_search " ,
} ,
" Google Serper " : {
" pricing " : " Free " ,
" available_data " : " URL, Snippet, Title, Search Rank, Site Links " ,
" link " : " /docs/integrations/tools/google_serper " ,
} ,
" Mojeek Search " : {
" pricing " : " Paid " ,
" available_data " : " URL, Snippet, Title " ,
" link " : " /docs/integrations/tools/mojeek_search " ,
} ,
" SearxNG Search " : {
" pricing " : " Free " ,
" available_data " : " URL, Snippet, Title, Category " ,
" link " : " /docs/integrations/tools/searx_search " ,
} ,
" You.com Search " : {
" pricing " : " Free for 60 days " ,
" available_data " : " URL, Title, Page Content " ,
" link " : " /docs/integrations/tools/you " ,
} ,
" SearchApi " : {
" pricing " : " 100 Free Searches on Sign Up " ,
" available_data " : " URL, Snippet, Title, Search Rank, Site Links, Authors " ,
" link " : " /docs/integrations/tools/searchapi " ,
} ,
" SerpAPI " : {
" pricing " : " 100 Free Searches/Month " ,
" available_data " : " Answer " ,
" link " : " /docs/integrations/tools/serpapi " ,
} ,
}
CODE_INTERPRETER_TOOL_FEAT_TABLE = {
" Bearly Code Interpreter " : {
" langauges " : " Python " ,
" sandbox_lifetime " : " Resets on Execution " ,
" upload " : True ,
" return_results " : " Text " ,
" link " : " /docs/integrations/tools/bearly " ,
} ,
" Riza Code Interpreter " : {
" langauges " : " Python, JavaScript, PHP, Ruby " ,
" sandbox_lifetime " : " Resets on Execution " ,
" upload " : False ,
" return_results " : " Text " ,
" link " : " /docs/integrations/tools/riza " ,
} ,
" E2B Data Analysis " : {
" langauges " : " Python. In beta: JavaScript, R, Java " ,
" sandbox_lifetime " : " 24 Hours " ,
" upload " : True ,
" return_results " : " Text, Images, Videos " ,
" link " : " /docs/integrations/tools/e2b_data_analysis " ,
} ,
" Azure Container Apps dynamic sessions " : {
" langauges " : " Python " ,
" sandbox_lifetime " : " 1 Hour " ,
" upload " : True ,
" return_results " : " Text, Images " ,
" link " : " /docs/integrations/tools/azure_dynamic_sessions " ,
} ,
}
2024-08-08 15:59:02 +00:00
PRODUCTIVITY_TOOL_FEAT_TABLE = {
" Gmail Toolkit " : {
" link " : " /docs/integrations/tools/gmail " ,
" pricing " : " Free, with limit of 250 quota units per user per second " ,
} ,
" Github Toolkit " : {
" link " : " /docs/integrations/tools/github " ,
" pricing " : " Free " ,
} ,
" Gitlab Toolkit " : {
" link " : " /docs/integrations/tools/gitlab " ,
" pricing " : " Free for personal project " ,
} ,
" Slack Toolkit " : {
" link " : " /docs/integrations/tools/slack " ,
" pricing " : " Free " ,
} ,
" Jira Toolkit " : {
" link " : " /docs/integrations/tools/jira " ,
" pricing " : " Free, with [rate limits](https://developer.atlassian.com/cloud/jira/platform/rate-limiting/) " ,
} ,
" Office365 Toolkit " : {
" link " : " /docs/integrations/tools/office365 " ,
" pricing " : " Free with Office365, includes [rate limits](https://learn.microsoft.com/en-us/graph/throttling-limits) " ,
} ,
" Twilio Tool " : {
" link " : " /docs/integrations/tools/twilio " ,
" pricing " : " Free trial, with [pay-as-you-go pricing](https://www.twilio.com/en-us/pricing) after " ,
} ,
" Infobip Tool " : {
" link " : " /docs/integrations/tools/infobip " ,
" pricing " : " Free trial, with variable pricing after " ,
} ,
}
WEBBROWSING_TOOL_FEAT_TABLE = {
" Requests Toolkit " : {
" link " : " /docs/integrations/tools/requests " ,
" interactions " : False ,
" pricing " : " Free " ,
} ,
" PlayWright Browser Toolkit " : {
" link " : " /docs/integrations/tools/playwright " ,
" interactions " : True ,
" pricing " : " Free " ,
} ,
" MultiOn Toolkit " : {
" link " : " /docs/integrations/tools/multion " ,
" interactions " : True ,
" pricing " : " 40 free requests/day " ,
} ,
}
DATABASE_TOOL_FEAT_TABLE = {
" SQLDatabase Toolkit " : {
" link " : " /docs/integrations/tools/sql_database " ,
" operations " : " Any SQL operation " ,
} ,
" Spark SQL Toolkit " : {
" link " : " /docs/integrations/tools/spark_sql " ,
" operations " : " Any SQL operation " ,
} ,
" Cassandra Database Toolkit " : {
" link " : " /docs/integrations/tools/cassandra_database " ,
" operations " : " SELECT and schema introspection " ,
} ,
}
2024-07-24 17:51:39 +00:00
TOOLS_TEMPLATE = """ \
- - -
sidebar_position : 0
sidebar_class_name : hidden
keywords : [ compatibility ]
custom_edit_url :
- - -
# Tools
2024-08-14 14:14:24 +00:00
[ Tools ] ( / docs / concepts / #tools) are utilities designed to be called by a model: their inputs are designed to be generated by models, and their outputs are designed to be passed back to models.
A [ toolkit ] ( / docs / concepts #toolkits) is a collection of tools meant to be used together.
2024-07-30 22:48:18 +00:00
: : : info
If you ' d like to write your own tool, see [this how-to](/docs/how_to/custom_tools/).
If you ' d like to contribute an integration, see [Contributing integrations](/docs/contributing/integrations/).
: : :
2024-08-08 15:59:02 +00:00
## Search
2024-07-24 17:51:39 +00:00
The following table shows tools that execute online searches in some shape or form :
{ search_table }
2024-08-08 15:59:02 +00:00
## Code Interpreter
2024-07-24 17:51:39 +00:00
The following table shows tools that can be used as code interpreters :
{ code_interpreter_table }
2024-08-08 15:59:02 +00:00
## Productivity
The following table shows tools that can be used to automate tasks in productivity tools :
{ productivity_table }
## Web Browsing
The following table shows tools that can be used to automate tasks in web browsers :
{ webbrowsing_table }
## Database
The following table shows tools that can be used to automate tasks in databases :
{ database_table }
2024-08-14 02:38:03 +00:00
## All tools
import { { IndexTable } } from " @theme/FeatureTables " ;
2024-08-14 18:36:41 +00:00
2024-08-14 02:38:03 +00:00
< IndexTable / >
2024-08-08 15:59:02 +00:00
""" # noqa: E501
def get_productivity_table ( ) - > str :
""" Get the table of productivity tools. """
header = [
" tool " ,
" pricing " ,
]
title = [
" Tool/Toolkit " ,
" Pricing " ,
]
rows = [ title , [ " :- " ] + [ " :-: " ] * ( len ( title ) - 1 ) ]
for productivity_tool , feats in sorted ( PRODUCTIVITY_TOOL_FEAT_TABLE . items ( ) ) :
# Fields are in the order of the header
row = [
f " [ { productivity_tool } ]( { feats [ ' link ' ] } ) " ,
]
for h in header [ 1 : ] :
row . append ( feats . get ( h ) )
rows . append ( row )
return " \n " . join ( [ " | " . join ( row ) for row in rows ] )
def get_webbrowsing_table ( ) - > str :
""" Get the table of web browsing tools. """
header = [ " tool " , " pricing " , " interactions " ]
title = [ " Tool/Toolkit " , " Pricing " , " Supports Interacting with the Browser " ]
rows = [ title , [ " :- " ] + [ " :-: " ] * ( len ( title ) - 1 ) ]
for web_browsing_tool , feats in sorted ( WEBBROWSING_TOOL_FEAT_TABLE . items ( ) ) :
# Fields are in the order of the header
row = [
f " [ { web_browsing_tool } ]( { feats [ ' link ' ] } ) " ,
]
for h in header [ 1 : ] :
value = feats . get ( h )
if h == " interactions " :
if value is True :
row . append ( " ✅ " )
else :
row . append ( " ❌ " )
else :
row . append ( value )
rows . append ( row )
return " \n " . join ( [ " | " . join ( row ) for row in rows ] )
def get_database_table ( ) - > str :
""" Get the table of database tools. """
header = [ " tool " , " operations " ]
title = [ " Tool/Toolkit " , " Allowed Operations " ]
rows = [ title , [ " :- " ] + [ " :-: " ] * ( len ( title ) - 1 ) ]
for database_tool , feats in sorted ( DATABASE_TOOL_FEAT_TABLE . items ( ) ) :
# Fields are in the order of the header
row = [
f " [ { database_tool } ]( { feats [ ' link ' ] } ) " ,
]
for h in header [ 1 : ] :
row . append ( feats . get ( h ) )
rows . append ( row )
return " \n " . join ( [ " | " . join ( row ) for row in rows ] )
2024-07-24 17:51:39 +00:00
def get_search_tools_table ( ) - > str :
""" Get the table of search tools. """
header = [ " tool " , " pricing " , " available_data " ]
2024-08-08 15:59:02 +00:00
title = [ " Tool/Toolkit " , " Free/Paid " , " Return Data " ]
2024-07-24 17:51:39 +00:00
rows = [ title , [ " :- " ] + [ " :-: " ] * ( len ( title ) - 1 ) ]
for search_tool , feats in sorted ( SEARCH_TOOL_FEAT_TABLE . items ( ) ) :
# Fields are in the order of the header
row = [
f " [ { search_tool } ]( { feats [ ' link ' ] } ) " ,
]
for h in header [ 1 : ] :
row . append ( feats . get ( h ) )
rows . append ( row )
return " \n " . join ( [ " | " . join ( row ) for row in rows ] )
def get_code_interpreter_table ( ) - > str :
""" Get the table of search tools. """
header = [
" tool " ,
" langauges " ,
" sandbox_lifetime " ,
" upload " ,
" return_results " ,
]
title = [
2024-08-08 15:59:02 +00:00
" Tool/Toolkit " ,
2024-07-24 17:51:39 +00:00
" Supported Languages " ,
" Sandbox Lifetime " ,
" Supports File Uploads " ,
" Return Types " ,
]
rows = [ title , [ " :- " ] + [ " :-: " ] * ( len ( title ) - 1 ) ]
for search_tool , feats in sorted ( CODE_INTERPRETER_TOOL_FEAT_TABLE . items ( ) ) :
# Fields are in the order of the header
row = [
f " [ { search_tool } ]( { feats [ ' link ' ] } ) " ,
]
for h in header [ 1 : ] :
value = feats . get ( h )
if h == " upload " :
if value is True :
row . append ( " ✅ " )
else :
row . append ( " ❌ " )
else :
row . append ( value )
rows . append ( row )
return " \n " . join ( [ " | " . join ( row ) for row in rows ] )
if __name__ == " __main__ " :
output_dir = Path ( sys . argv [ 1 ] )
output_integrations_dir = output_dir / " integrations "
output_integrations_dir_tools = output_integrations_dir / " tools "
output_integrations_dir_tools . mkdir ( parents = True , exist_ok = True )
tools_page = TOOLS_TEMPLATE . format (
search_table = get_search_tools_table ( ) ,
code_interpreter_table = get_code_interpreter_table ( ) ,
2024-08-08 15:59:02 +00:00
productivity_table = get_productivity_table ( ) ,
webbrowsing_table = get_webbrowsing_table ( ) ,
database_table = get_database_table ( ) ,
2024-07-24 17:51:39 +00:00
)
with open ( output_integrations_dir / " tools " / " index.mdx " , " w " ) as f :
f . write ( tools_page )