Initial Commit
This commit is contained in:
3
.env
Normal file
3
.env
Normal file
@@ -0,0 +1,3 @@
|
||||
OPENAI_API_KEY=sk-e2f00b9fed01443b87407513ab14c494
|
||||
OPENAI_MODEL=deepseek-chat
|
||||
OPENAI_API_BASE=https://api.deepseek.com/v1 # (optional override if needed)
|
||||
3
.env.example
Normal file
3
.env.example
Normal file
@@ -0,0 +1,3 @@
|
||||
OPENAI_API_KEY=sk-your-real-openai-api-key
|
||||
OPENAI_MODEL=gpt-3.5-turbo
|
||||
OPENAI_API_BASE=https://api.openai.com/v1 # (optional override if needed)
|
||||
0
.gitignore
vendored
Normal file
0
.gitignore
vendored
Normal file
BIN
app/__pycache__/main.cpython-313.pyc
Normal file
BIN
app/__pycache__/main.cpython-313.pyc
Normal file
Binary file not shown.
BIN
app/api/v1/__pycache__/translate.cpython-313.pyc
Normal file
BIN
app/api/v1/__pycache__/translate.cpython-313.pyc
Normal file
Binary file not shown.
10
app/api/v1/translate.py
Normal file
10
app/api/v1/translate.py
Normal file
@@ -0,0 +1,10 @@
|
||||
from fastapi import APIRouter
|
||||
from app.models.translation import TranslationRequest, TranslationResponse
|
||||
from app.services.translator import translate_text
|
||||
|
||||
router = APIRouter()
|
||||
|
||||
@router.post("/", response_model=TranslationResponse)
|
||||
async def translate(request: TranslationRequest):
|
||||
translated_text = await translate_text(request.text, request.target_language)
|
||||
return TranslationResponse(translated_text=translated_text)
|
||||
BIN
app/core/__pycache__/config.cpython-313.pyc
Normal file
BIN
app/core/__pycache__/config.cpython-313.pyc
Normal file
Binary file not shown.
BIN
app/core/__pycache__/deepseek_client.cpython-313.pyc
Normal file
BIN
app/core/__pycache__/deepseek_client.cpython-313.pyc
Normal file
Binary file not shown.
10
app/core/config.py
Normal file
10
app/core/config.py
Normal file
@@ -0,0 +1,10 @@
|
||||
import os
|
||||
from dotenv import load_dotenv
|
||||
|
||||
# Load .env variables
|
||||
load_dotenv()
|
||||
|
||||
# Read environment variables with defaults
|
||||
OPENAI_API_KEY = os.getenv("OPENAI_API_KEY", "")
|
||||
OPENAI_MODEL = os.getenv("OPENAI_MODEL", "gpt-3.5-turbo")
|
||||
OPENAI_API_BASE = os.getenv("OPENAI_API_BASE", "https://api.openai.com/v1")
|
||||
27
app/core/deepseek_client.py
Normal file
27
app/core/deepseek_client.py
Normal file
@@ -0,0 +1,27 @@
|
||||
# app/services/openai_service.py
|
||||
import openai
|
||||
from openai import OpenAI
|
||||
from app.core.config import OPENAI_API_KEY, OPENAI_MODEL
|
||||
from app.core.config import OPENAI_API_BASE
|
||||
|
||||
# Set OpenAI API key from the environment
|
||||
openai.api_key = OPENAI_API_KEY
|
||||
openai.api_base = OPENAI_API_BASE
|
||||
|
||||
print(openai.api_key)
|
||||
print(OPENAI_MODEL)
|
||||
print(OPENAI_API_BASE)
|
||||
|
||||
async def chat_with_openai(messages: list):
|
||||
# Use the model from environment variable or fallback to default
|
||||
model = OPENAI_MODEL
|
||||
client = OpenAI(api_key=openai.api_key, base_url=openai.api_base)
|
||||
|
||||
response = client.chat.completions.create(
|
||||
model="deepseek-chat", # Or the model you want
|
||||
messages=messages, # Update this according to the new API syntax
|
||||
max_tokens=100, # Example parameter
|
||||
stream=False
|
||||
)
|
||||
|
||||
return response.choices[0].message.content
|
||||
7
app/main.py
Normal file
7
app/main.py
Normal file
@@ -0,0 +1,7 @@
|
||||
from fastapi import FastAPI
|
||||
from app.api.v1 import translate
|
||||
|
||||
app = FastAPI()
|
||||
|
||||
# Include your routes
|
||||
app.include_router(translate.router, prefix="/api/v1/translate", tags=["translate"])
|
||||
BIN
app/models/__pycache__/translation.cpython-313.pyc
Normal file
BIN
app/models/__pycache__/translation.cpython-313.pyc
Normal file
Binary file not shown.
8
app/models/translation.py
Normal file
8
app/models/translation.py
Normal file
@@ -0,0 +1,8 @@
|
||||
from pydantic import BaseModel
|
||||
|
||||
class TranslationRequest(BaseModel):
|
||||
text: str
|
||||
target_language: str # Example: 'id' for Indonesian, 'en' for English, etc.
|
||||
|
||||
class TranslationResponse(BaseModel):
|
||||
translated_text: str
|
||||
BIN
app/services/__pycache__/translator.cpython-313.pyc
Normal file
BIN
app/services/__pycache__/translator.cpython-313.pyc
Normal file
Binary file not shown.
9
app/services/translator.py
Normal file
9
app/services/translator.py
Normal file
@@ -0,0 +1,9 @@
|
||||
from app.core.deepseek_client import chat_with_openai
|
||||
|
||||
async def translate_text(text: str, target_language: str) -> str:
|
||||
messages = [
|
||||
{"role": "system", "content": f"Translate the following text into {target_language}. Output only the translated text without explanation."},
|
||||
{"role": "user", "content": text},
|
||||
]
|
||||
translated_text = await chat_with_openai(messages)
|
||||
return translated_text
|
||||
4
requirements.txt
Normal file
4
requirements.txt
Normal file
@@ -0,0 +1,4 @@
|
||||
fastapi
|
||||
uvicorn
|
||||
openai
|
||||
python-dotenv
|
||||
Reference in New Issue
Block a user