首页 > 教程攻略 > ai资讯 >简单命令行搭建吴恩达的 LLM Translation Agent,测测开源模型哪家强

简单命令行搭建吴恩达的 LLM Translation Agent,测测开源模型哪家强

来源:互联网 时间:2026-08-24 14:20:09

吴恩达教授提出的Agenic Translation框架,可以说是一个相当精巧的设计——它展示了如何把多个大模型“Agent”像团队一样组织起来,共同搞定特定的翻译任务。更关键的是,这种方法让那些规模较小的开源大模型(比如Llama-3或Gemma-2)互相协作,最终产出的效果竟然能超过单个大模型(比如ChatGPT)单打独斗的结果。这个思路其实挺有意思:不是一味追求更大更强的单体模型,而是用“组合拳”来提升能力。

简单命令行搭建吴恩达的 LLM Translation Agent,测测开源模型哪家强

这个翻译Agent,用LlamaEdge来跑简直再合适不过了。LlamaEdge是个轻量级、嵌入式的AI运行时环境,既能直接塞到嵌入式设备里,又能无缝跑在Docker上,对各类模型和硬件翻跟斗的支持也相当全面。通过它,你可以把大模型和提示词打包成一个完整的翻译应用,然后在边缘设备上本地运行。这样一来,数据不用上传云端,隐私和延迟问题都能得到很好的解决。

翻译 Agent 介绍

这个LLM翻译Agent的目标很简单:利用开源大模型,实现多语言之间准确、高效的翻译。它本身不挑模型,你可以直接用Llama-3这样的开源模型,也可以用自己微调过的模型,或者从HuggingFace上拉一个。没错,只要是LLM,基本都能接进来。

关于启动和运行此 Agent 的详细命令行,请访问GitHub - Second State/translation-agent[9]

首先,把翻译Agent的代码克隆下来:

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

这次我们打算在本地分别跑Llama-3-8B、Gemma-2-9B和Phi-3-medium-128k三个模型,然后让同一个翻译Agent分别调用它们,看看不同模型的翻译质量到底差多少。测试任务也很简单:把一篇介绍北京故宫(紫禁城)的中文文章翻译成英文。当然,在跑实验之前,得先把运行环境搭好——你需要安装WasmEdge和LlamaEdge API server,这样才能在主流GPU和CPU上启动这些模型。

curl -sSf https://raw.githubusercontent.com/WasmEdge/WasmEdge/master/utils/install_v2.sh | bash -s -- -v 0.13.5
curl -LO https://github.com/LlamaEdge/LlamaEdge/releases/latest/download/llama-api-server.wasm

然后设置一些环境变量和依赖库,Agent才能正常跑起来:

export OPENAI_BASE_URL="http://localhost:8080/v1"
export PYTHONPATH=${PWD}/src
export OPENAI_API_KEY="LLAMAEDGE"
pip install python-dotenv
pip install openai tiktoken icecream langchain_text_splitters

Demo 1:使用 Llama-3-8B 运行翻译 Agent

先拿Meta家的Llama-3来开刀。这里选的是最小号的8B参数版本,翻译任务是把一篇关于故宫的中文简介译成英文。看看它表现如何。

步骤1.1:在你自己的设备上运行 Llama-3-8B

详细说明请参见:在你自己的设备上运行 Llama-3-8B[13]

下载Llama-3-8B的GGUF文件。模型有5.73GB,下载时不妨先泡杯咖啡。

curl -LO https://huggingface.co/second-state/Llama-3-8B-Instruct-GGUF/resolve/main/Meta-Llama-3-8B-Instruct-Q5_K_M.gguf

下载完成后,用以下命令启动API server:

wasmedge --dir .:. --nn-preload default:GGML:AUTO:Meta-Llama-3-8B-Instruct-Q5_K_M.gguf 
llama-api-server.wasm
--prompt-template llama-3-chat
--ctx-size 4096
--model-name Llama-3-8B

步骤1.2 在 Llama-3-8B 上运行翻译 Agent

在克隆下来的Agent仓库中,找到examples/example_script.py文件,打开看看。这个脚本告诉Agent去哪里找翻译文档、怎么翻译。你需要把里面的模型名称改成Llama-3-8B,源语言设为Chinese,目标语言设为English

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: {source_text} ------------ ")
translation = ta.translate(
source_lang=source_lang,
target_lang=target_lang,
source_text=source_text,
country=country,
model="Llama-3-8B",
)
print(f"Translation: {translation}")

仓库里还有一个examples/sample-texts文件夹,把你想要翻译的源文件放进去。这里我们用的文件名叫forbiddencity.txt,所以相对路径就是sample-texts/forbiddencity.txt

然后运行下面的命令,开始翻译:

cd examples
python example_script.py

等上几分钟,翻译结果就会出现在终端屏幕上[14]

Demo 2:使用 Gemma-2-9B 运行翻译 Agent

LlamaEdge的妙处之一,就是可以灵活更换底层的大模型。这次我们把翻译Agent的“大脑”从Llama-3-8B换成Google的Gemma-2-9B。这两个模型参数规模差不多,但Gemma-2在很多语言相关的基准测试中分数更高,值得一比。

翻译任务不变,仍然是那篇故宫的中文简介。

步骤2.1 在自己的设备运行 Gemma-2-9B

详细说明请参见这里:在你自己的设备上运行Gemma-2-9B[16]

下载Gemma-2-9B-it的GGUF文件,大小6.40G:

curl -LO https://huggingface.co/second-state/gemma-2-9b-it-GGUF/resolve/main/gemma-2-9b-it-Q5_K_M.gguf

然后启动API server:

wasmedge --dir .:. --nn-preload default:GGML:AUTO:gemma-2-9b-it-Q5_K_M.gguf 
llama-api-server.wasm
--prompt-template gemma-instruct
--ctx-size 4096
--model-name gemma-2-9b

步骤2.2 在 Gemma-2-9B 之上运行翻译 Agent

同样,修改example_script.py,把模型名改成gemma-2-9b,源语言和目标语言保持不变:

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: {source_text} ------------ ")
translation = ta.translate(
source_lang=source_lang,
target_lang=target_lang,
source_text=source_text,
country=country,
model="gemma-2-9b",
)
print(f"Translation: {translation}")

然后运行:

cd examples
python example_script.py

翻译结果可以在这里[18]找到。

Demo 3:使用 Phi-3-Medium 长上下文模型运行翻译 Agent

Llama-3和Gemma-2虽然出色,但上下文窗口都比较小(4096个token)。Agent要求所有待翻译的文本必须塞进模型的上下文窗口里,这就限制了能处理的文章长度。有没有办法翻更长的文章?当然有,换一个超大上下文窗口的模型就行。这次我们选Microsoft的Phi-3-medium-128k——128k的上下文窗口,相当于十几万个单词或者几本书的长度,够用了吧?

我们拿一篇关于紫禁城与凡尔赛宫合作的长篇文章[19]来挑战一下,看看Phi-3-medium-128k能不能驾驭。

步骤3.1:在你自己的设备上运行 Phi-3-medium-128k

详细说明请参见这里:Getting Started with Phi-3-mini-128k[20].

下载Phi-3-Medium-128k的GGUF文件:

curl -LO https://huggingface.co/second-state/Phi-3-medium-128k-instruct-GGUF/resolve/main/Phi-3-medium-128k-instruct-Q5_K_M.gguf

用128k上下文窗口启动API server:

wasmedge --dir .:. --nn-preload default:GGML:AUTO:Phi-3-medium-128k-instruct-Q5_K_M.gguf 
llama-api-server.wasm
--prompt-template phi-3-chat
--ctx-size 128000
--model-name phi-3-medium-128k

步骤3.2 在 Phi-3-medium-128k 上运行翻译 Agent

修改example_script.py,将模型名改为phi-3-medium-128k,源语言和目标语言不变,同时把文本路径指向新文件long_article.txt

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: {source_text} ------------ ")
translation = ta.translate(
source_lang=source_lang,
target_lang=target_lang,
source_text=source_text,
country=country,
model="phi-3-medium-128k",
)
print(f"Translation: {translation}")

运行:

cd examples
python example_script.py

结果令人印象深刻[22]——翻译准确捕捉了原文的细微差别和上下文,忠实度很高。

翻译质量评估

三个模型——Llama-3-8B、Gemma-2-9B和Phi-3-medium——在处理同一段复杂历史和文化内容的翻译时,表现出了截然不同的风格和能力。

Llama-3-8B的翻译抓住了事实性内容,但语言偶尔有些僵硬,似乎采用了比较直接的翻译策略,没能完全适应英语的习惯表达。而且,它没有保留原文的章节标题和格式,甚至漏翻了一些部分。

Gemma-2-9B的表现就好多了,翻译相当准确,完整保留了紫禁城简介的原意。它的英语流畅自然,明显对两门语言的语法结构都有深入理解。词汇选择和句子结构都体现了很高的语言技巧,看来它特别适合处理正式且有历史细节的文本。

至于Phi-3-medium-128k,它的特长在于处理超长文本——能把一本书长度的中文文章翻译成英文,而且质量稳定,即使在文本长度大幅增加时也没有明显下滑。这说明它在内存管理和上下文意识方面确实领先。但也不是没有瑕疵——比如在第一段中错误地把“文华殿”当成了紫禁城的别称。

总的来说,每个模型都有自己的看家本领:Gemma-2-9B在语言技巧上拔得头筹,而Phi-3-medium-128k则在长文本处理上无人能及。

结论

LlamaEdge[23]让我们能够轻松地将不同的开源大模型嵌入到自己的Agent应用中,充分发挥大模型针对特定任务微调后的能力。而且,最终的应用可以打包成单个可分发程序,在主流CPU和GPU设备上都能跑——这才是边缘AI该有的样子。