From 5469707c2db10be148bf0658513c48f163a1dd36 Mon Sep 17 00:00:00 2001 From: bladeclara42 <71927457+bladeclara42@users.noreply.github.com> Date: Tue, 13 May 2025 22:43:56 +0700 Subject: [PATCH] Initial Commit --- .env | 3 ++ .env.example | 3 ++ .gitignore | 0 app/__pycache__/main.cpython-313.pyc | Bin 0 -> 403 bytes .../v1/__pycache__/translate.cpython-313.pyc | Bin 0 -> 826 bytes app/api/v1/translate.py | 10 +++++++ app/core/__pycache__/config.cpython-313.pyc | Bin 0 -> 507 bytes .../deepseek_client.cpython-313.pyc | Bin 0 -> 1157 bytes app/core/config.py | 10 +++++++ app/core/deepseek_client.py | 27 ++++++++++++++++++ app/main.py | 7 +++++ .../__pycache__/translation.cpython-313.pyc | Bin 0 -> 722 bytes app/models/translation.py | 8 ++++++ .../__pycache__/translator.cpython-313.pyc | Bin 0 -> 727 bytes app/services/translator.py | 9 ++++++ requirements.txt | 4 +++ 16 files changed, 81 insertions(+) create mode 100644 .env create mode 100644 .env.example create mode 100644 .gitignore create mode 100644 app/__pycache__/main.cpython-313.pyc create mode 100644 app/api/v1/__pycache__/translate.cpython-313.pyc create mode 100644 app/api/v1/translate.py create mode 100644 app/core/__pycache__/config.cpython-313.pyc create mode 100644 app/core/__pycache__/deepseek_client.cpython-313.pyc create mode 100644 app/core/config.py create mode 100644 app/core/deepseek_client.py create mode 100644 app/main.py create mode 100644 app/models/__pycache__/translation.cpython-313.pyc create mode 100644 app/models/translation.py create mode 100644 app/services/__pycache__/translator.cpython-313.pyc create mode 100644 app/services/translator.py create mode 100644 requirements.txt diff --git a/.env b/.env new file mode 100644 index 0000000..3c5188b --- /dev/null +++ b/.env @@ -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) diff --git a/.env.example b/.env.example new file mode 100644 index 0000000..3c847cc --- /dev/null +++ b/.env.example @@ -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) diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..e69de29 diff --git a/app/__pycache__/main.cpython-313.pyc b/app/__pycache__/main.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..60050dd65b93ac07d1ea130466fd1118ec550bef GIT binary patch literal 403 zcmYjL%SyvQ6rJhBM5|G3mu`Yx1tg(@i;5_MRBS;?<8q)(?X-=gNth(X$42l6-1rgx zMg4=;O<|x5apkViAMi$_^uo+}aPHwQbUlw?ZY;h32KbqZzfm)?Xajjc4sviE)v&-u z%5(KxjR;~Oig(dL78MFrn(LWZ0!o@2OERMlaTFUnD-~$zsiyXo`X-iIl|}Js;{xbf zESMj8EavyyHVa*QShoKyp``hoR71hL?yXc}){8DpO=?{zfV3bGka-q{7AR|2{@IWO z47ut0*Iv@$EfFL!7gGJjSF}j4kmlJTJ$K`N(l)Ar*WrRTxQGIuc`dk%LIWKz*SEqu zxq37RI*G@R#TIO0c+oz5bAmCRp`95rK2-h5eI#=gVP%R66I6JvOpB#Su{7R089j^! MV^nxYS3-xiZ!H93)&Kwi literal 0 HcmV?d00001 diff --git a/app/api/v1/__pycache__/translate.cpython-313.pyc b/app/api/v1/__pycache__/translate.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..1e9e5e3f8a2bec2ae7a0791bd99bc78e77efd90c GIT binary patch literal 826 zcmZ8f&rcIk5T3WY?NXo+F=-P^O;s-Ifkx9pY8t`BXedc7T{*Eyv%;gTsk?RFw$YPS z51M$!KLO$7QU8n*4|#wP~wQyL?Q z43&XH$_|)dvQ;QCWErU|t4c{lwWOgI*y?Je6vb!;EOr(0Ln`W)UcE3h{(4N!(#%Lf zF{756Q%wC5Jk~-^tUhMMjwRY)e(X+VrRsJ(j)vmTJVe_OE!%6lPL)6HaN+qE|M7{o z>j+M~DQ^hnHIF~@e3q3?zk%Y*Oo?Xr#TSGicLw4KmdFM)-Xls!E6q z74k~ff07>}S7=-f6`;#@)N*7J9JZm4pzF+J1vUp`P>wIE+sshPROfV9{8muCp<$F5 zz817H?b%r8Uae(2^^RTVC>LcY7^4R#=n^tmDy+-Fz=APTy;%HSk3fHk) zHJYkrx7&1@R`-S#=9_On_hX@j(-cV7DzbDPLl1tYsA|?ff7$zkK zQ>Zc^k0FQ+rWrviF$6OQvzRhLM2c8&s$vahgR5f2sfs{=z6QBqP+Y^ATCSdgigUyz!Yn5mbXpQ~SHsL6hdDZls@8^od_W}xl2 z*wRx$wibbctOyhaMeIOgCBtVR$#BcS#VW=~YCndEgCLpz_I6p5j2jsk% z#DapDfVdb6B2}k zEDhxgc4=cC3ydXYrWE~o;!@5VYcJY&tdhS(ypXA3i4wa=MRX)J${V4aJf`|MGTWhT z97Op!{0JuVs!YrK#lR&c$LA&TSfNB%Bwz5IJPBE3Yh-Bgy%Oxe;P~)sDtdtu7i`| zcX$VzD1r8IZ}cM0aoHu8XaXVsBf@bMbx9C}9}xcved{p%6;9Pv=t`8;M;*1UW2p4+ lpp+M$c=x?E=>3d)cMZC^_SfKGU5*K--`w~OsOV9w_7{~j`7i(g literal 0 HcmV?d00001 diff --git a/app/core/config.py b/app/core/config.py new file mode 100644 index 0000000..0c13826 --- /dev/null +++ b/app/core/config.py @@ -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") diff --git a/app/core/deepseek_client.py b/app/core/deepseek_client.py new file mode 100644 index 0000000..1c25d5e --- /dev/null +++ b/app/core/deepseek_client.py @@ -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 diff --git a/app/main.py b/app/main.py new file mode 100644 index 0000000..4786958 --- /dev/null +++ b/app/main.py @@ -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"]) diff --git a/app/models/__pycache__/translation.cpython-313.pyc b/app/models/__pycache__/translation.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..e78bd61bbf4f9b2a8523ebb59a6db3ae0d3a76bd GIT binary patch literal 722 zcmZ`%O=}cE5Urk%-O1t*NLbkQAd4U}9y|ylNDvfJqPPUd<3Q8Nw3C5J&!oBs%sGer zf`ES^e@H@uCr=9=gkA4e&+L*2+R)Xn>UGsry`E(pkAPP4BtHI0=MU#>R=5VsJpz}I zLdxF5JBDlq6SxnlcNbDWV^9759(r9gplEn2>KB7#xNuhzX187mEkD$`td9Dm-mWXa z@)7x$kO8t3&`TNm4RW30*kf>`VD*p0d zKNC%pQ3tZpnYo$dadU=F{m!^?bWG*~u1E3t{`GkBEtufWhX1#cGot^mWa^WCK@!^C zzx2~ht+ZSWDVL;M_ak%ewCrY@qx)St*f+52-0{Y^L>-Z#R&RCb_<0i8s5#4pBC*iT x)KA#uI=OD@*=VnSlovQ9g3;D9GQWJr*mtapD7FP$Tn^loA z9>vDhY*U*d9mxjM)gU6KGeo|;h6OX-#w?4_(jDGNwxC8#Ipj$j9V3|~B$ zTKIhLU}2>N5R#`9;c7sS0ZuK`!{L#=xi9%*E9Vrvokzd(Fm~PeN&`dbj<}+R;mffN_ECk#n{VgEs1d%(vD^vrDaFa zKD03hIb?71ch*EbOW0j`4paN5Y8+k5A%uK~>6Yt}OK(&Q5IzJQ_!#`LnLLYS{{S}L B#-{)P literal 0 HcmV?d00001 diff --git a/app/services/translator.py b/app/services/translator.py new file mode 100644 index 0000000..a829117 --- /dev/null +++ b/app/services/translator.py @@ -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 diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..6def115 --- /dev/null +++ b/requirements.txt @@ -0,0 +1,4 @@ +fastapi +uvicorn +openai +python-dotenv