Ir al contenido principal
Versión: 1.0.0

Traducción automática en GaiaNet

La traducción agéntica del profesor Andrew Ng es una gran demostración de cómo coordinar múltiples "agentes" LLM para que trabajen en una única tarea. Permite que varios LLM más pequeños (como Llama-3 o Gemma-2) trabajen juntos y produzcan mejores resultados que un único LLM grande (como ChatGPT).

GaiaNet, con más de 2000 nodos ejecutando todo tipo de LLms y bases de conocimiento, ofrece una gran oportunidad para que las aplicaciones agenticas elijan y utilicen sus propios backends LLM.

Introducción al Agente de Traducción LLM

Este agente de traducción LLM está diseñado para facilitar una traducción precisa y eficaz en varios idiomas. Emplea LLMs (Large Language Models) de código abierto para proporcionar traducciones de alta calidad. Puedes utilizar tus propios modelos ajustados o cualquier LLM de Hugging Face como Meta's Llama 3.

Para obtener comandos detallados sobre cómo iniciar y ejecutar este agente, visite GitHub - Second State/translation-agent.

Para empezar, clone el Agente de Traducción.

git clone https://github.com/second-state/translation-agent.git

cd translation-agent
git checkout use_llamaedge

A continuación, instalaremos un nodo GaiaNet local, que proporciona los servicios API backend requeridos por el agente. Puedes, por supuesto, usar nodos GaiaNet de la comunidad si no quieres empezar uno propio.

curl -sSfL 'https://github.com/GaiaNet-AI/gaianet-node/releases/latest/download/install.sh' | bash

También necesitará las siguientes configuraciones y requisitos previos para ejecutar la aplicación de agente. Si está utilizando un nodo público de GaiaNet en lugar de su nodo local, sustituya el archivo http://localhost:8080 con https://node_id.us.gaianet.network.

export OPENAI_BASE_URL="http://localhost:8080/v1"
export PYTHONPATH=${PWD}/src
export OPENAI_API_KEY="GAIANET"

pip install python-dotenv
pip install openai tiktoken icecream langchain_text_splitters

Demostración 1: Ejecución de agentes de traducción con Llama-3-8B

En primer lugar, vamos a ejecutar el agente de traducción con el popular modelo Llama-3 de Meta AI. Seleccionamos el modelo Llama-3 más pequeño (el modelo 8b) para esta demostración. La tarea de traducción es del chino al inglés. Nuestro texto de partida está en chino y es una breve introducción al antiguo palacio real chino, la Ciudad Prohibida.

Paso 1.1: Ejecutar un nodo GaiaNet Llama-3-8B

Configure y descargue el modelo. Dado que el tamaño del modelo es de 5,73 GB. Puede tardar un poco en descargarse.

gaianet init --config https://raw.githubusercontent.com/GaiaNet-AI/node-configs/main/llama-3-8b-instruct/config.json

A continuación, utilice el siguiente comando para iniciar el nodo GaiaNet.

inicio de gaianet

Paso 1.2 Ejecutar el Agente de Traducción sobre Llama-3-8B

Encuentra el ejemplos/ejemplo_script.py en su repositorio clonado del agente y revise su código. Le dice al agente dónde encontrar tu documento y cómo traducirlo. Cambia el nombre del modelo por el que estés usando, aquí estamos usando Meta-Llama-3-8B-Instruct-Q5_K_M y cambia también los idiomas de origen y destino que quieras (aquí ponemos Chino como lengua de partida y Inglés como lengua de llegada).

import os
import translation_agent as ta

if __name__ == "__main__":
source_lang, target_lang, country = "Chinese", "English", "Britain"

relative_path = "sample-texts/forbiddencity.txt"
script_dir = os.path.dirname(os.path.abspath(__file__))

full_path = os.path.join(script_dir, relative_path)

with open(full_path, encoding="utf-8") as file:
source_text = file.read()

print(f"Source text:\n\n{source_text}\n------------\n")

translation = ta.translate(
source_lang=source_lang,
target_lang=target_lang,
source_text=source_text,
country=country,
model="Meta-Llama-3-8B-Instruct-Q5_K_M",
)

print(f"Translation:\n\n{translation}")

A continuación, puede encontrar un ejemplos/textos-muestra en tu repositorio clonado. Coloque el archivo que desea traducir en esta carpeta y obtenga su ruta. Aquí, como hemos llamado a nuestro texto fuente ciudadprohibida.txtla ruta relativa al documento sería sample-texts/forbiddencity.txt.

Ejecute los siguientes comandos para traducir su archivo de texto al inglés.

cd ejemplos
python ejemplo_script.py

Espere unos minutos y aparecerá una versión totalmente traducida en la pantalla de su terminal.

Demostración 2: Ejecución de agentes de traducción con gemma-2-27b

La ventaja de ejecutar el Agente de Traducción con GaiaNet es la posibilidad de que los usuarios elijan e incrusten diferentes LLMs para diferentes tareas del agente. Para demostrar este punto, cambiaremos el LLM del agente de traducción de Llama-3-8b a gemma-2-27b de Google, que tiene un tamaño similar pero obtiene mejores resultados en muchas pruebas relacionadas con el lenguaje.

La tarea de traducción es la misma que antes. Nuestro texto de partida está en chino y es una breve introducción al antiguo palacio real chino, la Ciudad Prohibida. El texto de destino es el inglés.

Paso 2.1 Ejecutar un nodo gemma-2-27b GaiaNet

Configura y descarga el modelo. Dado que el tamaño del modelo es de 6,40 G, podría tardar un poco en descargarse.

gaianet init --config https://raw.githubusercontent.com/GaiaNet-AI/node-configs/main/gemma-2-27b-it/config.json

A continuación, utilice el siguiente comando para iniciar el nodo GaiaNet.

inicio de gaianet

Paso 2.2 Ejecute el Agente de Traducción para que se ejecute sobre gemma-2-27b

Encuentra el ejemplos/ejemplo_script.py en su repositorio clonado del agente y revise su código. Le dice al agente dónde encontrar tu documento y cómo traducirlo. Cambia el nombre del modelo por el que estés usando, aquí estamos usando gemma-2-27b-it-Q5_K_M y cambia también los idiomas de origen y destino que quieras (aquí ponemos Chino como lengua de partida y Inglés como lengua de llegada).

import os  
import translation_agent as ta

if __name__ == "__main__":
source_lang, target_lang, country = "Chinese", "English", "Britain"

relative_path = "sample-texts/forbiddencity.txt"
script_dir = os.path.dirname(os.path.abspath(__file__))

full_path = os.path.join(script_dir, relative_path)

with open(full_path, encoding="utf-8") as file:
source_text = file.read()

print(f"Source text:\n\n{source_text}\n------------\n")

translation = ta.translate(
source_lang=source_lang,
target_lang=target_lang,
source_text=source_text,
country=country,
model="gemma-2-27b-it-Q5_K_M",
)

print(f"Translation:\n\n{translation}")

A continuación, puede encontrar un ejemplos/textos-muestra en tu repositorio clonado. Ponga el archivo que desea traducir en esta carpeta y obtenga su ruta. Aquí, como hemos llamado a nuestro texto fuente ciudadprohibida.txtla ruta relativa al documento sería sample-texts/forbiddencity.txt.

Ejecute los siguientes comandos para traducir su archivo de texto al inglés.

cd ejemplos    
python ejemplo_script.py

Puede encontrar el resultado traducido al inglés aquí.

Demostración 3: ejecución de agentes de traducción con el modelo de contexto largo Phi-3-Medium

Los modelos Llama-3 y Gemma-2 son excelentes LLM, pero tienen ventanas de contexto relativamente pequeñas. El agente requiere que todo el texto quepa en la ventana de contexto del LLM, y eso limita el tamaño de los artículos que pueden traducir. Para solucionar este problema, podríamos seleccionar un LLM de código abierto con una ventana de contexto grande. Para esta demostración, elegimos el modelo Phi-3-medium-128k de Microsoft, que tiene una ventana de contexto masiva de 128k (más de 100 mil palabras o la longitud de varios libros).

Publicamos un extenso artículo en chino sobre la colaboración de la Ciudad Prohibida con el Palacio Varsaille a través de nuestro Agente de Traducción alimentado por un modelo Phi-3-medium-128k que ponemos en marcha localmente.

Paso 3.1: Ejecutar un nodo Phi-3-medium-128k GaiaNet.

Configura y descarga el modelo.

gaianet init --config https://raw.githubusercontent.com/GaiaNet-AI/node-configs/main/phi-3-medium-instruct-128k/config_full.json

A continuación, utilice el siguiente comando para iniciar el nodo GaiaNet con una ventana contextual de 128k.

inicio de gaianet

Paso 3.2 Clonar y ejecutar el Agente de Traducción sobre Phi-3-medium-128k

Encuentra el ejemplos/ejemplo_script.py en su repositorio clonado del agente y revise su código. Le dice al agente dónde encontrar tu documento y cómo traducirlo. Cambia el nombre del modelo por el que estés usando, aquí estamos usando Phi-3-medium-128k-instruct-Q5_K_M y cambia también los idiomas de origen y destino que quieras (aquí ponemos Chino como lengua de partida y Inglés como lengua de llegada).

import os  
import translation_agent as ta

if __name__ == "__main__":
source_lang, target_lang, country = "Chinese", "English", "Britain"

relative_path = "sample-texts/long_article.txt"
script_dir = os.path.dirname(os.path.abspath(__file__))

full_path = os.path.join(script_dir, relative_path)

with open(full_path, encoding="utf-8") as file:
source_text = file.read()

print(f"Source text:\n\n{source_text}\n------------\n")

translation = ta.translate(
source_lang=source_lang,
target_lang=target_lang,
source_text=source_text,
country=country,
model="Phi-3-medium-128k-instruct-Q5_K_M",
)

print(f"Translation:\n\n{translation}")

A continuación, puede encontrar un ejemplos/textos-muestra en tu repositorio clonado. Coloque el archivo que desea traducir en esta carpeta y obtenga su ruta. Aquí, como hemos llamado a nuestro texto fuente articulo_largo.txtla ruta relativa al documento sería sample-texts/long_article.txt.

cd ejemplos
python ejemplo_script.py

Los resultados fueron impresionantes: la traducción captó con gran fidelidad los matices y el contexto del texto original.

Evaluación de la calidad de la traducción

Los tres modelos, Llama-3-8B, gemma-2-27b y Phi-3-medium, han mostrado distintos niveles de rendimiento en la traducción de contenidos históricos y culturales complejos del chino al inglés.

Llama-3-8B proporciona una traducción que capta eficazmente el contenido factual, pero muestra rigidez ocasional en el lenguaje, lo que posiblemente indica un enfoque de traducción directa que no adapta plenamente las expresiones idiomáticas. No mantiene el título de las secciones ni el formato del texto original y deja sin traducir algunas partes.

En cambio, la traducción de gemma-2-27b es bastante precisa y conserva el significado original del breve artículo introductorio de Ciudad Prohibida. La traducción de gemma-2-27b muestra una fluidez y naturalidad en inglés, lo que sugiere una sofisticada comprensión tanto de la lengua de partida como de las estructuras gramaticales de la lengua de llegada. La elección de palabras y estructuras oracionales en el resultado de gemma-2-27b demuestra un alto grado de delicadeza lingüística, lo que sugiere que podría ser muy adecuado para traducir textos formales e históricamente matizados.

El modelo Phi-3-medium-128k puede traducir textos de libros del chino al inglés. Demuestra una gran capacidad para manejar grandes volúmenes de contenido complejo, lo que sugiere un manejo avanzado de la memoria y un conocimiento del contexto. La calidad de la traducción se mantiene constante incluso al aumentar la longitud del texto, lo que indica la utilidad de Phi en proyectos que requieren traducciones extensas y detalladas. Pero se puede ver que comete ciertos errores, como confundir "Wenhua Hall" con "también conocida como Ciudad Prohibida" en el primer párrafo.

En general, cada modelo tiene sus puntos fuertes, destacando gemma-2-27b por su finura lingüística y Phi-3-medium-128k por manejar textos extensos.

Conclusión

GaiaNet proporciona una manera fácil de seleccionar y utilizar diferentes LLMs de código abierto en sus aplicaciones agenticas para aprovechar al máximo sus capacidades afinadas para tareas específicas.

Una vez que tengas un nodo GaiaNet local en funcionamiento, puedes compartirlo con otros y ganar dinero uniéndote a la red GaiaNet.