tyagonzales66 commited on
Commit
47e1fe8
·
verified ·
1 Parent(s): 8b9e3bb

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +57 -0
app.py CHANGED
@@ -0,0 +1,57 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from fastapi import FastAPI, Request, HTTPException
2
+ import requests
3
+ import os
4
+
5
+ app = FastAPI()
6
+
7
+ BOT_USERNAME = "@DiscussionBot"
8
+ INFERENCE_URL = "https://api-inference.huggingface.co/models/bigscience/bloom"
9
+ PROMPT = "Faites comme si vous étiez un robot qui répond aux discussions sur l'apprentissage automatique et répondez au commentaire suivant :\n"
10
+
11
+ @app.post("/")
12
+ async def webhook(request: Request):
13
+ if request.headers.get("X-Webhook-Secret") != os.getenv("WEBHOOK_SECRET"):
14
+ raise HTTPException(status_code=400, detail="Secret incorrect")
15
+
16
+ data = await request.json()
17
+ event = data.get("event")
18
+
19
+ if (
20
+ event.get("action") == "create"
21
+ and event.get("scope") == "discussion.comment"
22
+ and BOT_USERNAME in data.get("comment", {}).get("content", "")
23
+ ):
24
+ response = requests.post(
25
+ INFERENCE_URL,
26
+ headers={"Authorization": f"Bearer {os.getenv('HF_TOKEN')}"},
27
+ json={"inputs": PROMPT + data["comment"]["content"]},
28
+ )
29
+
30
+ if response.status_code == 200:
31
+ output = response.json()
32
+ continuation_text = output[0]["generated_text"].replace(
33
+ PROMPT + data["comment"]["content"], ""
34
+ )
35
+
36
+ comment_url = data["discussion"]["url"]["api"] + "/comment"
37
+ comment_response = requests.post(
38
+ comment_url,
39
+ headers={
40
+ "Authorization": f"Bearer {os.getenv('HF_TOKEN')}",
41
+ "Content-Type": "application/json",
42
+ },
43
+ json={"comment": continuation_text},
44
+ )
45
+
46
+ if comment_response.status_code == 200:
47
+ return {"success": True}
48
+ else:
49
+ raise HTTPException(status_code=500, detail="Failed to post comment")
50
+ else:
51
+ raise HTTPException(status_code=500, detail="Inference API failed")
52
+
53
+ return {"success": False}
54
+
55
+ if __name__ == "__main__":
56
+ import uvicorn
57
+ uvicorn.run(app, host="0.0.0.0", port=7860)