前言
在全球化的浪潮中,語(yǔ)言翻譯需求日益增長(zhǎng)。市場(chǎng)上涌現(xiàn)出各式各樣的翻譯工具和平臺(tái),然而,免費(fèi)的解決方案往往局限于簡(jiǎn)短文本的翻譯。面對(duì)長(zhǎng)篇文檔,用戶通常不得不轉(zhuǎn)向付費(fèi)服務(wù)。鑒于大型預(yù)訓(xùn)練語(yǔ)言模型(LLMs)在自然語(yǔ)言翻譯上的顯著優(yōu)勢(shì),利用這些模型打造一款高效、經(jīng)濟(jì)的翻譯工具,不僅能滿足市場(chǎng)需求,同時(shí)亦具備極高的商業(yè)潛力與數(shù)據(jù)安全性。
針對(duì)這一需求,我們提出了一個(gè)基于OpenAI智能翻譯助手的實(shí)戰(zhàn)落地項(xiàng)目。該項(xiàng)目旨在開發(fā)一款支持多語(yǔ)種互譯、兼容多種文件格式的翻譯工具,以滿足用戶對(duì)長(zhǎng)篇文檔翻譯的需求。
一、需求規(guī)格描述
1)支持包括但不限于PDF、Word等多樣化的文件格式;
2)實(shí)現(xiàn)多語(yǔ)種間的互譯功能;
3)兼容并優(yōu)化多種大型預(yù)訓(xùn)練語(yǔ)言模型架構(gòu)設(shè)計(jì)
二、系統(tǒng)架構(gòu)設(shè)計(jì)
1)用戶通過(guò)客戶端上傳待翻譯文件;
2)系統(tǒng)后端進(jìn)行文件解析,調(diào)用適配的大型模型執(zhí)行翻譯任務(wù),并將翻譯結(jié)果整合為新文檔;
3)最終將翻譯后的文檔返回給用戶以供下載。
三、技術(shù)實(shí)施方案
1)方案一:基于目標(biāo)大型模型選擇對(duì)應(yīng)的API接口,自主封裝模型調(diào)用流程;
2)方案二:采用LangChain框架,以簡(jiǎn)化大型模型集成過(guò)程,該框架負(fù)責(zé)隔離并封裝模型調(diào)用細(xì)節(jié)。
本次先采用方案一實(shí)現(xiàn),后續(xù)再引入LangChain框架簡(jiǎn)化改造。
四、核心功能說(shuō)明
- 文本:高精度文本解析;
- 表格:表格內(nèi)容智能辨識(shí)與翻譯;
- 圖片:圖片內(nèi)文字暫不予處理,考慮到其處理難度及相對(duì)較低的需求優(yōu)先級(jí)。
五、開源技術(shù)選型
選擇對(duì)文本和表格支持性比較好的pdfplumber
六、代碼實(shí)現(xiàn)細(xì)節(jié)
1.圖形用戶界面(GUI)的開發(fā)
核心代碼樣例:
def launch_gui(args):
global global_args
global_args = args
iface = gr.Interface(
fn=translate_with_gui,
inputs=[
gr.File(label="上傳PDF文件"),
gr.Dropdown(choices=["中文", "日語(yǔ)", "西班牙語(yǔ)"], value="中文", label="選擇目標(biāo)語(yǔ)言"), # 這里添加了default參數(shù)
gr.Dropdown(choices=["OpenAIModel", "GLMModel"], value="OpenAIModel", label="選擇大模型"), # 這里添加了default參數(shù)
gr.Radio(choices=["PDF", "Markdown","word"], value="PDF", label="選擇輸出格式") # 選擇輸出格式
],
outputs=gr.Textbox(label="輸出結(jié)果")
)
iface.launch()
2.大型模型調(diào)用的模塊化封裝
核心代碼樣例:
class OpenAIModel(Model):
def __init__(self, model: str, api_key: str):
self.model = model
openai.api_key = api_key
def make_request(self, prompt):
attempts = 0
while attempts < 3:
try:
if self.model == "gpt-3.5-turbo":
response = openai.ChatCompletion.create(
model=self.model,
messages=[
#{"role": "system", "content": super.get_system_prompt()},
{"role": "user", "content": prompt},
]
)
translation = response.choices[0].message['content'].strip()
else:
response = openai.Completion.create(
model=self.model,
prompt=prompt,
max_tokens=150,
temperature=0
)
translation = response.choices[0].text.strip()
return translation, True
3.文檔解析翻譯結(jié)果處理
1)文檔解析:引用工具插件將對(duì)文檔進(jìn)行解析,頁(yè)、內(nèi)容(文段、表格、圖片)
2)文檔翻譯:調(diào)用大模型API翻譯:文段、表格
3)文檔生成:將翻譯后的內(nèi)容回寫生成新文檔、輸出下載
核心代碼樣例:
# 定義一個(gè)PDFTranslator類
class PDFTranslator:
# 定義初始化函數(shù),接收一個(gè)model_name參數(shù)
def __init__(self, model: Model):
# 創(chuàng)建一個(gè)model對(duì)象,用于執(zhí)行翻譯任務(wù)
self.model = model
# 創(chuàng)建一個(gè)PDFParser對(duì)象,用于解析PDF文件
self.pdf_parser = PDFParser()
# 創(chuàng)建一個(gè)Writer對(duì)象,用于寫入文件
self.writer = Writer()
def translate_pdf(self, pdf_file_path: str, file_format: str = 'PDF', target_language: str = 'Chinese',
output_file_path: str = None, pages: Optional[int] = None):
# 使用PDFParser對(duì)象解析指定的PDF文件,并將結(jié)果賦值給self.book
self.book = self.pdf_parser.parse_pdf(pdf_file_path, pages)
# 遍歷self.book的每一頁(yè)
for page_idx, page in enumerate(self.book.pages):
# 遍歷每一頁(yè)的每個(gè)內(nèi)容
for content_idx, content in enumerate(page.contents):
#生成提示語(yǔ)
prompt = self.model.translate_prompt(content, target_language)
LOG.debug(prompt)
translation, status = self.model.make_request(prompt)
LOG.info(translation)
# 更新self.document.pages中的內(nèi)容
content.apply_translated_paragraphs(translation)
"""
用book對(duì)象存儲(chǔ)翻譯的結(jié)果
"""
self.book.pages[page_idx].contents[content_idx].set_translation(translation, status)
# 使用Writer對(duì)象保存翻譯后的書籍,并返回保存的路徑
return self.writer.save_translated_book(self.book, output_file_path, file_format)
總結(jié)
1)Prompt工程是翻譯質(zhì)量的核心,要求開發(fā)者精通其構(gòu)造與優(yōu)化技巧;
2)LangChain的使用大幅簡(jiǎn)化了大型模型的集成和操作,極大提升了開發(fā)效率;
3)展望更多應(yīng)用場(chǎng)景,例如基于大型模型重構(gòu)的翻譯應(yīng)用、語(yǔ)音點(diǎn)餐系統(tǒng)、智能旅行助手、訂票平臺(tái)以及打車服務(wù)等,均有望在不久的將來(lái)得到實(shí)質(zhì)性進(jìn)展。
通過(guò)這個(gè)項(xiàng)目的實(shí)施,我們成功地實(shí)現(xiàn)了一個(gè)基于OpenAI智能翻譯助手的實(shí)戰(zhàn)落地工具。該工具不僅滿足了市場(chǎng)對(duì)長(zhǎng)篇文檔翻譯的需求,還具備高效、經(jīng)濟(jì)的特點(diǎn),并且保證了數(shù)據(jù)的安全性。我們相信,隨著技術(shù)的不斷進(jìn)步和應(yīng)用場(chǎng)景的擴(kuò)展,該工具將在未來(lái)得到更廣泛的應(yīng)用和發(fā)展。
??實(shí)戰(zhàn)系列篇
AI大模型探索之路-實(shí)戰(zhàn)篇2:基于CVP架構(gòu)-企業(yè)級(jí)知識(shí)庫(kù)實(shí)戰(zhàn)落地
AI大模型探索之路-實(shí)戰(zhàn)篇3:基于私有模型GLM-企業(yè)級(jí)知識(shí)庫(kù)開發(fā)實(shí)戰(zhàn)
??更多專欄系列文章:AIGC-AI大模型探索之路文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-858479.html
文章若有瑕疵,懇請(qǐng)不吝賜教;若有所觸動(dòng)或助益,還望各位老鐵多多關(guān)注并給予支持。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-858479.html
到了這里,關(guān)于AI大模型探索之路-實(shí)戰(zhàn)篇1:基于OpenAI智能翻譯助手實(shí)戰(zhàn)落地的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!