Files
agentUniverse/docs/guidebook/zh/实践应用/翻译案例.md
2025-07-20 17:14:13 +08:00

59 lines
5.5 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 翻译案例
近期斯坦福大学教授吴恩达开源了一个AI智能体机器翻译——一个使用反思工作流进行翻译的智能体该项目中演示了反思智能体工作流的机器翻译示例。智能体的主要步骤如下
1. 初始翻译使用大模型LLM将文本从source_language翻译为target_language;
2. 进行反思,让大模型指出翻译结果中的不足,并给出建设性的改进建议;
3. 修改翻译,让大模型根据反思给出的建议,重新进行翻译;
项目中采用的反思工作流让模型自己去发现不足再根据不足做定向的修改是一种典型的多智能体协同工作机制这也是agentUniverse一直涉足的领域于是我就有将这个翻译智能体复刻到agentUniverse上面的想法。
## 多智能体的协同工作过程
翻译过程中优先判断模型的长度是否超过了模型所能承受的最大token,针对超过模型长度的情况,先对文本进行切块,再对分块后的文本进行翻译,
但是无论长文本还是短文本,翻译过程都是基于初始翻译->反思->修改的流程进行的。
![多智能体协同工作流程](../../_picture/translation_flow_graph.png)
## 在aU中的实现
在aU中实现该翻译的过程主要分为以下几步
1. 定义翻译相关的prompt短文本翻译三个长文本翻译三个相关文件如下:
[短文本翻译init prmpt](../../../../examples/sample_apps/translation_agent_app/intelligence/agentic/prompt/translation/translation_init_en.yaml)
[短文本翻译reflection prmpt](../../../../examples/sample_apps/translation_agent_app/intelligence/agentic/prompt/translation/translation_reflection_en.yaml)
[短文本翻译improve prmpt](../../../../examples/sample_apps/translation_agent_app/intelligence/agentic/prompt/translation/translation_improve_en.yaml)
[长文本翻译init prmpt](../../../../examples/sample_apps/translation_agent_app/intelligence/agentic/prompt/translation/multi_translation_init_en.yaml)
[长文本翻译reflection prmpt](../../../../examples/sample_apps/translation_agent_app/intelligence/agentic/prompt/translation/multi_translation_improve_en.yaml)
[长文本翻译improve prmpt](../../../../examples/sample_apps/translation_agent_app/intelligence/agentic/prompt/translation/multi_translation_improve_en.yaml)
在aU中,可以很容易的通过配置文件定义prompt并统一由PromptManager管理。
2. 定义三个智能体
[短文本翻译智能体](../../../../examples/sample_apps/translation_agent_app/intelligence/agentic/agent/agent_instance/translation_agent_case/translation_work_agent.yaml)
[短文本翻译智能体](../../../../examples/sample_apps/translation_agent_app/intelligence/agentic/agent/agent_instance/translation_agent_case/translation_reflection_agent.yaml)
[短文本翻译智能体](../../../../examples/sample_apps/translation_agent_app/intelligence/agentic/agent/agent_instance/translation_agent_case/translation_improve_agent.yaml)
该智能体当中需要根据执行的时长文本翻译还是短文本翻译切换对应的prompt具体逻辑可参考[代码实现](../../../../examples/sample_apps/translation_agent_app/intelligence/agentic/agent/agent_instance/translation_agent_case/translation_agent.py)
由于定义的prompt全部由PromptManager进行管理这里可以很容易的实现prompt的切换
3. 定义三个智能体的协同工作过程
协同过程可参考前面介绍的多智能体协同工作过程的流程图,具体的实现逻辑如图:
![协同工作](../../_picture/translation_execute_flow.png)
更细的流程可以参考[代码文件](../../../../examples/sample_apps/translation_agent_app/intelligence/agentic/agent/agent_instance/translation_agent_case/translation_by_token_agent.py)
协同智能体的[配置文件](../../../../examples/sample_apps/translation_agent_app/intelligence/agentic/agent/agent_instance/translation_agent_case/translation_agent.yaml)
### 演示代码
[代码链接](../../../../examples/sample_apps/translation_agent_app/intelligence/test/test_translation_agent.py)
[长翻译文本](../../../../examples/sample_apps/translation_agent_app/intelligence/test/translation_data/long_text.txt)
[短翻译文本](../../../../examples/sample_apps/translation_agent_app/intelligence/test/translation_data/short_text.txt)
[短翻译结果](../../../../examples/sample_apps/translation_agent_app/intelligence/test/translation_data/short_text_result.txt)
[长翻译结果](../../../../examples/sample_apps/translation_agent_app/intelligence/test/translation_data/long_text_result.txt)
### 演示结果
可以看到使用aU与原本的translation_agent原工程翻译结果保持一致复刻成功。
aU的执行结果:
![aU执行长文本结果](../../_picture/long_translation_au.png)
Translation_agent的执行结果:
![translation执行长文本结果](../../_picture/long_translation_wu.png)
### 其他
1. 在参考吴恩达教授的代码当中处理分块翻译时为了保证翻译的连贯性翻译每一个分块时会携带相应的上下文。但是在他的代码当中将所有的翻译内容都放在的上下文当中会使切分失去原本的意义某些情况下会导致token超过模型所能接受的最大token针对此问题我在对应的仓库地址提问了相关[issue](https://github.com/andrewyng/translation-agent/issues/28)
2. 该案例基于千问大模型,使用前需要您在环境变量中配置`DASHSCOPE_API_KEY`