Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,371 @@
{
"cells": [
{
"cell_type": "markdown",
"metadata": {
"application/vnd.databricks.v1+cell": {
"cellMetadata": {
"byteLimit": 2048000,
"rowLimit": 10000
},
"inputWidgets": {},
"nuid": "b9f55760-d6ca-4e7f-8d21-f90f24347898",
"showTitle": false,
"tableResultSettingsMap": {},
"title": ""
}
},
"source": [
"1. Define UC Fuctions to be used as AI Tools\n",
"- Predictor (we can use ai_query or query the scored output directly to improve the performance of the funtion in-turn Agent)\n",
"- Explianability (we can directly write functions to run functionality for demo purposes and for lower latency - we can write simple sql query)\n",
"2. Reasoning agent built using AI Tools"
]
},
{
"cell_type": "code",
"execution_count": 0,
"metadata": {
"application/vnd.databricks.v1+cell": {
"cellMetadata": {
"byteLimit": 2048000,
"rowLimit": 10000
},
"inputWidgets": {},
"nuid": "f5fb2bbf-bb2f-4553-91b0-5a5f9c032d63",
"showTitle": false,
"tableResultSettingsMap": {},
"title": ""
}
},
"outputs": [],
"source": [
"%pip install unitycatalog-ai[databricks] unitycatalog-langchain[databricks] databricks-langchain"
]
},
{
"cell_type": "code",
"execution_count": 0,
"metadata": {
"application/vnd.databricks.v1+cell": {
"cellMetadata": {
"byteLimit": 2048000,
"rowLimit": 10000
},
"inputWidgets": {},
"nuid": "c590b992-cded-4122-b144-3160b1962ac8",
"showTitle": false,
"tableResultSettingsMap": {},
"title": ""
}
},
"outputs": [],
"source": [
"dbutils.library.restartPython()"
]
},
{
"cell_type": "code",
"execution_count": 0,
"metadata": {
"application/vnd.databricks.v1+cell": {
"cellMetadata": {
"byteLimit": 2048000,
"rowLimit": 10000
},
"inputWidgets": {},
"nuid": "4492feea-345b-4e9c-96a8-2c1c755b67db",
"showTitle": false,
"tableResultSettingsMap": {},
"title": ""
}
},
"outputs": [],
"source": [
"%run ../_resources/00-setup $reset_all_data=false"
]
},
{
"cell_type": "code",
"execution_count": 0,
"metadata": {
"application/vnd.databricks.v1+cell": {
"cellMetadata": {
"byteLimit": 2048000,
"implicitDf": true,
"rowLimit": 10000
},
"inputWidgets": {},
"nuid": "435cb13f-ee48-4d94-b333-453443dc2af6",
"showTitle": false,
"tableResultSettingsMap": {},
"title": ""
}
},
"outputs": [],
"source": [
"%sql\n",
"CREATE FUNCTION IF NOT EXISTS pavithra_rao.credit_decisioning.credit_score(customer_id INT)\n",
"returns table(cust_id INT, prediction DOUBLE)\n",
"LANGUAGE SQL\n",
"COMMENT 'This function takes in a customer id and returns a table with prediction score if the customer will default or not'\n",
"return\n",
"(select cust_id, prediction from pavithra_rao.credit_decisioning.underbanked_prediction where cust_id = customer_id)"
]
},
{
"cell_type": "code",
"execution_count": 0,
"metadata": {
"application/vnd.databricks.v1+cell": {
"cellMetadata": {
"byteLimit": 2048000,
"implicitDf": true,
"rowLimit": 10000
},
"inputWidgets": {},
"nuid": "3ada7ae1-3fb1-4916-a04c-0acbc6a970a9",
"showTitle": false,
"tableResultSettingsMap": {},
"title": ""
}
},
"outputs": [],
"source": [
"%sql\n",
"-- Test the function we just created\n",
"SELECT * from pavithra_rao.credit_decisioning.credit_score(5451)"
]
},
{
"cell_type": "code",
"execution_count": 0,
"metadata": {
"application/vnd.databricks.v1+cell": {
"cellMetadata": {
"byteLimit": 2048000,
"implicitDf": true,
"rowLimit": 10000
},
"inputWidgets": {},
"nuid": "ad7cf09e-18b4-4b99-8f5e-c3a555ebc223",
"showTitle": false,
"tableResultSettingsMap": {},
"title": ""
}
},
"outputs": [],
"source": [
"%sql\n",
"CREATE FUNCTION IF NOT EXISTS pavithra_rao.credit_decisioning.explain_model_shap(customer_id INT)\n",
"RETURNS TABLE (\n",
" index BIGINT,\n",
" cust_id INT,\n",
" education INT,\n",
" marital_status INT,\n",
" months_current_address INT,\n",
" months_employment INT,\n",
" is_resident INT,\n",
" tenure_months INT,\n",
" product_cnt INT,\n",
" tot_rel_bal DOUBLE,\n",
" revenue_tot DOUBLE,\n",
" revenue_12m DOUBLE,\n",
" income_annual INT,\n",
" tot_assets INT,\n",
" overdraft_balance_amount DOUBLE,\n",
" overdraft_number INT,\n",
" total_deposits_number INT,\n",
" total_deposits_amount DOUBLE,\n",
" total_equity_amount DOUBLE,\n",
" total_UT DOUBLE,\n",
" customer_revenue DOUBLE,\n",
" age INT,\n",
" avg_balance DOUBLE,\n",
" num_accs BIGINT,\n",
" balance_usd DOUBLE,\n",
" available_balance_usd DOUBLE,\n",
" is_pre_paid BIGINT,\n",
" number_payment_delays_last12mo BIGINT,\n",
" pct_increase_annual_number_of_delays_last_3_year BIGINT,\n",
" phone_bill_amt DOUBLE,\n",
" avg_phone_bill_amt_lst12mo DOUBLE,\n",
" dist_payer_cnt_12m BIGINT,\n",
" sent_txn_cnt_12m BIGINT,\n",
" sent_txn_amt_12m DOUBLE,\n",
" sent_amt_avg_12m DOUBLE,\n",
" dist_payee_cnt_12m BIGINT,\n",
" rcvd_txn_cnt_12m BIGINT,\n",
" rcvd_txn_amt_12m DOUBLE,\n",
" rcvd_amt_avg_12m DOUBLE,\n",
" dist_payer_cnt_6m BIGINT,\n",
" sent_txn_cnt_6m BIGINT,\n",
" sent_txn_amt_6m DOUBLE,\n",
" sent_amt_avg_6m DOUBLE,\n",
" dist_payee_cnt_6m BIGINT,\n",
" rcvd_txn_cnt_6m BIGINT,\n",
" rcvd_txn_amt_6m DOUBLE,\n",
" rcvd_amt_avg_6m DOUBLE,\n",
" dist_payer_cnt_3m BIGINT,\n",
" sent_txn_cnt_3m BIGINT,\n",
" sent_txn_amt_3m DOUBLE,\n",
" sent_amt_avg_3m DOUBLE,\n",
" dist_payee_cnt_3m BIGINT,\n",
" rcvd_txn_cnt_3m BIGINT,\n",
" rcvd_txn_amt_3m DOUBLE,\n",
" rcvd_amt_avg_3m DOUBLE,\n",
" tot_txn_cnt_12m BIGINT,\n",
" tot_txn_amt_12m DOUBLE,\n",
" tot_txn_cnt_6m BIGINT,\n",
" tot_txn_amt_6m DOUBLE,\n",
" tot_txn_cnt_3m BIGINT,\n",
" tot_txn_amt_3m DOUBLE,\n",
" ratio_txn_amt_3m_12m DOUBLE,\n",
" ratio_txn_amt_6m_12m DOUBLE,\n",
" gender STRING,\n",
" first_name STRING,\n",
" last_name STRING,\n",
" email STRING,\n",
" mobile_phone STRING,\n",
" AMT_CREDIT_MAX_OVERDUE BIGINT,\n",
" AMT_CREDIT_SUM BIGINT,\n",
" AMT_CREDIT_SUM_DEBT BIGINT,\n",
" AMT_CREDIT_SUM_LIMIT BIGINT,\n",
" AMT_CREDIT_SUM_OVERDUE BIGINT,\n",
" CNT_CREDIT_PROLONG BIGINT,\n",
" CREDIT_ACTIVE BIGINT,\n",
" DAYS_CREDIT BIGINT,\n",
" DAYS_CREDIT_ENDDATE BIGINT,\n",
" DAYS_ENDDATE_FACT BIGINT,\n",
" SK_BUREAU_ID BIGINT,\n",
" SK_ID_CURR BIGINT,\n",
" defaulted INT,\n",
" default_prob DOUBLE,\n",
" prediction INT,\n",
" education_shap DOUBLE,\n",
" marital_status_shap DOUBLE,\n",
" months_current_address_shap DOUBLE,\n",
" months_employment_shap DOUBLE,\n",
" is_resident_shap DOUBLE,\n",
" tenure_months_shap DOUBLE,\n",
" product_cnt_shap DOUBLE,\n",
" tot_rel_bal_shap DOUBLE,\n",
" revenue_tot_shap DOUBLE,\n",
" revenue_12m_shap DOUBLE,\n",
" income_annual_shap DOUBLE,\n",
" tot_assets_shap DOUBLE,\n",
" overdraft_balance_amount_shap DOUBLE,\n",
" overdraft_number_shap DOUBLE,\n",
" total_deposits_number_shap DOUBLE,\n",
" total_deposits_amount_shap DOUBLE,\n",
" total_equity_amount_shap DOUBLE,\n",
" total_UT_shap DOUBLE,\n",
" customer_revenue_shap DOUBLE,\n",
" age_shap DOUBLE,\n",
" avg_balance_shap DOUBLE,\n",
" num_accs_shap DOUBLE,\n",
" balance_usd_shap DOUBLE,\n",
" available_balance_usd_shap DOUBLE,\n",
" is_pre_paid_shap DOUBLE,\n",
" number_payment_delays_last12mo_shap DOUBLE,\n",
" pct_increase_annual_number_of_delays_last_3_year_shap DOUBLE,\n",
" phone_bill_amt_shap DOUBLE,\n",
" avg_phone_bill_amt_lst12mo_shap DOUBLE,\n",
" dist_payer_cnt_12m_shap DOUBLE,\n",
" sent_txn_cnt_12m_shap DOUBLE,\n",
" sent_txn_amt_12m_shap DOUBLE,\n",
" sent_amt_avg_12m_shap DOUBLE,\n",
" dist_payee_cnt_12m_shap DOUBLE,\n",
" rcvd_txn_cnt_12m_shap DOUBLE,\n",
" rcvd_txn_amt_12m_shap DOUBLE,\n",
" rcvd_amt_avg_12m_shap DOUBLE,\n",
" dist_payer_cnt_6m_shap DOUBLE,\n",
" sent_txn_cnt_6m_shap DOUBLE,\n",
" sent_txn_amt_6m_shap DOUBLE,\n",
" sent_amt_avg_6m_shap DOUBLE,\n",
" dist_payee_cnt_6m_shap DOUBLE,\n",
" rcvd_txn_cnt_6m_shap DOUBLE,\n",
" rcvd_txn_amt_6m_shap DOUBLE,\n",
" rcvd_amt_avg_6m_shap DOUBLE,\n",
" dist_payer_cnt_3m_shap DOUBLE,\n",
" sent_txn_cnt_3m_shap DOUBLE,\n",
" sent_txn_amt_3m_shap DOUBLE,\n",
" sent_amt_avg_3m_shap DOUBLE,\n",
" dist_payee_cnt_3m_shap DOUBLE,\n",
" rcvd_txn_cnt_3m_shap DOUBLE,\n",
" rcvd_txn_amt_3m_shap DOUBLE,\n",
" rcvd_amt_avg_3m_shap DOUBLE,\n",
" tot_txn_cnt_12m_shap DOUBLE,\n",
" tot_txn_amt_12m_shap DOUBLE,\n",
" tot_txn_cnt_6m_shap DOUBLE,\n",
" tot_txn_amt_6m_shap DOUBLE,\n",
" tot_txn_cnt_3m_shap DOUBLE,\n",
" tot_txn_amt_3m_shap DOUBLE,\n",
" ratio_txn_amt_3m_12m_shap DOUBLE,\n",
" ratio_txn_amt_6m_12m_shap DOUBLE\n",
")\n",
"LANGUAGE SQL\n",
"COMMENT 'This function takes in a customer id and returns all columns from the shap_explanation table for the given customer id'\n",
"RETURN\n",
"(SELECT * FROM pavithra_rao.credit_decisioning.shap_explanation WHERE cust_id = customer_id)"
]
},
{
"cell_type": "code",
"execution_count": 0,
"metadata": {
"application/vnd.databricks.v1+cell": {
"cellMetadata": {
"byteLimit": 2048000,
"implicitDf": true,
"rowLimit": 10000
},
"inputWidgets": {},
"nuid": "2482dcc9-d93b-4788-a61a-0aae55570b42",
"showTitle": false,
"tableResultSettingsMap": {},
"title": ""
}
},
"outputs": [],
"source": [
"%sql\n",
"SELECT * FROM pavithra_rao.credit_decisioning.explain_model_shap(5451)"
]
}
],
"metadata": {
"application/vnd.databricks.v1+notebook": {
"computePreferences": {
"hardware": {
"accelerator": null,
"gpuPoolId": null,
"memory": "HIGH"
}
},
"dashboards": [],
"environmentMetadata": {
"base_environment": "",
"environment_version": "2"
},
"inputWidgetPreferences": null,
"language": "python",
"notebookMetadata": {
"mostRecentlyExecutedCommandWithImplicitDF": {
"commandId": 2860937171370624,
"dataframes": [
"_sqldf"
]
},
"pythonIndentUnit": 2
},
"notebookName": "06.1-ai-agent-tools-credit-decision-advisor-rai",
"widgets": {}
},
"language_info": {
"name": "python"
}
},
"nbformat": 4,
"nbformat_minor": 0
}
Loading