From ab5d4d0fe0ba413fbcc367474fd452615082e6ca Mon Sep 17 00:00:00 2001
From: Vila <124278082+snekkenull@users.noreply.github.com>
Date: Sat, 29 Jun 2024 23:27:42 +0800
Subject: [PATCH 01/22] Add webui App
---
app/__init__.py | 0
app/webui/README.md | 89 +++++++++++++++++++++
app/webui/__init__.py | 0
app/webui/app.py | 153 +++++++++++++++++++++++++++++++++++++
app/webui/image.png | Bin 0 -> 93607 bytes
app/webui/patch.py | 135 ++++++++++++++++++++++++++++++++
app/webui/process.py | 128 +++++++++++++++++++++++++++++++
app/webui/requirements.txt | 12 +++
8 files changed, 517 insertions(+)
create mode 100644 app/__init__.py
create mode 100644 app/webui/README.md
create mode 100644 app/webui/__init__.py
create mode 100644 app/webui/app.py
create mode 100644 app/webui/image.png
create mode 100644 app/webui/patch.py
create mode 100644 app/webui/process.py
create mode 100644 app/webui/requirements.txt
diff --git a/app/__init__.py b/app/__init__.py
new file mode 100644
index 0000000..e69de29
diff --git a/app/webui/README.md b/app/webui/README.md
new file mode 100644
index 0000000..7d41b28
--- /dev/null
+++ b/app/webui/README.md
@@ -0,0 +1,89 @@
+
+## Translation Agent WebUI
+
+This repository contains a Gradio web UI for a translation agent that utilizes various language models for translation.
+
+### Preview
+
+![webui](image.png)
+
+**Features:**
+
+- **Tokenized Text:** Displays translated text with tokenization, highlighting differences between original and translated words.
+- **Document Upload:** Supports uploading various document formats (PDF, TXT, DOC, etc.) for translation.
+- **Multiple API Support:** Integrates with popular language models like:
+ - Groq
+ - OpenAI
+ - Cohere
+ - Ollama
+ - Together AI
+ - Hugging Face Inference API
+ ...
+Llama Index supported, easily extendable
+
+
+**Getting Started**
+
+1. **Install Dependencies:**
+ **Linux(Using Python Venv)**
+ ```bash
+ git clone https://github.com/andrewyng/translation-agent.git
+ cd translation-agent
+ python -m venv web_ui
+ source web_ui/bin/activate
+ pip install -r app/webui/requirements.txt
+
+ ```
+ **Windows**
+ ```bash
+ git clone https://github.com/andrewyng/translation-agent.git
+ cd translation-agent
+ python -m venv web_ui
+ .\web_ui\Scripts\activate
+ pip install -r app/webui/requirements.txt
+
+ ```
+
+2. **Set API Keys:**
+ - Rename `.env.sample` to `.env`, you can add your API keys for each service:
+
+ ```
+ OPENAI_API_KEY="sk-xxxxx" # Keep this field
+ GROQ_API_KEY="xxxxx"
+ COHERE_API_KEY="xxxxx"
+ TOGETHER_API_KEY="xxxxx"
+ HF_TOKEN="xxxxx"
+ ```
+ - Then you can also set the API_KEY in webui.
+
+3. **Run the Web UI:**
+ ```bash
+ python -m app.webui.app
+ ```
+
+4. **Access the Web UI:**
+ Open your web browser and navigate to `http://127.0.0.1:7860/`.
+
+**Usage:**
+
+1. Select your desired translation API from the Endpoint dropdown menu.
+2. Input the source language, target language, and country(optional).
+3. If using Hugging Face API, enter your `HF_TOKEN` in the `api_key` textbox.
+4. Input the source text or upload your document file.
+5. Submit and get translation, the UI will display the translated text with tokenization and highlight differences.
+
+**Customization:**
+
+- **Add New LLMs:** Modify the `patch.py` file to integrate additional LLMs.
+
+**Contributing:**
+
+Contributions are welcome! Feel free to open issues or submit pull requests.
+
+**License:**
+
+This project is licensed under the MIT License.
+
+**DEMO:**
+
+[Huggingface Demo](https://huggingface.co/spaces/vilarin/Translation-Agent-WebUI)
diff --git a/app/webui/__init__.py b/app/webui/__init__.py
new file mode 100644
index 0000000..e69de29
diff --git a/app/webui/app.py b/app/webui/app.py
new file mode 100644
index 0000000..ccf0cb6
--- /dev/null
+++ b/app/webui/app.py
@@ -0,0 +1,153 @@
+import sys
+import os
+
+# Add the project root to the Python path
+project_root = os.path.abspath(os.path.join(os.path.dirname(__file__), '..', '..'))
+sys.path.insert(0, project_root)
+
+import re
+import gradio as gr
+from app.webui.process import model_load, diff_texts, translator
+from llama_index.core import SimpleDirectoryReader
+
+def huanik(
+ endpoint,
+ model,
+ api_key,
+ source_lang,
+ target_lang,
+ source_text,
+ country,
+ max_tokens,
+ context_window,
+ num_output,
+):
+
+ if not source_text or source_lang == target_lang:
+ raise gr.Error("Please check that the content or options are entered correctly.")
+
+ try:
+ model_load(endpoint, model, api_key, context_window, num_output)
+ except Exception as e:
+ raise gr.Error(f"An unexpected error occurred: {e}")
+
+ source_text = re.sub(r'\n+', '\n', source_text)
+
+ init_translation, reflect_translation, final_translation = translator(
+ source_lang=source_lang,
+ target_lang=target_lang,
+ source_text=source_text,
+ country=country,
+ max_tokens=max_tokens,
+ )
+
+ final_diff = gr.HighlightedText(
+ diff_texts(init_translation, final_translation),
+ label="Diff translation",
+ combine_adjacent=True,
+ show_legend=True,
+ visible=True,
+ color_map={"removed": "red", "added": "green"})
+
+ return init_translation, reflect_translation, final_translation, final_diff
+
+def update_model(endpoint):
+ endpoint_model_map = {
+ "Groq": "llama3-70b-8192",
+ "OpenAI": "gpt-4o",
+ "Cohere": "command-r",
+ "TogetherAI": "Qwen/Qwen2-72B-Instruct",
+ "Ollama": "llama3",
+ "Huggingface": "mistralai/Mistral-7B-Instruct-v0.3"
+ }
+ return gr.update(value=endpoint_model_map[endpoint])
+
+def read_doc(file):
+ docs = SimpleDirectoryReader(input_files=[file]).load_data()
+ return docs[0].text
+
+TITLE = """
+
+"""
+
+CSS = """
+ h1 {
+ text-align: center;
+ display: block;
+ height: 10vh;
+ align-content: center;
+ }
+ footer {
+ visibility: hidden;
+ }
+"""
+
+with gr.Blocks(theme="soft", css=CSS, fill_height=True) as demo:
+ gr.Markdown(TITLE)
+ with gr.Row():
+ with gr.Column(scale=1):
+ endpoint = gr.Dropdown(
+ label="Endpoint",
+ choices=["Groq","OpenAI","Cohere","TogetherAI","Ollama","Huggingface"],
+ value="OpenAI",
+ )
+ model = gr.Textbox(label="Model", value="gpt-4o", )
+ api_key = gr.Textbox(label="API_KEY", type="password", )
+ source_lang = gr.Textbox(
+ label="Source Lang",
+ value="English",
+ )
+ target_lang = gr.Textbox(
+ label="Target Lang",
+ value="Spanish",
+ )
+ country = gr.Textbox(label="Country", value="Argentina", max_lines=1)
+ with gr.Accordion("Advanced Options", open=False):
+ max_tokens = gr.Slider(
+ label="Max tokens Per Chunk",
+ minimum=512,
+ maximum=2046,
+ value=1000,
+ step=8,
+ )
+ context_window = gr.Slider(
+ label="Context Window",
+ minimum=512,
+ maximum=8192,
+ value=4096,
+ step=8,
+ )
+ num_output = gr.Slider(
+ label="Output Num",
+ minimum=256,
+ maximum=8192,
+ value=512,
+ step=8,
+ )
+ with gr.Column(scale=4):
+ source_text = gr.Textbox(
+ label="Source Text",
+ value="How we live is so different from how we ought to live that he who studies "+\
+ "what ought to be done rather than what is done will learn the way to his downfall "+\
+ "rather than to his preservation.",
+ lines=10,
+ )
+ with gr.Tab("Final"):
+ output_final = gr.Textbox(label="FInal Translation", lines=10, show_copy_button=True)
+ with gr.Tab("Initial"):
+ output_init = gr.Textbox(label="Init Translation", lines=10, show_copy_button=True)
+ with gr.Tab("Reflection"):
+ output_reflect = gr.Textbox(label="Reflection", lines=10, show_copy_button=True)
+ with gr.Tab("Diff"):
+ output_diff = gr.HighlightedText(visible = False)
+ with gr.Row():
+ submit = gr.Button(value="Submit")
+ upload = gr.UploadButton(label="Upload", file_types=["text"])
+ clear = gr.ClearButton([source_text, output_init, output_reflect, output_final])
+
+ endpoint.change(fn=update_model, inputs=[endpoint], outputs=[model])
+ submit.click(fn=huanik, inputs=[endpoint, model, api_key, source_lang, target_lang, source_text, country, max_tokens, context_window, num_output], outputs=[output_init, output_reflect, output_final, output_diff])
+ upload.upload(fn=read_doc, inputs = upload, outputs = source_text)
+
+if __name__ == "__main__":
+ demo.queue(api_open=False).launch(show_api=False, share=False)
\ No newline at end of file
diff --git a/app/webui/image.png b/app/webui/image.png
new file mode 100644
index 0000000000000000000000000000000000000000..daf74d46a9d0fd31b5c2c24bc02cf7c56fc802a1
GIT binary patch
literal 93607
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