使用LangChain,Gradio构建本地翻译系统

发布时间:2026/7/17 6:28:39

使用LangChain,Gradio构建本地翻译系统 importgradioasgrfromlangchain_ollamaimportChatOllamafromlangchain_core.promptsimportChatPromptTemplate# 1. 初始化本地模型llmChatOllama(modelmaternion/hy-mt2:1.8b)deftranslate_text(source_language,target_language,text):# 2. 构建翻译提示词promptChatPromptTemplate.from_messages([(system,你是一个专业的翻译助手。请将用户输入的文本从{sourceLanguage}翻译成{targetLanguage}。仅输出翻译结果不要包含任何解释。),(user,{input})])chainprompt|llm# 3. 执行翻译responsechain.invoke({sourceLanguage:source_language,targetLanguage:target_language,input:text})returnresponse.contentif__name____main__:# 4. 构建 Gradio 界面withgr.Blocks()asdemo:gr.Markdown(## 本地翻译系统 (Powered by Ollama))withgr.Row():lang_sourcegr.Dropdown(choices[中文,英语,日语,韩语,法语,德语],label源语言,value中文)lang_targetgr.Dropdown(choices[中文,英语,日语,韩语,法语,德语],label目标语言,value英语)withgr.Row():text_inputgr.TextArea(label输入文本,placeholder在此输入需要翻译的文本...)text_outputgr.TextArea(label翻译结果,interactiveFalse)translate_btngr.Button(翻译)translate_btn.click(fntranslate_text,inputs[lang_source,lang_target,text_input],outputstext_output)demo.launch()importgradioasgrfromlangchain_ollamaimportChatOllamafromlangchain_core.promptsimportChatPromptTemplate# 1. 初始化本地模型llmChatOllama(modelmaternion/hy-mt2:1.8b)deftranslate_text(source_language,target_language,text):# 2. 构建翻译提示词promptChatPromptTemplate.from_messages([(system,你是一个专业的翻译助手。请将用户输入的文本从{sourceLanguage}翻译成{targetLanguage}。仅输出翻译结果不要包含任何解释。),(user,{input})])chainprompt|llm# 3. 执行翻译responsechain.invoke({sourceLanguage:source_language,targetLanguage:target_language,input:text})returnresponse.contentdefswap_languages(source,target):互换源语言和目标语言的值returntarget,sourcedefclear_all():清空输入框和输出框return,if__name____main__:# 4. 构建 Gradio 界面withgr.Blocks(themegr.themes.Soft())asdemo:gr.Markdown(## 本地翻译系统 (Powered by Ollama))# 语言选择区域使用 Column 控制布局让按钮居中withgr.Row(equal_heightTrue):withgr.Column(scale1,min_width120):lang_sourcegr.Dropdown(choices[中文,英语,日语,韩语,法语,德语],label源语言,value中文)# 互换按钮小尺寸居中withgr.Column(scale0,min_width40):swap_btngr.Button(⇄,min_width40,sizesm,variantsecondary)withgr.Column(scale1,min_width120):lang_targetgr.Dropdown(choices[中文,英语,日语,韩语,法语,德语],label目标语言,value英语)# 文本输入输出区域withgr.Row():text_inputgr.TextArea(label输入文本,placeholder在此输入需要翻译的文本...)text_outputgr.TextArea(label翻译结果,interactiveFalse)# 按钮行两个按钮居中显示尺寸改为中等 (md)withgr.Row():translate_btngr.Button(翻译,variantprimary,sizemd,min_width40)clear_btngr.Button(清空,variantsecondary,sizemd,min_width40)# 绑定事件translate_btn.click(fntranslate_text,inputs[lang_source,lang_target,text_input],outputstext_output)swap_btn.click(fnswap_languages,inputs[lang_source,lang_target],outputs[lang_source,lang_target])clear_btn.click(fnclear_all,inputsNone,outputs[text_input,text_output])demo.launch()

相关新闻