手把手教你打造一個更懂你的AI翻譯助手!
2025-08-23 17:50 AlfredZhao 閱讀(353) 評論(0) 收藏 舉報手把手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 成功打造出一個更懂你的翻譯助手。
轉載請注明原文鏈接:http://www.rzrgm.cn/jyzhao/p/19054638/shou-ba-shou-jiao-ni-da-zao-yi-ge-geng-dong-ni-dea
?? 感謝閱讀,歡迎關注我的公眾號 「趙靖宇」
浙公網安備 33010602011771號