wiklif commited on
Commit
9150355
·
1 Parent(s): e905207

Add Gradio API to interact with Ollama model

Browse files
Files changed (3) hide show
  1. Dockerfile +30 -0
  2. app.py +32 -4
  3. 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
- def greet(name):
4
- return "Hello " + name + "!!"
 
 
 
 
 
 
 
 
5
 
6
- demo = gr.Interface(fn=greet, inputs="text", outputs="text")
7
- demo.launch()
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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