change dockerfile permissions
Browse files
Dockerfile
CHANGED
|
@@ -8,12 +8,12 @@ ENV PYTHONDONTWRITEBYTECODE=1 \
|
|
| 8 |
PATH="/home/appuser/.local/bin:$PATH"
|
| 9 |
|
| 10 |
RUN pip install --user --no-cache-dir --upgrade pip
|
| 11 |
-
COPY ./requirements.txt /home/appuser/requirements.txt
|
| 12 |
RUN pip install --user --no-cache-dir --upgrade -r /home/appuser/requirements.txt
|
| 13 |
|
| 14 |
-
COPY ./langchain-streamlit-demo/ /home/appuser/langchain-streamlit-demo/
|
| 15 |
|
| 16 |
WORKDIR /home/appuser/langchain-streamlit-demo
|
| 17 |
EXPOSE 7860
|
| 18 |
|
| 19 |
-
CMD ["streamlit", "run", "/home/appuser/langchain-streamlit-demo/app.py", "--server.port", "7860", "--server.address", "0.0.0.0"]
|
|
|
|
| 8 |
PATH="/home/appuser/.local/bin:$PATH"
|
| 9 |
|
| 10 |
RUN pip install --user --no-cache-dir --upgrade pip
|
| 11 |
+
COPY --chown=appuser ./requirements.txt /home/appuser/requirements.txt
|
| 12 |
RUN pip install --user --no-cache-dir --upgrade -r /home/appuser/requirements.txt
|
| 13 |
|
| 14 |
+
COPY --chown=appuser ./langchain-streamlit-demo/ /home/appuser/langchain-streamlit-demo/
|
| 15 |
|
| 16 |
WORKDIR /home/appuser/langchain-streamlit-demo
|
| 17 |
EXPOSE 7860
|
| 18 |
|
| 19 |
+
CMD ["streamlit", "run", "/home/appuser/langchain-streamlit-demo/app.py", "--server.port", "7860", "--server.address", "0.0.0.0", "--server.enableXsrfProtection", "false"]
|
langchain-streamlit-demo/.streamlit/config.toml
CHANGED
|
@@ -4,3 +4,7 @@ backgroundColor="#FFFFFF"
|
|
| 4 |
secondaryBackgroundColor="#F0F2F6"
|
| 5 |
textColor="#262730"
|
| 6 |
font="sans serif"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 4 |
secondaryBackgroundColor="#F0F2F6"
|
| 5 |
textColor="#262730"
|
| 6 |
font="sans serif"
|
| 7 |
+
|
| 8 |
+
[server]
|
| 9 |
+
enableCORS = false
|
| 10 |
+
enableXsrfProtection = false
|
langchain-streamlit-demo/app.py
CHANGED
|
@@ -27,8 +27,9 @@ from llm_resources import (
|
|
| 27 |
get_runnable,
|
| 28 |
get_texts_and_multiretriever,
|
| 29 |
)
|
| 30 |
-
|
| 31 |
-
from
|
|
|
|
| 32 |
from streamlit_feedback import streamlit_feedback
|
| 33 |
|
| 34 |
__version__ = "2.1.4"
|
|
@@ -248,12 +249,16 @@ with sidebar:
|
|
| 248 |
"refine",
|
| 249 |
"map_reduce",
|
| 250 |
"map_rerank",
|
| 251 |
-
"Q&A Generation",
|
| 252 |
-
"Summarization",
|
| 253 |
],
|
| 254 |
index=0,
|
| 255 |
help=chain_type_help,
|
| 256 |
)
|
|
|
|
|
|
|
|
|
|
|
|
|
| 257 |
# use_azure = st.toggle(
|
| 258 |
# label="Use Azure OpenAI",
|
| 259 |
# value=st.session_state.AZURE_EMB_AVAILABLE,
|
|
@@ -417,6 +422,8 @@ if st.session_state.llm:
|
|
| 417 |
|
| 418 |
# --- Chat Input ---
|
| 419 |
prompt = st.chat_input(placeholder="Ask me a question!")
|
|
|
|
|
|
|
| 420 |
if prompt:
|
| 421 |
st.chat_message("user").write(prompt)
|
| 422 |
feedback_update = None
|
|
@@ -458,38 +465,39 @@ if st.session_state.llm:
|
|
| 458 |
default_tools += load_tools(["requests_get"])
|
| 459 |
default_tools += load_tools(["llm-math"], llm=st.session_state.llm)
|
| 460 |
if st.session_state.provider in ("Azure OpenAI", "OpenAI"):
|
| 461 |
-
research_assistant_chain = get_research_assistant_chain(
|
| 462 |
-
|
| 463 |
-
|
| 464 |
-
)
|
| 465 |
st_callback = StreamlitCallbackHandler(st.container())
|
| 466 |
callbacks.append(st_callback)
|
| 467 |
|
| 468 |
-
@tool("web-research-assistant")
|
| 469 |
-
def research_assistant_tool(question: str, callbacks: Callbacks = None):
|
| 470 |
-
|
| 471 |
-
|
| 472 |
-
|
| 473 |
-
|
| 474 |
-
|
| 475 |
-
|
| 476 |
-
|
| 477 |
-
|
| 478 |
-
|
| 479 |
-
python_coder_agent = get_python_agent(st.session_state.llm)
|
| 480 |
-
|
| 481 |
-
@tool("python-coder-assistant")
|
| 482 |
-
def python_coder_tool(input_str: str, callbacks: Callbacks = None):
|
| 483 |
-
|
| 484 |
-
|
| 485 |
-
|
| 486 |
-
|
| 487 |
-
|
| 488 |
-
|
| 489 |
-
|
| 490 |
-
|
| 491 |
-
|
| 492 |
-
TOOLS =
|
|
|
|
| 493 |
|
| 494 |
if use_document_chat:
|
| 495 |
st.session_state.doc_chain = get_runnable(
|
|
|
|
| 27 |
get_runnable,
|
| 28 |
get_texts_and_multiretriever,
|
| 29 |
)
|
| 30 |
+
|
| 31 |
+
# from python_coder import get_agent as get_python_agent
|
| 32 |
+
# from research_assistant.chain import get_chain as get_research_assistant_chain
|
| 33 |
from streamlit_feedback import streamlit_feedback
|
| 34 |
|
| 35 |
__version__ = "2.1.4"
|
|
|
|
| 249 |
"refine",
|
| 250 |
"map_reduce",
|
| 251 |
"map_rerank",
|
| 252 |
+
# "Q&A Generation",
|
| 253 |
+
# "Summarization",
|
| 254 |
],
|
| 255 |
index=0,
|
| 256 |
help=chain_type_help,
|
| 257 |
)
|
| 258 |
+
question = st.selectbox(
|
| 259 |
+
"Choose a test question", ["--"] + default_values.TEST_QUESTIONS
|
| 260 |
+
)
|
| 261 |
+
|
| 262 |
# use_azure = st.toggle(
|
| 263 |
# label="Use Azure OpenAI",
|
| 264 |
# value=st.session_state.AZURE_EMB_AVAILABLE,
|
|
|
|
| 422 |
|
| 423 |
# --- Chat Input ---
|
| 424 |
prompt = st.chat_input(placeholder="Ask me a question!")
|
| 425 |
+
if question and question != "--":
|
| 426 |
+
prompt = question
|
| 427 |
if prompt:
|
| 428 |
st.chat_message("user").write(prompt)
|
| 429 |
feedback_update = None
|
|
|
|
| 465 |
default_tools += load_tools(["requests_get"])
|
| 466 |
default_tools += load_tools(["llm-math"], llm=st.session_state.llm)
|
| 467 |
if st.session_state.provider in ("Azure OpenAI", "OpenAI"):
|
| 468 |
+
# research_assistant_chain = get_research_assistant_chain(
|
| 469 |
+
# search_llm=get_llm(**get_llm_args_temp_zero), # type: ignore
|
| 470 |
+
# writer_llm=get_llm(**get_llm_args_temp_zero), # type: ignore
|
| 471 |
+
# )
|
| 472 |
st_callback = StreamlitCallbackHandler(st.container())
|
| 473 |
callbacks.append(st_callback)
|
| 474 |
|
| 475 |
+
# @tool("web-research-assistant")
|
| 476 |
+
# def research_assistant_tool(question: str, callbacks: Callbacks = None):
|
| 477 |
+
# """This assistant returns a comprehensive report based on web research.
|
| 478 |
+
# It's slow and relatively expensive, so use it sparingly.
|
| 479 |
+
# Consider using a different tool for quick facts or web queries.
|
| 480 |
+
# """
|
| 481 |
+
# return research_assistant_chain.invoke(
|
| 482 |
+
# dict(question=question),
|
| 483 |
+
# config=get_config(callbacks),
|
| 484 |
+
# )
|
| 485 |
+
|
| 486 |
+
# python_coder_agent = get_python_agent(st.session_state.llm)
|
| 487 |
+
|
| 488 |
+
# @tool("python-coder-assistant")
|
| 489 |
+
# def python_coder_tool(input_str: str, callbacks: Callbacks = None):
|
| 490 |
+
# """This assistant writes PYTHON code.
|
| 491 |
+
# Give it clear instructions and requirements.
|
| 492 |
+
# Do not use it for tasks other than Python.
|
| 493 |
+
# """
|
| 494 |
+
# return python_coder_agent.invoke(
|
| 495 |
+
# dict(input=input_str),
|
| 496 |
+
# config=get_config(callbacks),
|
| 497 |
+
# )
|
| 498 |
+
|
| 499 |
+
TOOLS = default_tools
|
| 500 |
+
# [research_assistant_tool, python_coder_tool] + default_tools
|
| 501 |
|
| 502 |
if use_document_chat:
|
| 503 |
st.session_state.doc_chain = get_runnable(
|
langchain-streamlit-demo/defaults.py
CHANGED
|
@@ -25,7 +25,13 @@ DEFAULT_MODEL = os.environ.get("DEFAULT_MODEL", "gpt-4-turbo-preview")
|
|
| 25 |
|
| 26 |
DEFAULT_SYSTEM_PROMPT = os.environ.get(
|
| 27 |
"DEFAULT_SYSTEM_PROMPT",
|
| 28 |
-
"You are a helpful chatbot. Do not rush. Always plan, think, and act in a step-by-step manner.",
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 29 |
)
|
| 30 |
|
| 31 |
MIN_TEMP = float(os.environ.get("MIN_TEMPERATURE", 0.0))
|
|
@@ -38,6 +44,21 @@ DEFAULT_MAX_TOKENS = int(os.environ.get("DEFAULT_MAX_TOKENS", 1000))
|
|
| 38 |
|
| 39 |
DEFAULT_LANGSMITH_PROJECT = os.environ.get("LANGCHAIN_PROJECT")
|
| 40 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 41 |
# AZURE_VARS = [
|
| 42 |
# "AZURE_OPENAI_BASE_URL",
|
| 43 |
# "AZURE_OPENAI_API_VERSION",
|
|
@@ -102,6 +123,7 @@ DEFAULT_VALUES = namedtuple(
|
|
| 102 |
"DEFAULT_RETRIEVER_K",
|
| 103 |
"SHOW_LANGSMITH_OPTIONS",
|
| 104 |
"SHOW_AZURE_OPTIONS",
|
|
|
|
| 105 |
],
|
| 106 |
)
|
| 107 |
|
|
@@ -131,4 +153,5 @@ default_values = DEFAULT_VALUES(
|
|
| 131 |
DEFAULT_RETRIEVER_K,
|
| 132 |
SHOW_LANGSMITH_OPTIONS,
|
| 133 |
SHOW_AZURE_OPTIONS,
|
|
|
|
| 134 |
)
|
|
|
|
| 25 |
|
| 26 |
DEFAULT_SYSTEM_PROMPT = os.environ.get(
|
| 27 |
"DEFAULT_SYSTEM_PROMPT",
|
| 28 |
+
# "You are a helpful chatbot. Do not rush. Always plan, think, and act in a step-by-step manner.",
|
| 29 |
+
"""
|
| 30 |
+
Comportati come un operatore di call center.
|
| 31 |
+
Hai accesso a tutte le informazioni necessarie per rispondere alle domande dei clienti tramite il vectorstore.
|
| 32 |
+
Se non sai rispondere ad una domanda, rispondi che non hai la risposta e offri di connettere il cliente con un operatore umano.
|
| 33 |
+
Rispondi in italiano, usando uno stile amichevole ma formale.
|
| 34 |
+
""",
|
| 35 |
)
|
| 36 |
|
| 37 |
MIN_TEMP = float(os.environ.get("MIN_TEMPERATURE", 0.0))
|
|
|
|
| 44 |
|
| 45 |
DEFAULT_LANGSMITH_PROJECT = os.environ.get("LANGCHAIN_PROJECT")
|
| 46 |
|
| 47 |
+
TEST_QUESTIONS = [
|
| 48 |
+
"non ho ricevuto le credenziali di accesso all'area riservata: dove posso trovarle?",
|
| 49 |
+
"vorrei informazioni relativamente alle prestazioni presenti nel checkup",
|
| 50 |
+
"la risonanza magnetica è coperta dalla polizza?",
|
| 51 |
+
"le visite odontoiatriche sono coperte dalla polizza?",
|
| 52 |
+
"vorrei informazioni su come richiedere il checkup",
|
| 53 |
+
"vorrei informazioni su come trovare struttura convenzionata che faccia le risonanze magnetiche",
|
| 54 |
+
"come chiede autorizzazione per fare una risonanza magnetica?",
|
| 55 |
+
"come chiedere rimborso per una risonanza magnetica?",
|
| 56 |
+
"quali prestazioni sono incluse nel pacchetto maternità?",
|
| 57 |
+
"come chiedere autorizzazione per prestazione del pacchetto maternità?",
|
| 58 |
+
"come devo procedere per fare l'estensione della copertura al nucleo familiare?",
|
| 59 |
+
"Altro",
|
| 60 |
+
]
|
| 61 |
+
|
| 62 |
# AZURE_VARS = [
|
| 63 |
# "AZURE_OPENAI_BASE_URL",
|
| 64 |
# "AZURE_OPENAI_API_VERSION",
|
|
|
|
| 123 |
"DEFAULT_RETRIEVER_K",
|
| 124 |
"SHOW_LANGSMITH_OPTIONS",
|
| 125 |
"SHOW_AZURE_OPTIONS",
|
| 126 |
+
"TEST_QUESTIONS",
|
| 127 |
],
|
| 128 |
)
|
| 129 |
|
|
|
|
| 153 |
DEFAULT_RETRIEVER_K,
|
| 154 |
SHOW_LANGSMITH_OPTIONS,
|
| 155 |
SHOW_AZURE_OPTIONS,
|
| 156 |
+
TEST_QUESTIONS,
|
| 157 |
)
|
langchain-streamlit-demo/llm_resources.py
CHANGED
|
@@ -29,8 +29,9 @@ from langchain.text_splitter import RecursiveCharacterTextSplitter
|
|
| 29 |
from langchain.tools.base import BaseTool
|
| 30 |
from langchain.vectorstores import FAISS
|
| 31 |
from langchain_core.messages import SystemMessage
|
| 32 |
-
|
| 33 |
-
from
|
|
|
|
| 34 |
|
| 35 |
|
| 36 |
def get_agent(
|
|
@@ -138,17 +139,17 @@ def get_runnable(
|
|
| 138 |
memory=memory,
|
| 139 |
) | (lambda output: output["text"])
|
| 140 |
|
| 141 |
-
if document_chat_chain_type == "Q&A Generation":
|
| 142 |
-
|
| 143 |
-
|
| 144 |
-
|
| 145 |
-
|
| 146 |
-
elif document_chat_chain_type == "Summarization":
|
| 147 |
-
|
| 148 |
-
|
| 149 |
-
|
| 150 |
-
|
| 151 |
-
|
| 152 |
else:
|
| 153 |
return RetrievalQA.from_chain_type(
|
| 154 |
llm=llm,
|
|
|
|
| 29 |
from langchain.tools.base import BaseTool
|
| 30 |
from langchain.vectorstores import FAISS
|
| 31 |
from langchain_core.messages import SystemMessage
|
| 32 |
+
|
| 33 |
+
# from qagen import get_rag_qa_gen_chain
|
| 34 |
+
# from summarize import get_rag_summarization_chain
|
| 35 |
|
| 36 |
|
| 37 |
def get_agent(
|
|
|
|
| 139 |
memory=memory,
|
| 140 |
) | (lambda output: output["text"])
|
| 141 |
|
| 142 |
+
# if document_chat_chain_type == "Q&A Generation":
|
| 143 |
+
# return get_rag_qa_gen_chain(
|
| 144 |
+
# retriever,
|
| 145 |
+
# llm,
|
| 146 |
+
# )
|
| 147 |
+
# elif document_chat_chain_type == "Summarization":
|
| 148 |
+
# return get_rag_summarization_chain(
|
| 149 |
+
# summarization_prompt,
|
| 150 |
+
# retriever,
|
| 151 |
+
# llm,
|
| 152 |
+
# )
|
| 153 |
else:
|
| 154 |
return RetrievalQA.from_chain_type(
|
| 155 |
llm=llm,
|