Spaces:
Sleeping
Sleeping
Add Gradio API to interact with Ollama model
Browse files- Dockerfile +30 -0
- app.py +32 -4
- requirements.txt +2 -0
Dockerfile
ADDED
|
@@ -0,0 +1,30 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
FROM ubuntu:latest
|
| 2 |
+
|
| 3 |
+
# Zaktualizuj pakiety i zainstaluj potrzebne narzędzia
|
| 4 |
+
RUN apt-get update && apt-get install -y curl openssh-client git python3 python3-pip
|
| 5 |
+
|
| 6 |
+
# Zainstaluj wymagane biblioteki Python
|
| 7 |
+
COPY requirements.txt .
|
| 8 |
+
RUN pip3 install -r requirements.txt
|
| 9 |
+
|
| 10 |
+
# Zainstaluj Ollamę
|
| 11 |
+
RUN curl -fsSL https://ollama.com/install.sh | sh
|
| 12 |
+
|
| 13 |
+
# Stwórz katalog na model i pobierz wybrany model z Hugging Face
|
| 14 |
+
RUN mkdir -p /root/.ollama/models && \
|
| 15 |
+
curl -L https://huggingface.co/TheBloke/Mixtral-8x7B-Instruct-v0.1-GGUF/resolve/main/mixtral-8x7b-instruct-v0.1.Q4_K_M.gguf -o /root/.ollama/models/mixtral-8x7b-instruct-v0.1.Q4_K_M.gguf
|
| 16 |
+
|
| 17 |
+
# Utwórz Modelfile
|
| 18 |
+
RUN echo "FROM /root/.ollama/models/mixtral-8x7b-instruct-v0.1.Q4_K_M.gguf" > /root/.ollama/Modelfile && \
|
| 19 |
+
echo "PARAMETER temperature 0.0" >> /root/.ollama/Modelfile && \
|
| 20 |
+
echo "TEMPLATE \"{{ if .System }}system\n{{ .System }}\n{{ end }}{{ if .Prompt }}user\n{{ .Prompt }}\n{{ end }}assistant\n\"" >> /root/.ollama/Modelfile
|
| 21 |
+
|
| 22 |
+
# Skopiuj pliki aplikacji
|
| 23 |
+
COPY app.py .
|
| 24 |
+
|
| 25 |
+
# Eksponuj porty dla Gradio i Ollama
|
| 26 |
+
EXPOSE 7860
|
| 27 |
+
EXPOSE 11434
|
| 28 |
+
|
| 29 |
+
# Uruchom aplikację Gradio oraz serwer Ollama
|
| 30 |
+
CMD ["sh", "-c", "export OLLAMA_HOST='0.0.0.0' && ollama serve & sleep 5 && ollama create my_custom_model -f /root/.ollama/Modelfile && python3 app.py"]
|
app.py
CHANGED
|
@@ -1,7 +1,35 @@
|
|
| 1 |
import gradio as gr
|
|
|
|
| 2 |
|
| 3 |
-
|
| 4 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 5 |
|
| 6 |
-
|
| 7 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
import gradio as gr
|
| 2 |
+
import requests
|
| 3 |
|
| 4 |
+
# Funkcja do komunikacji z API modelu Ollama
|
| 5 |
+
def query_ollama(prompt, temperature=0.7, max_tokens=100):
|
| 6 |
+
url = "http://localhost:11434/v1/engines/my_custom_model/completions"
|
| 7 |
+
payload = {
|
| 8 |
+
"prompt": prompt,
|
| 9 |
+
"temperature": temperature,
|
| 10 |
+
"max_tokens": max_tokens
|
| 11 |
+
}
|
| 12 |
+
response = requests.post(url, json=payload)
|
| 13 |
+
return response.json()
|
| 14 |
|
| 15 |
+
# Interfejs Gradio
|
| 16 |
+
def ollama_interface(prompt, temperature=0.7, max_tokens=100):
|
| 17 |
+
response = query_ollama(prompt, temperature, max_tokens)
|
| 18 |
+
return response["choices"][0]["text"] # Zakładając, że odpowiedź API ma klucz "choices" z listą odpowiedzi
|
| 19 |
+
|
| 20 |
+
# Utwórz interfejs Gradio
|
| 21 |
+
iface = gr.Interface(
|
| 22 |
+
fn=ollama_interface,
|
| 23 |
+
inputs=[
|
| 24 |
+
gr.inputs.Textbox(lines=2, placeholder="Wpisz prompt tutaj..."),
|
| 25 |
+
gr.inputs.Slider(0, 1, default=0.7, label="Temperature"),
|
| 26 |
+
gr.inputs.Slider(1, 500, default=100, label="Max Tokens")
|
| 27 |
+
],
|
| 28 |
+
outputs="text",
|
| 29 |
+
title="Ollama Model Interface",
|
| 30 |
+
description="Interfejs do komunikacji z modelem Ollama za pomocą Gradio."
|
| 31 |
+
)
|
| 32 |
+
|
| 33 |
+
# Uruchom aplikację
|
| 34 |
+
if __name__ == "__main__":
|
| 35 |
+
iface.launch(server_name="0.0.0.0", server_port=7860)
|
requirements.txt
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
|
|
|
|
|
|
|
| 1 |
+
requests
|
| 2 |
+
gradio
|