This commit is contained in:
leehk 2025-03-07 15:20:06 +08:00
parent 1e242de51d
commit f1ccaffafe
4 changed files with 13 additions and 54 deletions

View File

@ -3,6 +3,7 @@ version: "3.9"
services:
streamlit:
build: ./streamlit
platform: linux/amd64
ports:
- "8501:8501"
volumes:

View File

@ -2,12 +2,6 @@ FROM python:3.11-slim
WORKDIR /app/streamlit
RUN apt-get update && apt-get install -y \
build-essential \
curl \
software-properties-common \
&& rm -rf /var/lib/apt/lists/*
COPY requirements.txt ./
RUN pip install --no-cache-dir -r requirements.txt
@ -15,8 +9,10 @@ RUN pip install --no-cache-dir -r requirements.txt
COPY Chatbot.py .
COPY .env .
# Run python to initialize download of SentenceTransformer model
COPY initialize_sentence_transformer.py .
RUN python initialize_sentence_transformer.py
EXPOSE 8501
HEALTHCHECK CMD curl --fail http://localhost:8501/_stcore/health
ENTRYPOINT ["streamlit", "run", "Chatbot.py", "--server.port=8501", "--server.address=0.0.0.0"]
ENTRYPOINT ["streamlit", "run", "Chatbot.py"]

View File

@ -1,52 +1,7 @@
import datetime
from unittest.mock import patch
from streamlit.testing.v1 import AppTest
from openai.types.chat import ChatCompletionMessage
from openai.types.chat.chat_completion import ChatCompletion, Choice
# See https://github.com/openai/openai-python/issues/715#issuecomment-1809203346
def create_chat_completion(response: str, role: str = "assistant") -> ChatCompletion:
return ChatCompletion(
id="foo",
model="gpt-3.5-turbo",
object="chat.completion",
choices=[
Choice(
finish_reason="stop",
index=0,
message=ChatCompletionMessage(
content=response,
role=role,
),
)
],
created=int(datetime.datetime.now().timestamp()),
)
@patch("langchain_deepseek.ChatDeepSeek.invoke")
@patch("langchain_google_genai.ChatGoogleGenerativeAI.invoke")
@patch("langchain_community.llms.moonshot.Moonshot.invoke")
def test_Chatbot(moonshot_llm, gemini_llm, deepseek_llm):
at = AppTest.from_file("Chatbot.py").run()
assert not at.exception
QUERY = "What is the best treatment for hypertension?"
RESPONSE = "The best treatment for hypertension is..."
deepseek_llm.return_value.content = RESPONSE
gemini_llm.return_value.content = RESPONSE
moonshot_llm.return_value = RESPONSE
at.chat_input[0].set_value(QUERY).run()
assert any(mock.called for mock in [deepseek_llm, gemini_llm, moonshot_llm])
assert at.chat_message[1].markdown[0].value == QUERY
assert at.chat_message[2].markdown[0].value == RESPONSE
assert at.chat_message[2].avatar == "assistant"
assert not at.exception
@patch("langchain.llms.OpenAI.__call__")
def test_Langchain_Quickstart(langchain_llm):

View File

@ -0,0 +1,7 @@
from decouple import config
from sentence_transformers import SentenceTransformer
EMBEDDING_MODEL = config("EMBEDDING_MODEL", cast=str, default="paraphrase-multilingual-mpnet-base-v2")
# Initialize embedding model
model = SentenceTransformer(EMBEDDING_MODEL)