找回密码
 立即注册
首页 业界区 业界 手把手教你打造一个更懂你的AI翻译助手! ...

手把手教你打造一个更懂你的AI翻译助手!

何书艺 4 天前
手把手AI Agent系列教程:

  • 如何用 Dify + Oracle + DeepSeek 来打造一个更懂你的AI翻译助手!
1.png

一、为什么需要AI翻译助手?

传统人工翻译行业的核心痛点:

  • 人工翻译效率低、成本高
  • 专业文档中英文术语众多,语境依赖强
  • 不同译者风格不同,专业术语更新快、难统一
AI时代下,为什么不直接使用LLM翻译?

  • 虽然目前主流大模型的能力都已经做很好的通用翻译工作,但是具体到专业领域,因为会涉及很多特定专业术语,甚至是私域的一些DIY需求,这些LLM都是不知道的,需要我们来额外告知它。
  • 若直接使用LLM翻译,就需要用户在每次翻译时都通过提示词来交互告知LLM。虽然看起来简单,但其实这样不仅不灵活,还存在一系列棘手的问题。比如专业术语表通常会有不定时更新,提示词也需要对应同步修改,又比如专业术语过多时,会导致提示词过长,匹配翻译的过程中也更容易出现幻觉导致翻译错误。
因此,我们需要利用 Dify 编排工作流 + Oracle 存储术语表 + DeepSeek 高性价比大模型,实现术语优先、上下文自然的智能翻译助手,轻松搞定专业文档翻译,节省人力成本!
技术组件角色与优势Oracle 数据库作为术语表的存储中心,支持高效查询并保障数据安全Dify 工作流平台多节点编排 + 灵活变量传递 + 易维护提示词系统DeepSeek 模型国产开源大模型,性价比高、响应速度快、支持私有部署二、翻译助手的实现原理

翻译助手的实现原理拆解如下:

  • 首先需要将专业术语定义到数据库中的一张表(这张术语表可开放给专业管理人员来进行维护)
  • 用户输入需要翻译的原文,数据库会自动处理提取出原文中的专业术语
  • 根据术语表强制替换,保持一致性
  • 非术语内容由 LLM 自然翻译
  • 输出流畅、准确、术语统一的专业中文结果
2.png

三、翻译助手Demo设计

测试用例:

  • Oracle Exadata Database Machine is powerful.
  • Oracle Database Appliance delivers exceptional cost-effectiveness for enterprise database workloads.
术语定义:

  • Oracle -> 甲骨文中国
  • Exadata Database Machine -> 原厂Exadata数据库一体机
  • Oracle Database Appliance -> 原厂ODA数据库一体机
为什么定义这样的术语,因为LLM再强大,默认也绝不会这么翻译,如此能快速验证术语翻译效果。
另外这样定义,其实也不是完全胡编,有一定的适用场景,比如Oracle很多资料介绍,都是Global层面的,原文只会讲Oracle如何如何,而针对国内市场的宣传,很多时候又需要强调是Oracle中国。
而数据库一体机在国内也是有相当多的产品,当在纯中文场景描述时,加上原厂标识可以让用户快速理解这是Oracle公司的一体机产品。
注:这个用例是极致简化之后的,以至于有读者会觉得这么简单直接把需求给LLM处理不也行?但真实场景下,术语会有很多,且可能不断更新,且不同领域的术语也是完全不同,总不能每次都去调整提示词。
四、翻译助手Demo实现

下面我们就手把手的演示如何具体实现这个Demo:
1.创建术语表

创建一张术语表,用于存放术语。
这里在建表之后手工插入3条术语定义,用于直观演示Demo效果:
  1. --创建术语表glossary,关键字段只有term和translation
  2. --我这里加了domain字段,但目前测试还未用到,可以暂时忽略,默认为TEST业务域
  3. CREATE TABLE glossary (
  4.     id             NUMBER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
  5.     term           VARCHAR2(200) NOT NULL,      -- 英文术语
  6.     translation    VARCHAR2(500),               -- 中文翻译
  7.     domain VARCHAR2(50) DEFAULT 'TEST',         -- 业务域
  8.     CONSTRAINT glossary_uk UNIQUE (term,domain) -- 保证 同一domain内 term 唯一
  9. );
  10. --插入示例术语:
  11. insert into glossary(term, translation) values ('Oracle','甲骨文中国');
  12. insert into glossary(term, translation) values ('Exadata Database Machine','原厂Exadata数据库一体机');
  13. insert into glossary(term, translation) values ('Oracle Database Appliance','原厂ODA数据库一体机');
  14. commit;
复制代码
2.创建匹配英文术语函数

定义一个函数,可接受原始文本,用于匹配筛选出其中的英文术语:
  1. --创建一个匹配英文术语的函数
  2. --后续可以添加一个区分domain的参数,目前测试期间简化,默认都是TEST域
  3. create or replace FUNCTION match_english_terms(
  4.     p_input IN VARCHAR2
  5. ) RETURN VARCHAR2 IS
  6.     v_result CLOB := '';
  7.     -- 用于存储游标结果的变量
  8.     v_term VARCHAR2(200);
  9.     v_cn VARCHAR2(200);
  10.     -- 游标定义
  11.     CURSOR cur_full IS
  12.         SELECT term, translation FROM glossary
  13.         WHERE REGEXP_LIKE(p_input, '(^|\W)' || term || '(\W|$)', 'i');
  14. BEGIN
  15.     -- 处理完整英文术语匹配
  16.     FOR rec IN cur_full LOOP
  17.         v_result := v_result || '英文: ' || rec.term || '; 中文: ' || rec.translation || CHR(10);
  18.     END LOOP;
  19.     -- 返回结果,如果超过4000字节则截断
  20.     IF LENGTH(v_result) > 4000 THEN
  21.         RETURN SUBSTR(v_result, 1, 4000);
  22.     ELSE
  23.         RETURN v_result;
  24.     END IF;
  25. EXCEPTION
  26.     WHEN OTHERS THEN
  27.         RETURN '错误: ' || SQLERRM;
  28. END match_english_terms;
复制代码
注:这里测试阶段术语较少,使用的是REGEXP_LIKE + 游标遍历的方式;但实际上如果术语特别多,这种方式效率不高,可选择适合的数据库特性进一步优化方案,以后有机会分享,现Demo阶段暂不考虑。
3.为智能体编排工作流

使用Dify连接Oracle数据库的插件选择的是这个db_query:
3.jpeg

连接信息说明如下:
4.jpeg

Dify编排的工作流越简单越好:

  • 开始START节点,用户可以自定义输入文本
  • 数据库查询SQL QUERY节点,连接到Oracle数据库调用函数match_english_terms()
  • 大语言模型LLM节点,配置好提示词,调用指定的LLM模型执行翻译任务
  • 结束END节点,输出最终结果
  • 增加一个END2节点,想更直观快捷的看到提取后术语情况(可选项,只是方便调试使用)
5.jpeg

关于LLM的节点,因为Demo比较简单,提示词写的也简单,当然你也可以测试改写为适合你场景的更加专业的提示词:
6.jpeg


  • system:
    你是一个专业的技术文档翻译助手,能够识别指定术语并严格替换,同时将非术语部分自然翻译,最终组合成流畅的中文。请优先匹配最长术语,大小写敏感。
  • user:
    请将以下英文内容翻译为中文:{{#1753434053258.user_input#}}
    需要替换的术语如下:{{#1754555934960.text#}}
五、翻译助手Demo最终效果

最后翻译助手的测试可以得到我们所期望的结果,如下:

  • 用例1:Oracle Exadata Database Machine is powerful.
7.jpeg


  • 用例2:Oracle Database Appliance delivers exceptional cost-effectiveness for enterprise database workloads.
8.jpeg

可以看到两个测试用例,均按照我们的期望,替换了专业术语,翻译准确。
顺便提下,这里用例2后面的“说明”,是LLM自己输出的,如果不想要这样的说明,也是可以在提示词那里要求下,比如只要最终翻译结果的输出,不要任何其他信息输出即可。
至此,我们使用 Dify + Oracle + DeepSeek 成功打造出一个更懂你的翻译助手。

来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
您需要登录后才可以回帖 登录 | 立即注册