JairoDanielMT commited on
Commit
9c07fea
1 Parent(s): c668d6d

Create app.py

Browse files
Files changed (1) hide show
  1. app.py +78 -0
app.py ADDED
@@ -0,0 +1,78 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from fastapi import FastAPI, HTTPException, Depends
2
+ from fastapi.security import HTTPBasic, HTTPBasicCredentials
3
+ from pydantic import BaseModel
4
+ import openai
5
+ import uvicorn
6
+ from dotenv import load_dotenv
7
+ import os
8
+ import secrets
9
+ from starlette.status import HTTP_401_UNAUTHORIZED
10
+
11
+ # Cargar las credenciales de OpenAI desde un archivo .env
12
+ load_dotenv()
13
+
14
+ # Configura la clave API de OpenAI
15
+ openai.api_key = os.getenv("OPENAI_API_KEY")
16
+
17
+ # Variables de entorno para autenticación básica
18
+ BASIC_AUTH_USERNAME = os.getenv("BASIC_AUTH_USERNAME")
19
+ BASIC_AUTH_PASSWORD = os.getenv("BASIC_AUTH_PASSWORD")
20
+
21
+ app = FastAPI()
22
+
23
+ security = HTTPBasic()
24
+
25
+
26
+ class MessageRequest(BaseModel):
27
+ user_name: str
28
+ text: str
29
+
30
+
31
+ class MessageResponse(BaseModel):
32
+ response: str
33
+
34
+
35
+ def chatgpt(message: str) -> str:
36
+ model_engine = "gpt-3.5-turbo"
37
+ response = openai.ChatCompletion.create(
38
+ model=model_engine,
39
+ messages=[{"role": "user", "content": message}],
40
+ max_tokens=1024,
41
+ n=1,
42
+ stop=None,
43
+ temperature=0.5,
44
+ )
45
+ return response.choices[0].message["content"].strip()
46
+
47
+
48
+ def verify_credentials(credentials: HTTPBasicCredentials = Depends(security)):
49
+ correct_username = secrets.compare_digest(credentials.username, BASIC_AUTH_USERNAME)
50
+ correct_password = secrets.compare_digest(credentials.password, BASIC_AUTH_PASSWORD)
51
+ if not (correct_username and correct_password):
52
+ raise HTTPException(
53
+ status_code=HTTP_401_UNAUTHORIZED,
54
+ detail="Incorrect username or password",
55
+ headers={"WWW-Authenticate": "Basic"},
56
+ )
57
+ return credentials
58
+
59
+
60
+ @app.post("/send_message", response_model=MessageResponse)
61
+ async def send_message(
62
+ request: MessageRequest,
63
+ credentials: HTTPBasicCredentials = Depends(verify_credentials),
64
+ ):
65
+ try:
66
+ response_text = chatgpt(request.text)
67
+ return MessageResponse(response=response_text)
68
+ except Exception as e:
69
+ raise HTTPException(status_code=500, detail=str(e))
70
+
71
+
72
+ @app.get("/")
73
+ def read_root(credentials: HTTPBasicCredentials = Depends(verify_credentials)):
74
+ return {"message": "Bienvenido a la API de ChatGPT."}
75
+
76
+
77
+ if __name__ == "__main__":
78
+ uvicorn.run(app, host="0.0.0.0", port=7860)