Skip to content
Snippets Groups Projects
Unverified Commit 4e350d01 authored by Noah Moss's avatar Noah Moss Committed by GitHub
Browse files

Read is-metabot-enabled setting from env var only (#31827)


* read is-metabot-enabled setting from env var only

* change visibility back to public

* skip metabot specs

* skip one more spec

* fix BE tests

* fix indentation

* more indentation

---------

Co-authored-by: default avatarAleksandr Lesnenko <alxnddr@gmail.com>
parent 5ba1b69e
No related branches found
No related tags found
No related merge requests found
......@@ -322,7 +322,7 @@ describe("scenarios > question > native", () => {
).as("databasePrompt");
});
it("allows generate sql queries from natural language prompts", () => {
it.skip("allows generate sql queries from natural language prompts", () => {
cy.intercept(
"POST",
"/api/metabot/database/**/query",
......@@ -347,7 +347,7 @@ describe("scenarios > question > native", () => {
cy.findByDisplayValue(PROMPT).should("not.exist");
});
it("shows an error when an sql query cannot be generated", () => {
it.skip("shows an error when an sql query cannot be generated", () => {
const errorMessage = "Could not generate a query for a given prompt";
cy.intercept("POST", "/api/metabot/database/**/query", {
body: {
......
......@@ -49,7 +49,7 @@ const PROMPT_RESPONSE = {
prompt_template_versions: [],
};
describe("scenarios > metabot", () => {
describe.skip("scenarios > metabot", () => {
beforeEach(() => {
restore();
cy.signInAsAdmin();
......@@ -113,7 +113,7 @@ describe("scenarios > metabot", () => {
});
});
describeWithSnowplow("scenarios > metabot", () => {
describeWithSnowplow.skip("scenarios > metabot", () => {
beforeEach(() => {
restore();
resetSnowplow();
......
(ns metabase.metabot.settings
(:require
[clojure.core.memoize :as memoize]
[metabase.models.setting :refer [defsetting]]
[metabase.models.setting :as setting :refer [defsetting]]
[metabase.util :as u]
[metabase.util.i18n :refer [deferred-tru]]
[metabase.util.log :as log]
......@@ -39,6 +39,8 @@
(deferred-tru "Is Metabot enabled?")
:type :boolean
:visibility :public
:getter (fn []
(boolean (setting/env-var-value :is-metabot-enabled)))
:default false)
(defsetting num-metabot-choices
......
......@@ -13,7 +13,7 @@
(deftest metabot-only-works-on-models-test
(testing "POST /api/metabot/model/:model-id won't work for a table endpoint"
(mt/with-temporary-setting-values [is-metabot-enabled true]
(mt/with-temp-env-var-value [mb-is-metabot-enabled true]
(mt/dataset sample-dataset
(let [q "At what time was the status closed for each user?"
response (mt/user-http-request :rasta :post 404
......@@ -23,15 +23,15 @@
(deftest metabot-model-happy-path-test
(testing "POST /api/metabot/model/:model-id happy path"
(mt/with-temporary-setting-values [is-metabot-enabled true]
(mt/with-temp-env-var-value [mb-is-metabot-enabled true]
(mt/dataset sample-dataset
(t2.with-temp/with-temp
[Card orders-model {:name "Orders Model"
:dataset_query
{:database (mt/id)
:type :query
:query {:source-table (mt/id :orders)}}
:dataset true}]
[Card orders-model {:name "Orders Model"
:dataset_query
{:database (mt/id)
:type :query
:query {:source-table (mt/id :orders)}}
:dataset true}]
(let [bot-message (format
"You should do ```SELECT COUNT(*) FROM %s``` to do that."
(metabot-util/normalize-name (:name orders-model)))
......@@ -52,15 +52,15 @@
(deftest metabot-model-sad-path-test
(testing "POST /api/metabot/model/:model-id produces a message when no SQL is found"
(mt/with-temporary-setting-values [is-metabot-enabled true]
(mt/with-temp-env-var-value [mb-is-metabot-enabled true]
(mt/dataset sample-dataset
(t2.with-temp/with-temp
[Card orders-model {:name "Orders Model"
:dataset_query
{:database (mt/id)
:type :query
:query {:source-table (mt/id :orders)}}
:dataset true}]
[Card orders-model {:name "Orders Model"
:dataset_query
{:database (mt/id)
:type :query
:query {:source-table (mt/id :orders)}}
:dataset true}]
(let [bot-message "IDK what to do here"
q "How many orders do I have?"]
(with-redefs [metabot-client/*create-chat-completion-endpoint* (metabot-test/test-bot-endpoint-single-message bot-message)
......@@ -73,15 +73,15 @@
(deftest metabot-database-happy-path-test
(testing "POST /api/metabot/database/:database-id happy path"
(mt/with-temporary-setting-values [is-metabot-enabled true]
(mt/with-temp-env-var-value [mb-is-metabot-enabled true]
(mt/dataset sample-dataset
(t2.with-temp/with-temp
[Card orders-model {:name "Orders Model"
:dataset_query
{:database (mt/id)
:type :query
:query {:source-table (mt/id :orders)}}
:dataset true}]
[Card orders-model {:name "Orders Model"
:dataset_query
{:database (mt/id)
:type :query
:query {:source-table (mt/id :orders)}}
:dataset true}]
(let [bot-model-selection (format "The best model is %s" (:id orders-model))
bot-sql-response (format "you should do ```SELECT COUNT(*) FROM %s``` to do that."
(metabot-util/normalize-name (:name orders-model)))
......@@ -103,15 +103,15 @@
(deftest metabot-database-no-model-found-test
(testing "With embeddings, you'll always get _some_ model, unless there aren't any at all."
(mt/with-temporary-setting-values [is-metabot-enabled true]
(mt/with-temp-env-var-value [mb-is-metabot-enabled true]
(mt/dataset sample-dataset
(t2.with-temp/with-temp
[Card _orders-model {:name "Not a model"
:dataset_query
{:database (mt/id)
:type :query
:query {:source-table (mt/id :orders)}}
:dataset false}]
[Card _orders-model {:name "Not a model"
:dataset_query
{:database (mt/id)
:type :query
:query {:source-table (mt/id :orders)}}
:dataset false}]
(let [bot-message "Your prompt needs more details..."
q "A not useful prompt"]
(with-redefs [metabot-client/*create-chat-completion-endpoint* (metabot-test/test-bot-endpoint-single-message bot-message)
......@@ -124,15 +124,15 @@
(deftest metabot-database-no-sql-found-test
(testing "When we can't find sql from the selected model, we return a message"
(mt/with-temporary-setting-values [is-metabot-enabled true]
(mt/with-temp-env-var-value [mb-is-metabot-enabled true]
(mt/dataset sample-dataset
(t2.with-temp/with-temp
[Card orders-model {:name "Orders Model"
:dataset_query
{:database (mt/id)
:type :query
:query {:source-table (mt/id :orders)}}
:dataset true}]
[Card orders-model {:name "Orders Model"
:dataset_query
{:database (mt/id)
:type :query
:query {:source-table (mt/id :orders)}}
:dataset true}]
(let [bot-message (format
"Part 1 is %s but part 2 doesn't return SQL."
(:id orders-model))
......@@ -147,16 +147,16 @@
(deftest openai-40X-test
;; We can use the metabot-client/bot-endpoint redefs to simulate various failure modes in the bot server
(mt/with-temporary-setting-values [is-metabot-enabled true]
(mt/with-temp-env-var-value [mb-is-metabot-enabled true]
(testing "Too many requests returns a useful message"
(mt/dataset sample-dataset
(t2.with-temp/with-temp
[Card _ {:name "Orders Model"
:dataset_query
{:database (mt/id)
:type :query
:query {:source-table (mt/id :orders)}}
:dataset true}]
[Card _ {:name "Orders Model"
:dataset_query
{:database (mt/id)
:type :query
:query {:source-table (mt/id :orders)}}
:dataset true}]
(with-redefs [metabot-client/*create-chat-completion-endpoint* (fn [_ _]
(throw (ex-info
"Too many requests"
......@@ -171,12 +171,12 @@
(testing "Not having the right API keys set returns a useful message"
(mt/dataset sample-dataset
(t2.with-temp/with-temp
[Card _ {:name "Orders Model"
:dataset_query
{:database (mt/id)
:type :query
:query {:source-table (mt/id :orders)}}
:dataset true}]
[Card _ {:name "Orders Model"
:dataset_query
{:database (mt/id)
:type :query
:query {:source-table (mt/id :orders)}}
:dataset true}]
(with-redefs [metabot-client/*create-chat-completion-endpoint* (fn [_ _]
(throw (ex-info
"Unauthorized"
......@@ -218,7 +218,7 @@
(deftest metabot-infer-native-sql-test
(testing "POST /database/:database-id/query"
(mt/with-temporary-setting-values [is-metabot-enabled true]
(mt/with-temp-env-var-value [mb-is-metabot-enabled true]
(mt/dataset sample-dataset
(mt/with-temp* [Card [_orders-model
{:name "Orders Model"
......
......@@ -53,14 +53,14 @@
(deftest infer-sql-test
(testing "Test the 'plumbing' of the infer-sql function. The actual invocation of the remote bot is dynamically rebound."
(mt/with-temporary-setting-values [is-metabot-enabled true]
(mt/with-temp-env-var-value [mb-is-metabot-enabled true]
(mt/dataset sample-dataset
(t2.with-temp/with-temp
[Card model {:dataset_query
{:database (mt/id)
:type :query
:query {:source-table (mt/id :orders)}}
:dataset true}]
[Card model {:dataset_query
{:database (mt/id)
:type :query
:query {:source-table (mt/id :orders)}}
:dataset true}]
(let [bot-sql (format "SELECT * FROM %s" (:name model))]
(with-redefs [metabot-client/*create-chat-completion-endpoint* (test-bot-endpoint-single-message bot-sql)
metabot-client/*create-embedding-endpoint* simple-embedding-stub
......@@ -79,27 +79,27 @@
(deftest infer-model-test
(testing "Test the 'plumbing' of the infer-model function. The actual invocation of the remote bot is dynamically rebound."
(mt/with-temporary-setting-values [is-metabot-enabled true]
(mt/with-temp-env-var-value [mb-is-metabot-enabled true]
(mt/dataset sample-dataset
(t2.with-temp/with-temp
[Card orders-model {:name "Orders Model"
:dataset_query
{:database (mt/id)
:type :query
:query {:source-table (mt/id :orders)}}
:dataset true}
Card _people-model {:name "People Model"
[Card orders-model {:name "Orders Model"
:dataset_query
{:database (mt/id)
:type :query
:query {:source-table (mt/id :people)}}
:query {:source-table (mt/id :orders)}}
:dataset true}
Card _products-model {:name "Products Model"
:dataset_query
{:database (mt/id)
:type :query
:query {:source-table (mt/id :products)}}
:dataset true}]
Card _people-model {:name "People Model"
:dataset_query
{:database (mt/id)
:type :query
:query {:source-table (mt/id :people)}}
:dataset true}
Card _products-model {:name "Products Model"
:dataset_query
{:database (mt/id)
:type :query
:query {:source-table (mt/id :products)}}
:dataset true}]
(let [user_prompt "Show me all of my orders data"
db (t2/select-one Database :id (mt/id))
{:keys [models] :as denormalized-db} (metabot-util/denormalize-database db)
......@@ -127,7 +127,7 @@
(deftest infer-native-sql-test
(testing "Test the 'plumbing' of the infer-native-sql function. The actual invocation of the remote bot is dynamically rebound."
(mt/with-temporary-setting-values [is-metabot-enabled true]
(mt/with-temp-env-var-value [mb-is-metabot-enabled true]
(mt/dataset sample-dataset
(let [user_prompt "Show me all of my reviews data"
context {:database (metabot-util/denormalize-database (mt/db))
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment