Spaces:
Sleeping
Sleeping
Commit
·
ff01a64
1
Parent(s):
33e9231
Initial commit of llm app
Browse files- Dockerfile +42 -0
- README.md +1 -11
- app.py +80 -0
- app/hello_world.ipynb +59 -0
- app/hello_world.py +1 -0
- chainlit.md +3 -0
- pyproject.toml +14 -0
- uv.lock +0 -0
Dockerfile
ADDED
@@ -0,0 +1,42 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
# Get a distribution that has uv already installed
|
2 |
+
FROM ghcr.io/astral-sh/uv:python3.13-bookworm-slim
|
3 |
+
|
4 |
+
# Add Rust compiler installation
|
5 |
+
USER root
|
6 |
+
RUN apt-get update && apt-get install -y \
|
7 |
+
curl \
|
8 |
+
build-essential \
|
9 |
+
&& rm -rf /var/lib/apt/lists/*
|
10 |
+
RUN curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y
|
11 |
+
ENV PATH="/root/.cargo/bin:${PATH}"
|
12 |
+
|
13 |
+
# Add user - this is the user that will run the app
|
14 |
+
# If you do not set user, the app will run as root (undesirable)
|
15 |
+
RUN useradd -m -u 1000 user
|
16 |
+
USER user
|
17 |
+
|
18 |
+
# Set up Rust for the user
|
19 |
+
RUN curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y
|
20 |
+
ENV PATH="/home/user/.cargo/bin:${PATH}"
|
21 |
+
|
22 |
+
# Set the home directory and path
|
23 |
+
ENV HOME=/home/user \
|
24 |
+
PATH=/home/user/.local/bin:$PATH
|
25 |
+
|
26 |
+
ENV UVICORN_WS_PROTOCOL=websockets
|
27 |
+
|
28 |
+
# Set the working directory
|
29 |
+
WORKDIR $HOME/app
|
30 |
+
|
31 |
+
# Copy the app to the container
|
32 |
+
COPY --chown=user . $HOME/app
|
33 |
+
|
34 |
+
# Install the dependencies
|
35 |
+
# RUN uv sync --frozen
|
36 |
+
RUN uv sync
|
37 |
+
|
38 |
+
# Expose the port
|
39 |
+
EXPOSE 7860
|
40 |
+
|
41 |
+
# Run the app
|
42 |
+
CMD ["uv", "run", "chainlit", "run", "app.py", "--host", "0.0.0.0", "--port", "7860"]
|
README.md
CHANGED
@@ -1,11 +1 @@
|
|
1 |
-
|
2 |
-
title: Llm App
|
3 |
-
emoji: 🌍
|
4 |
-
colorFrom: gray
|
5 |
-
colorTo: pink
|
6 |
-
sdk: docker
|
7 |
-
pinned: false
|
8 |
-
license: openrail
|
9 |
-
---
|
10 |
-
|
11 |
-
Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
|
|
|
1 |
+
LLM Challenge Makerspace
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
app.py
ADDED
@@ -0,0 +1,80 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
# You can find this code for Chainlit python streaming here (https://docs.chainlit.io/concepts/streaming/python)
|
2 |
+
|
3 |
+
# OpenAI Chat completion
|
4 |
+
import os
|
5 |
+
from openai import AsyncOpenAI # importing openai for API usage
|
6 |
+
import chainlit as cl # importing chainlit for our app
|
7 |
+
from chainlit.prompt import Prompt, PromptMessage # importing prompt tools
|
8 |
+
from chainlit.playground.providers import ChatOpenAI # importing ChatOpenAI tools
|
9 |
+
from dotenv import load_dotenv
|
10 |
+
|
11 |
+
load_dotenv()
|
12 |
+
|
13 |
+
# ChatOpenAI Templates
|
14 |
+
system_template = """You are a helpful assistant who always speaks in a pleasant tone!
|
15 |
+
"""
|
16 |
+
|
17 |
+
user_template = """{input}
|
18 |
+
Think through your response step by step.
|
19 |
+
"""
|
20 |
+
|
21 |
+
|
22 |
+
@cl.on_chat_start # marks a function that will be executed at the start of a user session
|
23 |
+
async def start_chat():
|
24 |
+
settings = {
|
25 |
+
"model": "gpt-3.5-turbo",
|
26 |
+
"temperature": 0,
|
27 |
+
"max_tokens": 500,
|
28 |
+
"top_p": 1,
|
29 |
+
"frequency_penalty": 0,
|
30 |
+
"presence_penalty": 0,
|
31 |
+
}
|
32 |
+
|
33 |
+
cl.user_session.set("settings", settings)
|
34 |
+
|
35 |
+
|
36 |
+
@cl.on_message # marks a function that should be run each time the chatbot receives a message from a user
|
37 |
+
async def main(message: cl.Message):
|
38 |
+
settings = cl.user_session.get("settings")
|
39 |
+
|
40 |
+
client = AsyncOpenAI()
|
41 |
+
|
42 |
+
print(message.content)
|
43 |
+
|
44 |
+
prompt = Prompt(
|
45 |
+
provider=ChatOpenAI.id,
|
46 |
+
messages=[
|
47 |
+
PromptMessage(
|
48 |
+
role="system",
|
49 |
+
template=system_template,
|
50 |
+
formatted=system_template,
|
51 |
+
),
|
52 |
+
PromptMessage(
|
53 |
+
role="user",
|
54 |
+
template=user_template,
|
55 |
+
formatted=user_template.format(input=message.content),
|
56 |
+
),
|
57 |
+
],
|
58 |
+
inputs={"input": message.content},
|
59 |
+
settings=settings,
|
60 |
+
)
|
61 |
+
|
62 |
+
print([m.to_openai() for m in prompt.messages])
|
63 |
+
|
64 |
+
msg = cl.Message(content="")
|
65 |
+
|
66 |
+
# Call OpenAI
|
67 |
+
async for stream_resp in await client.chat.completions.create(
|
68 |
+
messages=[m.to_openai() for m in prompt.messages], stream=True, **settings
|
69 |
+
):
|
70 |
+
token = stream_resp.choices[0].delta.content
|
71 |
+
if not token:
|
72 |
+
token = ""
|
73 |
+
await msg.stream_token(token)
|
74 |
+
|
75 |
+
# Update the prompt object with the completion
|
76 |
+
prompt.completion = msg.content
|
77 |
+
msg.prompt = prompt
|
78 |
+
|
79 |
+
# Send and close the message stream
|
80 |
+
await msg.send()
|
app/hello_world.ipynb
ADDED
@@ -0,0 +1,59 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
{
|
2 |
+
"cells": [
|
3 |
+
{
|
4 |
+
"cell_type": "code",
|
5 |
+
"execution_count": 1,
|
6 |
+
"metadata": {},
|
7 |
+
"outputs": [
|
8 |
+
{
|
9 |
+
"data": {
|
10 |
+
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAkAAAAGzCAYAAADHdKgcAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjEsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvc2/+5QAAAAlwSFlzAAAPYQAAD2EBqD+naQAAKxBJREFUeJzt3Qlc1NX+//EPQkKWYLmhSZKZVq6laZalXk00r7mUmdkDNPW22GJoBW1qVljezErT6uZ2y/VmtmiUmWmmZrhktpiYiORuAaJXNJj/43N+/+EybCrOMMt5PR+P7wO+3/l+Z86M5rw753PON8jhcDgEAADAIpW83QAAAICKRgACAADWIQABAADrEIAAAIB1CEAAAMA6BCAAAGAdAhAAALAOAQgAAFiHAAQAAKxDAAIQMDp27Gg2ADgVAhBgsaCgoNPavvrqq7N+rWPHjsmYMWNO+7n0PH3t//znPyU+PmjQIDn//PPPul1r1qwx7crMzDzr5wLgP0K83QAA3vPvf//bZX/27NmybNmyYsevuOIKtwSgsWPHmt891Uvz+eeflysAabs0UFWrVs0j7QLgewhAgMXuuusul/1169aZAFT0uL+oXLmy+JujR4/Keeed5+1mANZhCAxAmfLz82XSpEnSpEkTCQsLk9q1a8s999wjf/75p8t5KSkpEhMTIzVq1JBzzz1XLrnkErn77rvNY2lpaVKzZk3zu/a2OIfWdOjJ0zVAr7/+uml7lSpV5IILLpDWrVvLnDlzzGP6+o8++qj5XdvrbJe2V/31118ybtw4ufTSSyU0NFSio6PliSeekNzc3GKfkT5X3bp1zet06tRJfvrpJ3O+9iw5zZw50zz/ypUr5f7775datWpJvXr1zGO7du0yxxo3bmw+v+rVq0u/fv0K2lL0OVavXi0PPfSQ+Vy150r/TE6cOGGG8mJjY8171e2xxx4Th8Ph1s8ZCAT0AAEok36x6pfu4MGDzRfuzp07ZfLkybJp0yb55ptv5JxzzpEDBw5I165dzZdxQkKC+ULWL+5FixaZ59DjU6dOlfvuu0/69Okjffv2NcebN29+ytc/cuSIHDp0qNjxoiGkJG+//bZp82233SYPP/ywHD9+XLZs2SLffvut3HnnnaYdv/76q8ydO1deeeUVE96c7VVDhw6VWbNmmetHjhxprktKSpKff/5ZPvjgg4LXSUxMlJdeekl69uxpQuD3339vfurrlUSDjr7GM888Y3qA1HfffWeG4+644w4TivTz089MA52GKQ1WhT344IMSGRlpAqX23L311lvmc9fnuPjii+WFF16QpUuXyoQJE6Rp06YmFAEoxAEA/9/w4cO1q6Bg/+uvvzb77733nst5ycnJLsc/+OADs//dd9+V+twHDx4054wePfq02rJixQpzflnbeeed53JNhw4dzObUq1cvR5MmTcp8nQkTJpjn2rlzp8vxzZs3m+NDhw51OT5q1Chz/MsvvzT7+/btc4SEhDh69+7tct6YMWPMeXFxcQXHZsyYYY61b9/e8ddff7mcf+zYsWJtW7t2rTl/9uzZxZ4jJibGkZ+fX3C8Xbt2jqCgIMe9995bcExfo169ei6fCYD/wxAYgFItXLhQIiIi5KabbjK9MM6tVatWZgbWihUrzHnO4uFPPvlETp486dY2aC+J1iUV3bTH6VS0XRkZGaZ35Uxp74mKj493Oa49QWrJkiXm5/Lly81QmfbqFO2hKc2wYcMkODjY5ZgOeznpZ3j48GFp2LCheQ8bN24s9hxDhgwxQ2FObdu2NUNdetxJX0OH/H777bfTft+ALRgCA1Cq7du3S1ZWlqlVKYkOfakOHTrIrbfeaoZjdChJh2169+5thpm0duZsNGvWTLp06VLs+LvvvnvKax9//HH54osvpE2bNiZMaGjSNl1//fWnvFZrcipVqmSuK0yHnTSU6OPO81TR8y688EJTg1MSrTcq6r///a8ZXpsxY4b8/vvvLnU7+mdQlA5zFaZBVUVFRRU7XrReCwABCEAZtLhXw897771X4uPOWhnnej1ai/Lxxx/LZ599ZgqgX375ZXPMHev1lIdO39+2bZvpmUpOTpb3339f3njjDdOr5JySfyqFe1ncpXBvT+EeIw0/I0aMkHbt2pngoq+tNUH651BU0R6kso5TBA0URwACUCqd/aQ9KNpjUtKXdlHXXnut2Z5//nkz02rgwIEyb948U0zsiSBxOnSKef/+/c2ms6S08Fnbp4XLOquttHbVr1/fBA/tBSu8DtL+/fvNTCt93HmeSk1NdenZ0SGsM+l50QAZFxdnQqOTFlGzQCPgGdQAASjV7bffLnl5eWYqeFFa9+L8ctYv+qK9DC1btnSZreWcxVSRX+gaQoquE3TllVeatjprlZxr8BRt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",
|
11 |
+
"text/plain": [
|
12 |
+
"<Figure size 640x480 with 1 Axes>"
|
13 |
+
]
|
14 |
+
},
|
15 |
+
"metadata": {},
|
16 |
+
"output_type": "display_data"
|
17 |
+
}
|
18 |
+
],
|
19 |
+
"source": [
|
20 |
+
"import numpy as np\n",
|
21 |
+
"import pandas as pd\n",
|
22 |
+
"import matplotlib.pyplot as plt\n",
|
23 |
+
"\n",
|
24 |
+
"np.random.seed(0)\n",
|
25 |
+
"values = np.random.randn(100)\n",
|
26 |
+
"pd.Series(values).plot(kind='hist', title='Test Histogram')\n",
|
27 |
+
"plt.show()\n"
|
28 |
+
]
|
29 |
+
},
|
30 |
+
{
|
31 |
+
"cell_type": "code",
|
32 |
+
"execution_count": null,
|
33 |
+
"metadata": {},
|
34 |
+
"outputs": [],
|
35 |
+
"source": []
|
36 |
+
}
|
37 |
+
],
|
38 |
+
"metadata": {
|
39 |
+
"kernelspec": {
|
40 |
+
"display_name": ".venv",
|
41 |
+
"language": "python",
|
42 |
+
"name": "python3"
|
43 |
+
},
|
44 |
+
"language_info": {
|
45 |
+
"codemirror_mode": {
|
46 |
+
"name": "ipython",
|
47 |
+
"version": 3
|
48 |
+
},
|
49 |
+
"file_extension": ".py",
|
50 |
+
"mimetype": "text/x-python",
|
51 |
+
"name": "python",
|
52 |
+
"nbconvert_exporter": "python",
|
53 |
+
"pygments_lexer": "ipython3",
|
54 |
+
"version": "3.13.2"
|
55 |
+
}
|
56 |
+
},
|
57 |
+
"nbformat": 4,
|
58 |
+
"nbformat_minor": 2
|
59 |
+
}
|
app/hello_world.py
ADDED
@@ -0,0 +1 @@
|
|
|
|
|
1 |
+
print("hello world! let's do some ml ops!")
|
chainlit.md
ADDED
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
1 |
+
# Beyond ChatGPT
|
2 |
+
|
3 |
+
This Chainlit app was created following instructions from [this repository!](https://github.com/AI-Maker-Space/Beyond-ChatGPT)
|
pyproject.toml
ADDED
@@ -0,0 +1,14 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
[project]
|
2 |
+
name = "beyond-chatgpt"
|
3 |
+
version = "0.1.0"
|
4 |
+
description = "Add your description here"
|
5 |
+
readme = "README.md"
|
6 |
+
requires-python = ">=3.13"
|
7 |
+
dependencies = [
|
8 |
+
"chainlit==0.7.700",
|
9 |
+
"cohere==4.37",
|
10 |
+
"openai==1.3.5",
|
11 |
+
"pydantic==2.10.1",
|
12 |
+
"python-dotenv==1.0.0",
|
13 |
+
"tiktoken==0.5.1",
|
14 |
+
]
|
uv.lock
ADDED
The diff for this file is too large to render.
See raw diff
|
|