1
+ from fastapi import APIRouter , HTTPException , Depends
2
+ from fastapi .responses import JSONResponse
3
+ from fastapi .encoders import jsonable_encoder
4
+
5
+ from .schemas .openai import OpenAIRequest , OpenAIResponse
6
+ from dependencies .openai import openai_service
7
+ from dependencies .auth import get_current_user
8
+
9
+ router = APIRouter (prefix = "/api/v1/openai" , tags = ["OpenAI" ])
10
+
11
+ @router .post ("/complete" , response_model = OpenAIResponse )
12
+ async def complete_text (
13
+ request : OpenAIRequest ,
14
+ current_user : dict = Depends (get_current_user )
15
+ ):
16
+ """
17
+ Completes a given text using OpenAI's text completion API.
18
+ """
19
+ try :
20
+ response = await openai_service .complete_text (
21
+ text = request .text ,
22
+ model = request .model ,
23
+ temperature = request .temperature ,
24
+ max_tokens = request .max_tokens
25
+ )
26
+ return JSONResponse (
27
+ status_code = 200 ,
28
+ content = jsonable_encoder (
29
+ {"response" : response .choices [0 ].text }
30
+ )
31
+ )
32
+ except Exception as e :
33
+ raise HTTPException (
34
+ status_code = 500 ,
35
+ detail = f"Error completing text: { str (e )} "
36
+ )
37
+
38
+ @router .post ("/translate" , response_model = OpenAIResponse )
39
+ async def translate_text (
40
+ request : OpenAIRequest ,
41
+ current_user : dict = Depends (get_current_user )
42
+ ):
43
+ """
44
+ Translates a given text using OpenAI's translation API.
45
+ """
46
+ try :
47
+ response = await openai_service .translate_text (
48
+ text = request .text ,
49
+ source_language = request .source_language ,
50
+ target_language = request .target_language
51
+ )
52
+ return JSONResponse (
53
+ status_code = 200 ,
54
+ content = jsonable_encoder (
55
+ {"response" : response .choices [0 ].text }
56
+ )
57
+ )
58
+ except Exception as e :
59
+ raise HTTPException (
60
+ status_code = 500 ,
61
+ detail = f"Error translating text: { str (e )} "
62
+ )
63
+
64
+ @router .post ("/summarize" , response_model = OpenAIResponse )
65
+ async def summarize_text (
66
+ request : OpenAIRequest ,
67
+ current_user : dict = Depends (get_current_user )
68
+ ):
69
+ """
70
+ Summarizes a given text using OpenAI's summarization API.
71
+ """
72
+ try :
73
+ response = await openai_service .summarize_text (
74
+ text = request .text ,
75
+ model = request .model
76
+ )
77
+ return JSONResponse (
78
+ status_code = 200 ,
79
+ content = jsonable_encoder (
80
+ {"response" : response .choices [0 ].text }
81
+ )
82
+ )
83
+ except Exception as e :
84
+ raise HTTPException (
85
+ status_code = 500 ,
86
+ detail = f"Error summarizing text: { str (e )} "
87
+ )
0 commit comments