ibrahimBlyc commited on
Commit
dec7ccf
·
1 Parent(s): ee7e713

Update space

Browse files
Files changed (2) hide show
  1. app.py +24 -109
  2. requirements.txt +4 -1
app.py CHANGED
@@ -1,121 +1,36 @@
1
  import gradio as gr
2
  import requests
3
- import json
4
 
5
- def respond(message, history, system_message, max_tokens, temperature, top_p):
6
- """
7
- Fonction pour générer une réponse en utilisant Ollama
 
 
8
 
9
- Args:
10
- - message: Le dernier message de l'utilisateur
11
- - history: Historique des conversations
12
- - system_message: Message système pour guider le comportement du modèle
13
- - max_tokens: Nombre maximal de tokens à générer
14
- - temperature: Contrôle la créativité de la réponse
15
- - top_p: Échantillonnage nucléaire
16
-
17
- Returns:
18
- - Réponse générée par le modèle
19
- """
20
- # Préparer les messages pour le contexte
21
- messages = [{"role": "system", "content": system_message}]
22
- for user_msg, assistant_msg in history:
23
- if user_msg:
24
- messages.append({"role": "user", "content": user_msg})
25
- if assistant_msg:
26
- messages.append({"role": "assistant", "content": assistant_msg})
27
- messages.append({"role": "user", "content": message})
28
-
29
- # Préparer les données pour la requête Ollama
30
- data = {
31
- "model": "hf.co/ibrahimBlyc/LA_Llama:latest", # Assurez-vous que ce modèle est disponible localement
32
- "messages": messages,
33
- "stream": True,
34
- "options": {
35
- "num_predict": max_tokens,
36
- "temperature": temperature,
37
- "top_p": top_p
38
- }
39
  }
40
 
41
- # URL du serveur Ollama local
42
- url = "http://localhost:11434/api/chat"
43
-
44
  try:
45
- # Envoyer la requête en streaming
46
- response = ""
47
- with requests.post(url, json=data, stream=True) as stream_response:
48
- stream_response.raise_for_status()
49
- for chunk in stream_response.iter_lines():
50
- if chunk:
51
- try:
52
- # Décoder correctement le chunk JSON
53
- chunk_decoded = chunk.decode('utf-8')
54
- chunk_json = json.loads(chunk_decoded)
55
-
56
- # Extraire le token de la réponse
57
- if 'message' in chunk_json and 'content' in chunk_json['message']:
58
- token = chunk_json['message']['content']
59
- response += token
60
- yield response
61
-
62
- except json.JSONDecodeError as e:
63
- print(f"Erreur de décodage JSON : {e}")
64
- yield f"Erreur : Impossible de décoder la réponse du serveur."
65
- return
66
- except Exception as e:
67
- print(f"Erreur inattendue : {e}")
68
- yield f"Erreur : Une erreur inattendue s'est produite."
69
- return
70
-
71
  except requests.exceptions.RequestException as e:
72
- print(f"Erreur de requête : {e}")
73
- yield f"Erreur : Impossible de communiquer avec le serveur Ollama."
 
74
 
75
- # Créer l'interface Gradio
76
- demo = gr.ChatInterface(
77
- respond,
78
- title="Ollama Chatbot",
79
- description="Discutez avec un modèle Ollama local",
80
- additional_inputs=[
81
- gr.Textbox(
82
- value="Tu es un assistant IA amical et utile qui répond de manière concise et informative.",
83
- label="Message système",
84
- lines=3
85
- ),
86
- gr.Slider(
87
- minimum=1,
88
- maximum=2048,
89
- value=512,
90
- step=1,
91
- label="Nombre max de tokens"
92
- ),
93
- gr.Slider(
94
- minimum=0.1,
95
- maximum=2.0,
96
- value=0.7,
97
- step=0.1,
98
- label="Température"
99
- ),
100
- gr.Slider(
101
- minimum=0.1,
102
- maximum=1.0,
103
- value=0.95,
104
- step=0.05,
105
- label="Top-p (échantillonnage nucléaire)"
106
- ),
107
- ],
108
- theme="default"
109
  )
110
 
111
- # Lancement de l'application
112
  if __name__ == "__main__":
113
- # Vérifier que le serveur Ollama est bien installé
114
- try:
115
- import ollama
116
- print("Serveur Ollama détecté. Lancement de l'interface...")
117
- demo.launch(share=True)
118
- except ImportError:
119
- print("Le serveur Ollama n'est pas installé. Veuillez l'installer.")
120
- except Exception as e:
121
- print(f"Erreur lors du lancement : {e}")
 
1
  import gradio as gr
2
  import requests
 
3
 
4
+ # Fonction pour interroger Ollama
5
+ def query_ollama(prompt):
6
+ # Configuration de l'URL et du modèle Ollama
7
+ url = "http://localhost:11434/api" # Le port utilisé par Ollama
8
+ model_name = "hf.co/ibrahimBlyc/LA_Llama:latest" # Nom complet du modèle
9
 
10
+ # Corps de la requête
11
+ payload = {
12
+ "model": model_name,
13
+ "prompt": prompt
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
14
  }
15
 
 
 
 
16
  try:
17
+ # Envoi de la requête POST
18
+ response = requests.post(url, json=payload)
19
+ response.raise_for_status() # Vérifie les erreurs HTTP
20
+ result = response.json().get("response", "Aucune réponse reçue.")
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
21
  except requests.exceptions.RequestException as e:
22
+ result = f"Erreur : {e}"
23
+
24
+ return result
25
 
26
+ # Interface Gradio
27
+ interface = gr.Interface(
28
+ fn=query_ollama,
29
+ inputs=gr.Textbox(label="Entrée utilisateur", placeholder="Posez une question..."),
30
+ outputs=gr.Textbox(label="Réponse du modèle"),
31
+ title="Interface Ollama via Hugging Face Spaces",
32
+ description="Une interface simple pour communiquer avec un modèle Ollama via le port 11434."
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
33
  )
34
 
 
35
  if __name__ == "__main__":
36
+ interface.launch(share=True)
 
 
 
 
 
 
 
 
requirements.txt CHANGED
@@ -1 +1,4 @@
1
- huggingface_hub==0.25.2
 
 
 
 
1
+ huggingface_hub==0.25.2
2
+ gradio
3
+ transformers
4
+ requests