주요 콘텐츠로 건너뛰기
버전: 2.0.0

가이아에서 에이전트 번역

앤드류 응 교수의 에이전트 번역은 단일 작업을 위해 여러 LLM '에이전트'를 조정하는 방법에 대한 훌륭한 데모입니다. 이를 통해 여러 개의 작은 LLM(예: Llama-3 또는 Gemma-2)이 함께 작업하여 하나의 큰 LLM(예: ChatGPT)보다 더 나은 결과를 만들어낼 수 있습니다.

2000개 이상의 노드가 미세 조정된 모든 종류의 LLM과 지식 베이스를 실행하는 Gaia는 에이전트 앱이 자체 LLM 백엔드를 선택하고 사용할 수 있는 엄청난 기회를 제공합니다.

LLM 번역 에이전트 소개

이 LLM 번역 에이전트는 여러 언어에 걸쳐 정확하고 효율적인 번역을 용이하게 하도록 설계되었습니다. 오픈 소스 LLM(대규모 언어 모델)을 사용하여 고품질 번역을 제공합니다. 자체적으로 미세 조정한 모델을 사용하거나 메타의 라마 3과 같은 Hugging Face의 모든 LLM을 사용할 수 있습니다.

이 에이전트를 시작하고 실행하는 방법에 대한 자세한 명령은 GitHub - Second State/translation-agent를 참조하세요.

시작하려면 번역 에이전트를 복제하세요.

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

cd 번역 에이전트
git 체크아웃 사용_llamaedge

다음으로 에이전트에 필요한 백엔드 API 서비스를 제공하는 로컬 Gaia 노드를 설치합니다. 물론 직접 시작하고 싶지 않다면 커뮤니티의 Gaia 노드를 사용할 수도 있습니다.

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

또한 상담원 앱을 실행하려면 다음 구성 및 필수 구성 요소가 필요합니다. 로컬 노드 대신 퍼블릭 Gaia 노드를 사용하는 경우, 에이전트 앱의 http://localhost:8080 와 함께 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

데모 1: Llama-3-8B로 번역 에이전트 실행하기

먼저 Meta AI의 인기 모델인 Llama-3로 번역 에이전트를 실행해 보겠습니다. 이 데모에서는 가장 작은 Llama-3 모델(8b 모델)을 선택합니다. 번역 작업은 중국어에서 영어로입니다. 소스 텍스트는 고대 중국 왕궁인 자금성에 대한 간략한 소개인 중국어입니다.

1.1단계: Llama-3-8B Gaia 노드 실행하기

모델을 구성하고 다운로드합니다. 모델의 크기는 5.73GB입니다. 다운로드하는 데 시간이 걸릴 수 있습니다.

가이아넷 초기화 --config https://raw.githubusercontent.com/GaiaNet-AI/node-configs/main/llama-3-8b-instruct/config.json

다음으로 다음 명령을 사용하여 Gaia 노드를 시작합니다.

가이아넷 시작

1.2 단계 1.2 Llama-3-8B 위에서 번역 에이전트 실행하기

찾기 examples/example_script.py 파일을 복제된 에이전트 리포지토리에 추가하고 코드를 검토하세요. 에이전트에게 문서를 찾을 수 있는 위치와 번역 방법을 알려줍니다. 모델 이름을 현재 사용 중인 모델 이름으로 변경합니다. Meta-Llama-3-8B-Instruct-Q5_K_M 모델; 또한 원하는 소스 및 대상 언어를 변경합니다 (여기서는 중국어 를 소스 언어로 사용하고 영어 를 대상 언어로 설정합니다.)

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}")

그런 다음 예제/샘플 텍스트 폴더를 만듭니다. 이 폴더에 번역하려는 파일을 넣고 경로를 가져옵니다. 여기서는 소스 텍스트의 이름을 forbiddencity.txt로 설정하면 문서의 상대 경로는 샘플 텍스트/금지도시.txt.

텍스트 파일을 영어로 번역하려면 아래 명령을 실행하세요.

cd 예제
파이썬 예제_스크립트.py

몇 분 정도 기다리면 단말기 화면에 완전히 번역된 버전이 표시됩니다.

데모 2: gemma-2-27b로 번역 에이전트 실행하기

Gaia로 번역 에이전트를 실행하면 사용자가 다양한 에이전트 작업에 대해 서로 다른 LLM을 선택하여 임베드할 수 있다는 이점이 있습니다. 이 점을 보여드리기 위해 이제 번역 에이전트 LLM을 크기는 비슷하지만 여러 언어 관련 벤치마크에서 더 높은 점수를 받은 Google의 gemma-2-27b로 변경하겠습니다.

번역 작업은 이전과 동일합니다. 소스 텍스트는 고대 중국 왕궁인 자금성에 대한 간략한 소개인 중국어입니다. 번역 대상은 영어입니다.

2.1 gemma-2-27b Gaia 노드 실행하기

모델을 구성하고 다운로드합니다. 모델 용량이 6.40G이므로 다운로드하는 데 시간이 걸릴 수 있습니다.

가이아넷 초기화 --config https://raw.githubusercontent.com/GaiaNet-AI/node-configs/main/gemma-2-27b-it/config.json

다음으로 다음 명령을 사용하여 Gaia 노드를 시작합니다.

가이아넷 시작

2.2 단계 2.2 번역 에이전트를 실행하여 gemma-2-27b 위에서 실행하기

찾기 examples/example_script.py 파일을 복제된 에이전트 리포지토리에 추가하고 코드를 검토하세요. 에이전트에게 문서를 찾을 수 있는 위치와 번역 방법을 알려줍니다. 모델 이름을 현재 사용 중인 모델 이름으로 변경합니다. gemma-2-27b-it-Q5_K_M 모델; 또한 원하는 소스 및 대상 언어를 변경합니다 (여기서는 중국어 를 소스 언어로 사용하고 영어 를 대상 언어로 설정합니다.)

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}")

그런 다음 예제/샘플 텍스트 폴더를 만듭니다. 이 폴더에 번역하려는 파일을 넣고 경로를 가져옵니다. 여기서는 소스 텍스트의 이름을 forbiddencity.txt로 설정하면 문서의 상대 경로는 샘플 텍스트/금지도시.txt.

텍스트 파일을 영어로 번역하려면 아래 명령을 실행하세요.

cd 예제    
파이썬 예제_스크립트.py

여기에서 영어로 번역된 결과를 확인할 수 있습니다.

데모 3: Phi-3-중간 길이 컨텍스트 모델로 번역 에이전트 실행하기

Llama-3 및 Gemma-2 모델은 훌륭한 LLM이지만 컨텍스트 창이 상대적으로 작습니다. 에이전트는 모든 텍스트를 LLM 컨텍스트 창에 맞춰야 하므로 번역할 수 있는 문서의 크기가 제한됩니다. 이 문제를 해결하기 위해 컨텍스트 창이 큰 오픈 소스 LLM을 선택할 수 있습니다. 이 데모에서는 128k(10만 단어 이상 또는 책 몇 권의 길이)의 방대한 컨텍스트 창이 있는 Microsoft의 Phi-3-medium-128k 모델을 선택했습니다.

자금성과 바세일 궁전의 협업에 관한 장문의 중국어 기사를 현지에서 시작한 Phi-3-중급-128k 모델 기반의 번역 에이전트를 통해 번역했습니다.

3.1단계: Phi-3-medium-128k Gaia 노드 실행하기

모델을 구성하고 다운로드합니다.

가이아넷 초기화 --config https://raw.githubusercontent.com/GaiaNet-AI/node-configs/main/phi-3-medium-instruct-128k/config_full.json

다음으로 다음 명령을 사용하여 128k 컨텍스트 창으로 Gaia 노드를 시작합니다.

가이아넷 시작

3.2 Phi-3-medium-128k 위에 번역 에이전트를 복제하고 실행합니다.

찾기 examples/example_script.py 파일을 복제된 에이전트 리포지토리에 추가하고 코드를 검토하세요. 에이전트에게 문서를 찾을 수 있는 위치와 번역 방법을 알려줍니다. 모델 이름을 현재 사용 중인 모델 이름으로 변경합니다. Phi-3-medium-128k-instruct-Q5_K_M 모델; 또한 원하는 소스 및 대상 언어를 변경합니다 (여기서는 중국어 를 소스 언어로 사용하고 영어 를 대상 언어로 설정합니다.)

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}")

그런 다음 예제/샘플 텍스트 폴더를 만듭니다. 이 폴더에 번역하려는 파일을 넣고 경로를 가져옵니다. 여기서는 소스 텍스트의 이름을 long_article.txt로 설정하면 문서의 상대 경로는 샘플 텍스트/long_article.txt.

cd 예제
파이썬 예제_스크립트.py

번역 결과는 매우 인상적이었는데, 원문의 뉘앙스와 문맥을 충실하게 담아낸 번역이 인상적이었습니다.

번역 품질 평가

라마-3-8B, 젬마-2-27b, 피-3-중급 등 세 가지 모델은 복잡한 역사 및 문화 콘텐츠를 중국어에서 영어로 번역하는 데 있어 다양한 수준의 성능을 보여주었습니다.

Llama-3-8B는 사실적인 내용을 효과적으로 포착하는 번역을 제공하지만 간혹 언어의 경직성이 나타나 관용적 표현을 완전히 적용하지 않은 직역 방식을 나타내는 것으로 보입니다. 섹션 제목과 원문의 형식을 유지하지 않고 특정 부분을 번역하지 않은 채로 남겨 두었습니다.

반면, gemma-2-27b의 번역은 매우 정확하고 자금성의 짧은 소개 기사의 원래 의미를 유지합니다. gemma-2-27b의 번역은 부드럽고 자연스러운 영어 흐름을 보여주며 원어와 대상 언어의 문법 구조를 모두 정교하게 이해하고 있음을 시사합니다. gemma-2-27b의 결과물에서 단어와 문장 구조의 선택은 높은 수준의 언어적 기교를 보여주며, 이는 공식적이고 역사적으로 미묘한 차이가 있는 텍스트를 번역하는 데 적합할 수 있음을 시사합니다.

Phi-3-medium-128k 모델은 책 길이의 텍스트를 중국어에서 영어로 번역할 수 있습니다. 이 모델은 대량의 복잡한 콘텐츠를 처리하는 데 강력한 성능을 보여주며 고급 메모리 처리 및 문맥 인식 기능을 제공합니다. 텍스트 길이가 길어져도 번역 품질은 일관되게 유지되어 광범위하고 상세한 번역이 필요한 프로젝트에서 Phi의 유용성을 보여줍니다. 하지만 첫 문단에서 '원화당'을 '자금성'으로 잘못 번역하는 등의 실수를 범하는 것을 볼 수 있습니다.

전반적으로 각 모델마다 강점이 있으며, 언어적 정교함에는 gemma-2-27b가, 긴 텍스트를 처리하는 데는 Phi-3-medium-128k가 두드러집니다.

결론

Gaia는 에이전트 애플리케이션에서 다양한 오픈 소스 LLM을 쉽게 선택하고 사용하여 특정 작업에 맞게 세밀하게 조정된 기능을 최대한 활용할 수 있는 방법을 제공합니다.

로컬 가이아 노드가 가동되고 나면 다른 사람들과 공유하고 가이아 네트워크에 가입하여 $$$를 벌 수 있습니다!