Joshua Sundance Bailey
commited on
Commit
·
e9f7a77
1
Parent(s):
ba7b2f8
state
Browse files- 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 =
|
60 |
-
|
|
|
|
|
|
|
|
|
61 |
default_values.DEFAULT_LANGSMITH_PROJECT or "langchain-streamlit-demo"
|
62 |
)
|
63 |
-
|
64 |
-
|
65 |
-
|
66 |
-
|
67 |
-
|
68 |
-
|
69 |
-
|
70 |
-
|
71 |
-
|
72 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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 =
|
|
|
|
|
|
|
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 =
|
218 |
-
|
219 |
-
|
220 |
-
|
221 |
-
|
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 |
|