何书艺 发表于 3 天前

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

手把手AI Agent系列教程:

[*]如何用 Dify + Oracle + DeepSeek 来打造一个更懂你的AI翻译助手!

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

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

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

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

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

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

三、翻译助手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效果:
--创建术语表glossary,关键字段只有term和translation
--我这里加了domain字段,但目前测试还未用到,可以暂时忽略,默认为TEST业务域
CREATE TABLE glossary (
    id             NUMBER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
    term         VARCHAR2(200) NOT NULL,      -- 英文术语
    translation    VARCHAR2(500),               -- 中文翻译
    domain VARCHAR2(50) DEFAULT 'TEST',         -- 业务域
    CONSTRAINT glossary_uk UNIQUE (term,domain) -- 保证 同一domain内 term 唯一
);

--插入示例术语:
insert into glossary(term, translation) values ('Oracle','甲骨文中国');
insert into glossary(term, translation) values ('Exadata Database Machine','原厂Exadata数据库一体机');
insert into glossary(term, translation) values ('Oracle Database Appliance','原厂ODA数据库一体机');
commit;2.创建匹配英文术语函数

定义一个函数,可接受原始文本,用于匹配筛选出其中的英文术语:
--创建一个匹配英文术语的函数
--后续可以添加一个区分domain的参数,目前测试期间简化,默认都是TEST域
create or replace FUNCTION match_english_terms(
    p_input IN VARCHAR2
) RETURN VARCHAR2 IS
    v_result CLOB := '';

    -- 用于存储游标结果的变量
    v_term VARCHAR2(200);
    v_cn VARCHAR2(200);

    -- 游标定义
    CURSOR cur_full IS
      SELECT term, translation FROM glossary
      WHERE REGEXP_LIKE(p_input, '(^|\W)' || term || '(\W|$)', 'i');

BEGIN
    -- 处理完整英文术语匹配
    FOR rec IN cur_full LOOP
      v_result := v_result || '英文: ' || rec.term || '; 中文: ' || rec.translation || CHR(10);
    END LOOP;

    -- 返回结果,如果超过4000字节则截断
    IF LENGTH(v_result) > 4000 THEN
      RETURN SUBSTR(v_result, 1, 4000);
    ELSE
      RETURN v_result;
    END IF;
EXCEPTION
    WHEN OTHERS THEN
      RETURN '错误: ' || SQLERRM;
END match_english_terms;注:这里测试阶段术语较少,使用的是REGEXP_LIKE + 游标遍历的方式;但实际上如果术语特别多,这种方式效率不高,可选择适合的数据库特性进一步优化方案,以后有机会分享,现Demo阶段暂不考虑。
3.为智能体编排工作流

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

连接信息说明如下:

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

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

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


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

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

[*]用例1:Oracle Exadata Database Machine is powerful.


[*]用例2:Oracle Database Appliance delivers exceptional cost-effectiveness for enterprise database workloads.

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

来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
页: [1]
查看完整版本: 手把手教你打造一个更懂你的AI翻译助手!