hobodrifterdavid / nllb-docker-rest

Use Ctranslate2 with NLLB-200 inside a docker container with GPUs
8 stars 1 forks source link

"GET / HTTP/1.1" 404 Not Found #1

Closed iamfoolberg closed 1 year ago

iamfoolberg commented 1 year ago

root@aiserver:/aidata/nllb-docker-rest# docker run -it --rm --gpus '"device=0,1"' -p 8000:8000 -v $(pwd):/app nllb None of PyTorch, TensorFlow >= 2.0, or Flax have been found. Models won't be available and only tokenizers, configuration and file/data utilities can be used. INFO: Started server process [1] INFO: Waiting for application startup. INFO: Application startup complete. INFO: Uvicorn running on http://0.0.0.0:8000 (Press CTRL+C to quit) INFO: 192.168.2.183:14520 - "GET /dt_translate_nllb HTTP/1.1" 405 Method Not Allowed INFO: 192.168.2.183:14520 - "GET / HTTP/1.1" 404 Not Found INFO: 192.168.2.183:14523 - "GET / HTTP/1.1" 404 Not Found

hobodrifterdavid commented 1 year ago

Oh. I didn't know that someone was going to use this. :) I'll try a clean install, check everything works.

iamfoolberg commented 1 year ago

add a html page to issue the post action and show the result😁

iamfoolberg commented 1 year ago

Here is my index.html(in ./myhtml)

<!DOCTYPE html>
<html>
  <head>
        <title>NLLB Translator</title>
    <meta charset="utf-8">
  </head>
  <script src="https://cdn.bootcss.com/jquery/1.12.4/jquery.min.js"></script>
  <body>

                <form name="myForm">
        <input type="hidden" name="action" value="login">
                <h1 align="center">NLLB Translation</h1>
        <table align="center">
        <tr>
            <td>sourceLangCode_flores:</td>
            <td>
                <select name="sourceLangCode_flores" >
                    <option value="en" selected="selected">en</option>
                    <option value="es">es</option>
                </select>
            </td>
        </tr>
        <tr>
            <td>targetLangCode_flores:</td>
            <td>
                <select name="targetLangCode_flores" >
                    <option value="en" selected="selected">en</option>
                    <option value="es">es</option>
                </select>
            </td>
        </tr>
        <tr>
            <td>source:</td>
            <td>
                <textarea name="textArray" cols="30" rows="10">This is a test sentence.</textarea>
            </td>
        </tr>
        <tr>
            <td>result:</td>
            <td>
                <textarea name="resultArray" cols="30" rows="10">...</textarea>
            </td>
        </tr>
        <tr>
            <td>
                <input type="reset" value="Reset" >
            </td>
            <td align="center">
                <input type="button" onclick="mytranslate()" value="Translate" class="btn btn-primary">
            </td>
        </tr>
        </table>
                </form>
        </body>
                        <script type="text/javascript">
        function mytranslate() {
            var slc = myForm.sourceLangCode_flores.value;
            var tlc = myForm.targetLangCode_flores.value;
            var content = myForm.textArray.value;
            $.ajax({
                type: "POST",
                dataType: "json",
                url: '/dt_translate_nllb',
                contentType: "application/json",
                data:JSON.stringify({
                    "sourceLangCode_flores": slc,
                    "targetLangCode_flores": tlc,
                    "textArray": [content]
                }),
                success: function (result) {
                    console.log("data is :" + result)
                    if (result.status == "success") {
                         myForm.resultArray.value=result.data.translationArray[0];
                    }else {
                        alert(result.message)
                    }
                }
            });
        }
                </script>
</html>

and you should add lines in app.py, like:

from fastapi.staticfiles import StaticFiles
# Define a FastAPI app
app = FastAPI()
#define static html
app.mount("/translate", StaticFiles(directory="./myhtml", html=True), name="html")
iamfoolberg commented 1 year ago

And all options:

<option value="af">afr_Latn</option>
<option value="sq">als_Latn</option>
<option value="am">amh_Ethi</option>
<option value="ar">arb_Arab</option>
<option value="hy">hye_Armn</option>
<option value="az">azj_Latn</option>
<option value="eu">eus_Latn</option>
<option value="be">bel_Cyrl</option>
<option value="bn">ben_Beng</option>
<option value="bs">bos_Latn</option>
<option value="bg">bul_Cyrl</option>
<option value="ca">cat_Latn</option>
<option value="ceb">ceb_Latn</option>
<option value="zh-CN">zho_Hans</option>
<option value="zh-TW">zho_Hant</option>
<option value="hr">hrv_Latn</option>
<option value="cs">ces_Latn</option>
<option value="da">dan_Latn</option>
<option value="nl">nld_Latn</option>
<option value="en">eng_Latn</option>
<option value="eo">epo_Latn</option>
<option value="et">est_Latn</option>
<option value="fi">fin_Latn</option>
<option value="fr">fra_Latn</option>
<option value="gl">glg_Latn</option>
<option value="ka">kat_Geor</option>
<option value="de">deu_Latn</option>
<option value="el">ell_Grek</option>
<option value="gu">guj_Gujr</option>
<option value="ht">hat_Latn</option>
<option value="ha">hau_Latn</option>
<option value="iw">heb_Hebr</option>
<option value="hi">hin_Deva</option>
<option value="hu">hun_Latn</option>
<option value="is">isl_Latn</option>
<option value="ig">ibo_Latn</option>
<option value="id">ind_Latn</option>
<option value="ga">gle_Latn</option>
<option value="it">ita_Latn</option>
<option value="ja">jpn_Jpan</option>
<option value="jv">jav_Latn</option>
<option value="kn">kan_Knda</option>
<option value="kk">kaz_Cyrl</option>
<option value="km">khm_Khmr</option>
<option value="ko">kor_Hang</option>
<option value="ku">kmr_Latn</option>
<option value="ky">kir_Cyrl</option>
<option value="lo">lao_Laoo</option>
<option value="lv">lvs_Latn</option>
<option value="lt">lit_Latn</option>
<option value="lb">ltz_Latn</option>
<option value="mk">mkd_Cyrl</option>
<option value="mg">plt_Latn</option>
<option value="ms">zsm_Latn</option>
<option value="ml">mal_Mlym</option>
<option value="mt">mlt_Latn</option>
<option value="mi">mri_Latn</option>
<option value="mr">mar_Deva</option>
<option value="mn">khk_Cyrl</option>
<option value="my">mya_Mymr</option>
<option value="ne">npi_Deva</option>
<option value="no">nob_Latn</option>
<option value="ny">nya_Latn</option>
<option value="ps">pbt_Arab</option>
<option value="fa">pes_Arab</option>
<option value="pl">pol_Latn</option>
<option value="pt">por_Latn</option>
<option value="ro">ron_Latn</option>
<option value="ru">rus_Cyrl</option>
<option value="sm">smo_Latn</option>
<option value="gd">gla_Latn</option>
<option value="sr">srp_Cyrl</option>
<option value="sn">sna_Latn</option>
<option value="sd">snd_Arab</option>
<option value="si">sin_Sinh</option>
<option value="sk">slk_Latn</option>
<option value="sl">slv_Latn</option>
<option value="so">som_Latn</option>
<option value="es">spa_Latn</option>
<option value="su">sun_Latn</option>
<option value="sw">swh_Latn</option>
<option value="sv">swe_Latn</option>
<option value="tl">Ttgl_Latn</option>
<option value="tg">tgk_Cyrl</option>
<option value="ta">tam_Taml</option>
<option value="te">tel_Telu</option>
<option value="th">tha_Thai</option>
<option value="tr">tur_Latn</option>
<option value="uk">ukr_Cyrl</option>
<option value="ur">urd_Arab</option>
<option value="uz">uzn_Latn</option>
<option value="vi">vie_Latn</option>
<option value="cy">cym_Latn</option>
<option value="xh">xho_Latn</option>
<option value="yi">ydd_Hebr</option>
<option value="yo">yor_Latn</option>
<option value="zu">zul_Latn</option>
<option value="rw">kin_Latn</option>
<option value="or">ory_Orya</option>
<option value="tt">tat_Cyrl</option>
<option value="tk">tuk_Latn</option>
<option value="ug">uig_Arab</option>