Joshua Sundance Bailey commited on
Commit
e9f7a77
·
1 Parent(s): ba7b2f8
Files changed (1) hide show
  1. langchain-streamlit-demo/app.py +82 -57
langchain-streamlit-demo/app.py CHANGED
@@ -45,6 +45,15 @@ st_init_null(
45
  "run",
46
  "run_id",
47
  "trace_link",
 
 
 
 
 
 
 
 
 
48
  )
49
 
50
  # --- LLM globals ---
@@ -54,41 +63,60 @@ MEMORY = ConversationBufferMemory(
54
  return_messages=True,
55
  memory_key="chat_history",
56
  )
 
57
  RUN_COLLECTOR = RunCollectorCallbackHandler()
58
 
59
- LANGSMITH_API_KEY = default_values.PROVIDER_KEY_DICT.get("LANGSMITH")
60
- LANGSMITH_PROJECT = (
 
 
 
 
61
  default_values.DEFAULT_LANGSMITH_PROJECT or "langchain-streamlit-demo"
62
  )
63
- AZURE_OPENAI_BASE_URL = default_values.AZURE_DICT["AZURE_OPENAI_BASE_URL"]
64
- AZURE_OPENAI_API_VERSION = default_values.AZURE_DICT["AZURE_OPENAI_API_VERSION"]
65
- AZURE_OPENAI_DEPLOYMENT_NAME = default_values.AZURE_DICT["AZURE_OPENAI_DEPLOYMENT_NAME"]
66
- AZURE_OPENAI_EMB_DEPLOYMENT_NAME = default_values.AZURE_DICT[
67
- "AZURE_OPENAI_EMB_DEPLOYMENT_NAME"
68
- ]
69
- AZURE_OPENAI_API_KEY = default_values.AZURE_DICT["AZURE_OPENAI_API_KEY"]
70
- AZURE_OPENAI_MODEL_VERSION = default_values.AZURE_DICT["AZURE_OPENAI_MODEL_VERSION"]
71
-
72
- AZURE_AVAILABLE = all(
 
 
 
 
 
 
 
 
 
 
 
73
  [
74
- AZURE_OPENAI_BASE_URL,
75
- AZURE_OPENAI_API_VERSION,
76
- AZURE_OPENAI_DEPLOYMENT_NAME,
77
- AZURE_OPENAI_API_KEY,
78
- AZURE_OPENAI_MODEL_VERSION,
79
  ],
80
  )
81
 
82
- AZURE_EMB_AVAILABLE = AZURE_AVAILABLE and AZURE_OPENAI_EMB_DEPLOYMENT_NAME
 
 
 
83
 
84
  AZURE_KWARGS = (
85
  None
86
- if not AZURE_EMB_AVAILABLE
87
  else {
88
- "openai_api_base": AZURE_OPENAI_BASE_URL,
89
- "openai_api_version": AZURE_OPENAI_API_VERSION,
90
- "deployment": AZURE_OPENAI_EMB_DEPLOYMENT_NAME,
91
- "openai_api_key": AZURE_OPENAI_API_KEY,
92
  "openai_api_type": "azure",
93
  }
94
  )
@@ -214,17 +242,14 @@ with sidebar:
214
  help=chain_type_help,
215
  disabled=not document_chat,
216
  )
217
- use_azure = False
218
-
219
- if AZURE_EMB_AVAILABLE:
220
- use_azure = st.toggle(
221
- label="Use Azure OpenAI",
222
- value=AZURE_EMB_AVAILABLE,
223
- help="Use Azure for embeddings instead of using OpenAI directly.",
224
- )
225
 
226
  if uploaded_file:
227
- if AZURE_EMB_AVAILABLE or openai_api_key:
228
  (
229
  st.session_state.texts,
230
  st.session_state.retriever,
@@ -276,59 +301,59 @@ with sidebar:
276
  # --- LangSmith Options ---
277
  if default_values.SHOW_LANGSMITH_OPTIONS:
278
  with st.expander("LangSmith Options", expanded=False):
279
- LANGSMITH_API_KEY = st.text_input(
280
  "LangSmith API Key (optional)",
281
- value=LANGSMITH_API_KEY,
282
  type="password",
283
  )
284
 
285
- LANGSMITH_PROJECT = st.text_input(
286
  "LangSmith Project Name",
287
- value=LANGSMITH_PROJECT,
288
  )
289
 
290
- if st.session_state.client is None and LANGSMITH_API_KEY:
291
  st.session_state.client = Client(
292
  api_url="https://api.smith.langchain.com",
293
- api_key=LANGSMITH_API_KEY,
294
  )
295
  st.session_state.ls_tracer = LangChainTracer(
296
- project_name=LANGSMITH_PROJECT,
297
  client=st.session_state.client,
298
  )
299
 
300
  # --- Azure Options ---
301
  if default_values.SHOW_AZURE_OPTIONS:
302
  with st.expander("Azure Options", expanded=False):
303
- AZURE_OPENAI_BASE_URL = st.text_input(
304
  "AZURE_OPENAI_BASE_URL",
305
- value=AZURE_OPENAI_BASE_URL,
306
  )
307
 
308
- AZURE_OPENAI_API_VERSION = st.text_input(
309
  "AZURE_OPENAI_API_VERSION",
310
- value=AZURE_OPENAI_API_VERSION,
311
  )
312
 
313
- AZURE_OPENAI_DEPLOYMENT_NAME = st.text_input(
314
  "AZURE_OPENAI_DEPLOYMENT_NAME",
315
- value=AZURE_OPENAI_DEPLOYMENT_NAME,
316
  )
317
 
318
- AZURE_OPENAI_EMB_DEPLOYMENT_NAME = st.text_input(
319
  "AZURE_OPENAI_EMB_DEPLOYMENT_NAME",
320
- value=AZURE_OPENAI_EMB_DEPLOYMENT_NAME,
321
  )
322
 
323
- AZURE_OPENAI_API_KEY = st.text_input(
324
  "AZURE_OPENAI_API_KEY",
325
- value=AZURE_OPENAI_API_KEY,
326
  type="password",
327
  )
328
 
329
- AZURE_OPENAI_MODEL_VERSION = st.text_input(
330
  "AZURE_OPENAI_MODEL_VERSION",
331
- value=AZURE_OPENAI_MODEL_VERSION,
332
  )
333
 
334
 
@@ -339,13 +364,13 @@ st.session_state.llm = get_llm(
339
  provider_api_key=provider_api_key,
340
  temperature=temperature,
341
  max_tokens=max_tokens,
342
- azure_available=AZURE_AVAILABLE,
343
  azure_dict={
344
- "AZURE_OPENAI_BASE_URL": AZURE_OPENAI_BASE_URL,
345
- "AZURE_OPENAI_API_VERSION": AZURE_OPENAI_API_VERSION,
346
- "AZURE_OPENAI_DEPLOYMENT_NAME": AZURE_OPENAI_DEPLOYMENT_NAME,
347
- "AZURE_OPENAI_API_KEY": AZURE_OPENAI_API_KEY,
348
- "AZURE_OPENAI_MODEL_VERSION": AZURE_OPENAI_MODEL_VERSION,
349
  },
350
  )
351
 
 
45
  "run",
46
  "run_id",
47
  "trace_link",
48
+ "LANGSMITH_API_KEY",
49
+ "LANGSMITH_PROJECT",
50
+ "AZURE_OPENAI_BASE_URL",
51
+ "AZURE_OPENAI_API_VERSION",
52
+ "AZURE_OPENAI_DEPLOYMENT_NAME",
53
+ "AZURE_OPENAI_EMB_DEPLOYMENT_NAME",
54
+ "AZURE_OPENAI_API_KEY",
55
+ "AZURE_OPENAI_MODEL_VERSION",
56
+ "AZURE_AVAILABLE",
57
  )
58
 
59
  # --- LLM globals ---
 
63
  return_messages=True,
64
  memory_key="chat_history",
65
  )
66
+
67
  RUN_COLLECTOR = RunCollectorCallbackHandler()
68
 
69
+ st.session_state.LANGSMITH_API_KEY = (
70
+ st.session_state.LANGSMITH_API_KEY
71
+ or default_values.PROVIDER_KEY_DICT.get("LANGSMITH")
72
+ )
73
+
74
+ st.session_state.LANGSMITH_PROJECT = st.session_state.LANGSMITH_PROJECT or (
75
  default_values.DEFAULT_LANGSMITH_PROJECT or "langchain-streamlit-demo"
76
  )
77
+
78
+
79
+ def azure_state_or_default(*args):
80
+ st.session_state.update(
81
+ {
82
+ arg: st.session_state.get(arg) or default_values.AZURE_DICT.get(arg)
83
+ for arg in args
84
+ },
85
+ )
86
+
87
+
88
+ azure_state_or_default(
89
+ "AZURE_OPENAI_BASE_URL",
90
+ "AZURE_OPENAI_API_VERSION",
91
+ "AZURE_OPENAI_DEPLOYMENT_NAME",
92
+ "AZURE_OPENAI_EMB_DEPLOYMENT_NAME",
93
+ "AZURE_OPENAI_API_KEY",
94
+ "AZURE_OPENAI_MODEL_VERSION",
95
+ )
96
+
97
+ st.session_state.AZURE_AVAILABLE = all(
98
  [
99
+ st.session_state.AZURE_OPENAI_BASE_URL,
100
+ st.session_state.AZURE_OPENAI_API_VERSION,
101
+ st.session_state.AZURE_OPENAI_DEPLOYMENT_NAME,
102
+ st.session_state.AZURE_OPENAI_API_KEY,
103
+ st.session_state.AZURE_OPENAI_MODEL_VERSION,
104
  ],
105
  )
106
 
107
+ st.session_state.AZURE_EMB_AVAILABLE = (
108
+ st.session_state.AZURE_AVAILABLE
109
+ and st.session_state.AZURE_OPENAI_EMB_DEPLOYMENT_NAME
110
+ )
111
 
112
  AZURE_KWARGS = (
113
  None
114
+ if not st.session_state.AZURE_EMB_AVAILABLE
115
  else {
116
+ "openai_api_base": st.session_state.AZURE_OPENAI_BASE_URL,
117
+ "openai_api_version": st.session_state.AZURE_OPENAI_API_VERSION,
118
+ "deployment": st.session_state.AZURE_OPENAI_EMB_DEPLOYMENT_NAME,
119
+ "openai_api_key": st.session_state.AZURE_OPENAI_API_KEY,
120
  "openai_api_type": "azure",
121
  }
122
  )
 
242
  help=chain_type_help,
243
  disabled=not document_chat,
244
  )
245
+ use_azure = st.toggle(
246
+ label="Use Azure OpenAI",
247
+ value=st.session_state.AZURE_EMB_AVAILABLE,
248
+ help="Use Azure for embeddings instead of using OpenAI directly.",
249
+ )
 
 
 
250
 
251
  if uploaded_file:
252
+ if st.session_state.AZURE_EMB_AVAILABLE or openai_api_key:
253
  (
254
  st.session_state.texts,
255
  st.session_state.retriever,
 
301
  # --- LangSmith Options ---
302
  if default_values.SHOW_LANGSMITH_OPTIONS:
303
  with st.expander("LangSmith Options", expanded=False):
304
+ st.session_state.LANGSMITH_API_KEY = st.text_input(
305
  "LangSmith API Key (optional)",
306
+ value=st.session_state.LANGSMITH_API_KEY,
307
  type="password",
308
  )
309
 
310
+ st.session_state.LANGSMITH_PROJECT = st.text_input(
311
  "LangSmith Project Name",
312
+ value=st.session_state.LANGSMITH_PROJECT,
313
  )
314
 
315
+ if st.session_state.client is None and st.session_state.LANGSMITH_API_KEY:
316
  st.session_state.client = Client(
317
  api_url="https://api.smith.langchain.com",
318
+ api_key=st.session_state.LANGSMITH_API_KEY,
319
  )
320
  st.session_state.ls_tracer = LangChainTracer(
321
+ project_name=st.session_state.LANGSMITH_PROJECT,
322
  client=st.session_state.client,
323
  )
324
 
325
  # --- Azure Options ---
326
  if default_values.SHOW_AZURE_OPTIONS:
327
  with st.expander("Azure Options", expanded=False):
328
+ st.session_state.AZURE_OPENAI_BASE_URL = st.text_input(
329
  "AZURE_OPENAI_BASE_URL",
330
+ value=st.session_state.AZURE_OPENAI_BASE_URL,
331
  )
332
 
333
+ st.session_state.AZURE_OPENAI_API_VERSION = st.text_input(
334
  "AZURE_OPENAI_API_VERSION",
335
+ value=st.session_state.AZURE_OPENAI_API_VERSION,
336
  )
337
 
338
+ st.session_state.AZURE_OPENAI_DEPLOYMENT_NAME = st.text_input(
339
  "AZURE_OPENAI_DEPLOYMENT_NAME",
340
+ value=st.session_state.AZURE_OPENAI_DEPLOYMENT_NAME,
341
  )
342
 
343
+ st.session_state.AZURE_OPENAI_EMB_DEPLOYMENT_NAME = st.text_input(
344
  "AZURE_OPENAI_EMB_DEPLOYMENT_NAME",
345
+ value=st.session_state.AZURE_OPENAI_EMB_DEPLOYMENT_NAME,
346
  )
347
 
348
+ st.session_state.AZURE_OPENAI_API_KEY = st.text_input(
349
  "AZURE_OPENAI_API_KEY",
350
+ value=st.session_state.AZURE_OPENAI_API_KEY,
351
  type="password",
352
  )
353
 
354
+ st.session_state.AZURE_OPENAI_MODEL_VERSION = st.text_input(
355
  "AZURE_OPENAI_MODEL_VERSION",
356
+ value=st.session_state.AZURE_OPENAI_MODEL_VERSION,
357
  )
358
 
359
 
 
364
  provider_api_key=provider_api_key,
365
  temperature=temperature,
366
  max_tokens=max_tokens,
367
+ azure_available=st.session_state.AZURE_AVAILABLE,
368
  azure_dict={
369
+ "AZURE_OPENAI_BASE_URL": st.session_state.AZURE_OPENAI_BASE_URL,
370
+ "AZURE_OPENAI_API_VERSION": st.session_state.AZURE_OPENAI_API_VERSION,
371
+ "AZURE_OPENAI_DEPLOYMENT_NAME": st.session_state.AZURE_OPENAI_DEPLOYMENT_NAME,
372
+ "AZURE_OPENAI_API_KEY": st.session_state.AZURE_OPENAI_API_KEY,
373
+ "AZURE_OPENAI_MODEL_VERSION": st.session_state.AZURE_OPENAI_MODEL_VERSION,
374
  },
375
  )
376