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