4545
4646
4747# This is used to define the app blueprint using a productConfig
48- def construct_blueprint (product_config : config .ProductConfig ):
48+ def construct_blueprint (product_config : config .ProductConfig , app_mode : str = None ):
4949 bp = Blueprint ("chatui" , __name__ )
5050 if product_config .db_type == "google_semantic_retriever" :
5151 docs_agent = DocsAgent (config = product_config , init_chroma = False )
5252 else :
5353 docs_agent = DocsAgent (config = product_config )
54- logging .info (f"Launching the flask app for product: { product_config .product_name } " )
54+ logging .info (f"Launching the Flask app for product: { product_config .product_name } with app_mode: { app_mode } " )
55+ # Assign templates and redirects
56+ if app_mode == "web" :
57+ app_template = "chatui/index.html"
58+ redirect_index = "chatui.index"
59+ elif app_mode == "experimental" :
60+ app_template = "chatui-experimental/index.html"
61+ redirect_index = "chatui-experimental.index"
62+ elif app_mode == "widget" :
63+ app_template = "chat-widget/index.html"
64+ redirect_index = "chat-widget.index"
65+ else :
66+ app_template = "chatui/index.html"
67+ redirect_index = "chatui.index"
5568
5669 @bp .route ("/" , methods = ["GET" , "POST" ])
5770 def index ():
5871 server_url = request .url_root .replace ("http" , "https" )
5972 return render_template (
60- "chatui/index.html" ,
73+ app_template ,
6174 product = product_config .product_name ,
6275 server_url = server_url ,
6376 )
@@ -73,7 +86,7 @@ def api():
7386 context ,
7487 sources_ref ,
7588 plain_token ,
76- ) = ask_model_2_with_sources (input ["question" ], agent = docs_agent )
89+ ) = ask_model_with_sources (input ["question" ], agent = docs_agent )
7790 source_array = []
7891 for source in sources_ref :
7992 source_array .append (source .returnDictionary ())
@@ -100,7 +113,7 @@ def like():
100113 log_like (is_like , str (uuid_found ).strip ())
101114 return "OK"
102115 else :
103- return redirect (url_for ("chatui.index" ))
116+ return redirect (url_for (redirect_index ))
104117
105118 @bp .route ("/rewrite" , methods = ["GET" , "POST" ])
106119 def rewrite ():
@@ -149,54 +162,35 @@ def rewrite():
149162 file .close ()
150163 return "OK"
151164 else :
152- if product_config .docs_agent_config == "experimental" :
153- return redirect (url_for ("chatui.index_experimental" ))
154- elif product_config .docs_agent_config == "normal" :
155- return redirect (url_for ("chatui.index" ))
165+ return redirect (url_for (redirect_index ))
156166
157167 # Render a response page when the user asks a question
158168 # using input text box.
159169 @bp .route ("/result" , methods = ["GET" , "POST" ])
160170 def result ():
161171 if request .method == "POST" :
162172 question = request .form ["question" ]
163- if product_config .docs_agent_config == "experimental" :
164- return ask_model2 (question , agent = docs_agent , template = "chatui/index_experimental.html" )
165- elif product_config .docs_agent_config == "normal" :
166- return ask_model2 (
167- question , agent = docs_agent , template = "chatui/index.html"
168- )
173+ return ask_model (question , agent = docs_agent , template = app_template )
169174 else :
170- if product_config .docs_agent_config == "experimental" :
171- return redirect (url_for ("chatui.index_experimental" ))
172- elif product_config .docs_agent_config == "normal" :
173- return redirect (url_for ("chatui.index" ))
175+ return redirect (url_for (redirect_index ))
174176
175177 # Render a response page when the user clicks a question
176178 # from the related questions list.
177179 @bp .route ("/question/<ask>" , methods = ["GET" , "POST" ])
178180 def question (ask ):
179181 if request .method == "GET" :
180182 question = urllib .parse .unquote_plus (ask )
181- if product_config .docs_agent_config == "experimental" :
182- return ask_model2 (question , agent = docs_agent , template = "chatui/index_experimental.html" )
183- elif product_config .docs_agent_config == "normal" :
184- return ask_model2 (
185- question , agent = docs_agent , template = "chatui/index.html"
186- )
183+ return ask_model (question , agent = docs_agent , template = app_template )
187184 else :
188- if product_config .docs_agent_config == "experimental" :
189- return redirect (url_for ("chatui.index_expiremental" ))
190- elif product_config .docs_agent_config == "normal" :
191- return redirect (url_for ("chatui.index" ))
185+ return redirect (url_for (redirect_index ))
192186
193187 return bp
194188
195189
196190# Construct a set of prompts using the user question, send the prompts to
197191# the lanaguage model, receive responses, and present them into a page.
198192# Use template to specify a custom template for the classic web UI
199- def ask_model2 (question , agent , template : str = "chatui/index.html" ):
193+ def ask_model (question , agent , template : str = "chatui/index.html" ):
200194 # Returns a built context, a total token count of the context and an array
201195 # of sourceOBJ
202196 full_prompt = ""
@@ -307,7 +301,7 @@ def ask_model2(question, agent, template: str = "chatui/index.html"):
307301# Not fully implemented
308302# This method is used for the API endpoint, so it returns values that can be
309303# packaged as JSON
310- def ask_model_2_with_sources (question , agent ):
304+ def ask_model_with_sources (question , agent ):
311305 docs_agent = agent
312306 full_prompt = ""
313307 context , plain_token , sources_ref = docs_agent .query_vector_store_to_build (
0 commit comments