|
from .stats_tools import stats_tools
|
|
from .chart_tools import chart_tools
|
|
|
|
def tools_call(session_hash, data_source, titles):
|
|
|
|
titles_string = (titles[:625] + '..') if len(titles) > 625 else titles
|
|
|
|
tools_calls = {
|
|
'file_upload' : [
|
|
{
|
|
"type": "function",
|
|
"function": {
|
|
"name": "sqlite_query_func",
|
|
"description": f"""This is a tool useful to query a SQLite table called 'data_source' with the following Columns: {titles_string}.
|
|
There may also be more columns in the table if the number of columns is too large to process.
|
|
This function also saves the results of the query to csv file called query.csv.""",
|
|
"parameters": {
|
|
"type": "object",
|
|
"properties": {
|
|
"queries": {
|
|
"type": "array",
|
|
"description": "The query to use in the search. Infer this from the user's message. It should be a question or a statement",
|
|
"items": {
|
|
"type": "string",
|
|
}
|
|
}
|
|
},
|
|
"required": ["queries"],
|
|
},
|
|
},
|
|
},
|
|
],
|
|
'sql' : [
|
|
{
|
|
"type": "function",
|
|
"function": {
|
|
"name": "sql_query_func",
|
|
"description": f"""This is a tool useful to query a PostgreSQL database with the following tables, {titles_string}.
|
|
There may also be more tables in the database if the number of tables is too large to process.
|
|
This function also saves the results of the query to csv file called query.csv.""",
|
|
"parameters": {
|
|
"type": "object",
|
|
"properties": {
|
|
"queries": {
|
|
"type": "array",
|
|
"description": "The PostgreSQL query to use in the search. Infer this from the user's message. It should be a question or a statement",
|
|
"items": {
|
|
"type": "string",
|
|
}
|
|
}
|
|
},
|
|
"required": ["queries"],
|
|
},
|
|
},
|
|
},
|
|
],
|
|
'doc_db' : [
|
|
{
|
|
"type": "function",
|
|
"function": {
|
|
"name": "doc_db_query_func",
|
|
"description": f"""This is a tool useful to build an aggregation pipeline to query a MongoDB NoSQL document database with the following collections, {titles_string}.
|
|
There may also be more collections in the database if the number of tables is too large to process.
|
|
This function also saves the results of the query to a csv file called query.csv.""",
|
|
"parameters": {
|
|
"type": "object",
|
|
"properties": {
|
|
"aggregation_pipeline": {
|
|
"type": "string",
|
|
"description": "The MongoDB aggregation pipeline to use in the search. Infer this from the user's message. It should be a question or a statement."
|
|
},
|
|
"db_collection": {
|
|
"type": "string",
|
|
"description": "The MongoDB collection to use in the search. Infer this from the user's message. It should be a question or a statement.",
|
|
}
|
|
},
|
|
"required": ["aggregation_pipeline","db_collection"],
|
|
},
|
|
},
|
|
},
|
|
],
|
|
'graphql' : [
|
|
{
|
|
"type": "function",
|
|
"function": {
|
|
"name": "graphql_query_func",
|
|
"description": f"""This is a tool useful to build a GraphQL query for a GraphQL API endpoint with the following types, {titles_string}.
|
|
There may also be more types in the GraphQL endpoint if the number of types is too large to process.
|
|
This function also saves the results of the query to a csv file called query.csv.""",
|
|
"parameters": {
|
|
"type": "object",
|
|
"properties": {
|
|
"graphql_query": {
|
|
"type": "string",
|
|
"description": "The GraphQL query to use in the search. Infer this from the user's message. It should be a question or a statement."
|
|
}
|
|
},
|
|
"required": ["graphql_query"],
|
|
},
|
|
},
|
|
},
|
|
{
|
|
"type": "function",
|
|
"function": {
|
|
"name": "graphql_schema_query",
|
|
"description": f"""This is a tool useful to query a GraphQL type and receive back information about its schema. This is useful because
|
|
the GraphQL introspection query is too large to be ingested all at once and this allows us to query the schema one type at a time to
|
|
view it in manageable bites. You may realize after viewing the schema, that the type you selected was not appropriate for the question
|
|
you are attempting answer. You may then query additional types to find the appropriate types to use for your GraphQL API query.""",
|
|
"parameters": {
|
|
"type": "object",
|
|
"properties": {
|
|
"graphql_type": {
|
|
"type": "string",
|
|
"description": "The GraphQL type that we want to view the schema of in order to make the proper query with our graphql_query_func. Infer this from the user's message. It should be a question or a statement."
|
|
}
|
|
},
|
|
"required": ["graphql_type"],
|
|
},
|
|
},
|
|
},
|
|
{
|
|
"type": "function",
|
|
"function": {
|
|
"name": "graphql_csv_query",
|
|
"description": f"""This is a tool useful to SQL query our query.csv file that is generated from our GraphQL query. This is useful in a situation
|
|
where the results of the GraphQL query need additional querying to answer the user question. The query.csv file is converted to a Pandas dataframe
|
|
and we query that dataframe with SQL on a table called 'query' before converting it back to a csv file.""",
|
|
"parameters": {
|
|
"type": "object",
|
|
"properties": {
|
|
"csv_query": {
|
|
"type": "string",
|
|
"description": "The pandas dataframe SQL query to use in the search. The table that we query is named 'query'. Infer this from the user's message. It should be a question or a statement"
|
|
}
|
|
},
|
|
"required": ["csv_query"],
|
|
},
|
|
},
|
|
},
|
|
]
|
|
}
|
|
|
|
tools = tools_calls[data_source]
|
|
|
|
tools.extend(chart_tools)
|
|
tools.extend(stats_tools)
|
|
|
|
return tools |