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