Create app.py
Browse files
app.py
ADDED
@@ -0,0 +1,47 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
from fastapi import FastAPI, UploadFile, File
|
2 |
+
import requests
|
3 |
+
import os
|
4 |
+
|
5 |
+
app = FastAPI()
|
6 |
+
|
7 |
+
# URL de l’API Ollama (par défaut, elle tourne localement sur le port 11434)
|
8 |
+
OLLAMA_API_URL = "http://localhost:11434/api/generate"
|
9 |
+
|
10 |
+
# Fonction pour appeler Ollama avec un prompt
|
11 |
+
def query_ollama(prompt: str, model: str = "mistral"):
|
12 |
+
payload = {
|
13 |
+
"model": model,
|
14 |
+
"prompt": prompt,
|
15 |
+
"stream": False
|
16 |
+
}
|
17 |
+
response = requests.post(OLLAMA_API_URL, json=payload)
|
18 |
+
if response.status_code == 200:
|
19 |
+
return response.json()["response"]
|
20 |
+
else:
|
21 |
+
return f"Erreur : {response.status_code} - {response.text}"
|
22 |
+
|
23 |
+
@app.get("/")
|
24 |
+
async def root():
|
25 |
+
return {"message": "Bienvenue sur mon API avec Ollama"}
|
26 |
+
|
27 |
+
# Endpoint pour résumer un texte uploadé
|
28 |
+
@app.post("/summarization/text")
|
29 |
+
async def summarize_text(file: UploadFile = File(...)):
|
30 |
+
# Lire le contenu du fichier uploadé
|
31 |
+
content = await file.read()
|
32 |
+
text = content.decode("utf-8")
|
33 |
+
|
34 |
+
# Créer un prompt pour Ollama
|
35 |
+
prompt = f"Résume ce texte en 3 phrases courtes : {text}"
|
36 |
+
|
37 |
+
# Appeler Ollama avec le modèle (Mistral ou DeepSeek si disponible)
|
38 |
+
summary = query_ollama(prompt, model="mistral") # Remplace "mistral" par "deepseek-v2" si tu l’as
|
39 |
+
|
40 |
+
return {"summary": summary}
|
41 |
+
|
42 |
+
# Exemple d’endpoint pour tester avec du texte brut
|
43 |
+
@app.post("/summarization/test")
|
44 |
+
async def summarize_test(text: str):
|
45 |
+
prompt = f"Résume ce texte en 3 phrases courtes : {text}"
|
46 |
+
summary = query_ollama(prompt, model="mistral")
|
47 |
+
return {"summary": summary}
|