基于langchain做文本翻译

大模型之LangChain介绍 LangChain 就是一个 LLM 编程框架,你想开发一个基于 LLM 应用,需要什么组件它都有,直接使用就行;甚至针对常规的应用流程,它利用链(LangChain中Chain的由来)这个概念已经内置标准化方案了。下面我们从新兴的大语言模型(LLM)技术栈的角度来看看为何它的理念这么受欢迎。其官方的定义。 阅读详情

大型语言模型(LLM)正在成为一种具有转型性的技术,使开发人员能够构建以往无法实现的应用程序。然而,仅仅使用这些独立的LLM通常不足以创建一个真正强大的应用程序——真正的力量在于将它们与其他计算或知识来源相结合。

langchain旨在帮助开发这类应用程序。以下介绍如何用langchain做翻译机器人。

重要概念:

LLM & Prompt:

这包括提示管理、提示优化、为所有LLM提供通用接口以及用于与LLM一起使用的常用实用工具。

chain:

链式调用超出了单个LLM的调用范围,它涉及到一系列的调用(无论是调用LLM还是其他实用工具)。LangChain为链式调用提供了标准接口,与其他工具进行了大量的集成,并为常见应用提供了端到端的链式调用。

用法:(python)

pip install langchain

参数化prompt template。用到 (AIMessage, HumanMessage, SystemMessage)和 ChatOpenAI

from langchain.schema import AIMessage, HumanMessage, SystemMessage
from langchain.prompts.chat import (
    ChatPromptTemplate,
    SystemMessagePromptTemplate,
    AIMessagePromptTemplate,
    HumanMessagePromptTemplate,
)
from langchain.chains import LLMChain
from langchain.chat_models import ChatOpenAI

Message类用于服务ChatGPT不同的角色prompt, ChatOpenAI用于处理对话API。 

先构造参数化的system prompt:

templatePoem = (
 """You are a translation expert, proficient in various languages.
    Please translate the article or text in the style of William Shakespeare.
    Translates everything into {to_lan}."""
)

system_prompt_poem = SystemMessagePromptTemplate.from_template(templatePoem)

其中 "{to_lan}" 是system prompt的参数模板,用于输入用于翻译的目标语言。

user prompt是全量翻译,暂不需要使用特别模板:

human_message_prompt =  HumanMessagePromptTemplate.from_template("{text}")

其中"{text}"为模板本身也是参数。

至此,system prompt, user prompt的参数设置完成。

 继续定义langchain的模板,使用上述两个prompt template定义用于Chat的template:

chat_prompt_template_poem = ChatPromptTemplate.from_messages(
    [system_prompt_poem, human_message_prompt]
)

Chat template包含了 system prompt 对象和 human prompt对象,用于对话模型。langchain在调用OpenAI对话接口时,会使用chat_prompt_template_poem构造相应的JSON结构,发送去OpenAI接口。

接下来定义模型和LLMChain:

#Create model 
translation_model =  ChatOpenAI(model_name="gpt-3.5-turbo", temperature=0)
#Create Chain
translation_chain_luxun =  LLMChain(llm=translation_model, prompt=chat_prompt_template_luxun)

模型,ChatOpenAI,是langchain中用来调用chat/completion接口的类,因此默认定义使用gpt-3.5-turbo,及设置温度为0,以降低模型生成时的创意。 

LLMChain是langchain中重要的对象,用于链式调用多种功能,此例子使用LLMChain调用模型进行翻译并获取结果。

接下来调用run 方法并按模板参数名称构造JSON数据,传递给run方法:

# Text to be translated.
text = """A password change has been requested for your account. If this was you, please use the link below to reset your password."""

##Poem Result
chain_result_poem = translation_chain_poem.run({'to_lan':'Chinese',
                                                  'text': text})

入参是 {to_lan} 和 {text},run方法的JSON参数则提供这两个参数名称入相应的值。langchain核心功能会在调用LLMChain的run方法时,用参数格式化模板,并构造 chat/completion接品需要的message参数。

#Python类型参数
[
SystemMessage(content='You are a translation expert, proficient in various languages. \n    Please translate the article or text in the style of LuXun.\n    And keep clean and concise, as less words as you can.\n    Translates everything into Chinese.', additional_kwargs={}),
 HumanMessage(content='A password change has been requested for your account. If this was you, please use the link below to reset your password.', additional_kwargs={}, example=False)
]

#JSON化后的messages数组: 
[
  { 
    "role":"system",
    "content":"You are a translation expert, proficient in various languages. \n    Please translate the article or text in the style of LuXun.\n    And keep clean and concise, as less words as you can.\n    Translates everything into Chinese."
   }, 
   {
     "role":"user",
     "content":"A password change has been requested for your account. If this was you, please use the link below to reset your password."
   }
]

得到的翻译结果会直接返回,并存入 chain_result_poem 变量中。

##Poem style
print(f'Shakespeare: \n {chain_result_poem}')


#Shakespeare: 
# 一個密碼更改的請求已經被提出,關於你的帳戶。若此為汝所為,請使用下方之連結重設汝的密碼。

如有大量文本,需要重复调用翻译可以包装成方法,以多次调用:


to_lan = 'Chinese'
text = [ 'To continue setting up your OpenAI account, please verify that this is your email address.',
         'A password change has been requested for your account. If this was you, please use the link below to reset your password.',
        'If you have a specific article or text that you would like to have translated, please provide it, and I\'ll be glad to help you with the translation.'
        ]

## only reuse translation_chain_poem
global_to_lan = 'English'
def get_splited_text(): 
    return text 
    
def translateTo(to_lan, texts = []):
    global global_to_lan
    global_to_lan = to_lan

    results = [translation_chain_poem.run({'to_lan':global_to_lan, 'text':item}) for item in texts ]
    return results

translated = translateTo('中文', get_splited_text())
print( '\n'.join(translated))

#result:
#為了繼續設置您的OpenAI帳戶,請驗證這是否為您的電子郵件地址。
#汝之账户已有人请求更改密码。若此为汝所为,请使用下方链接重设汝之密码。
#若有特定之文章或文本,欲求翻譯者翻譯,請提供該文本,吾將樂意協助翻譯。

完成后,就可以用这个LLMChain去扩展其它功能了。 以上是这周在极客时间,AI 大模型应用开发实战营的课程内容。谢谢阅读。

使用Langchain构建聊天翻译工具:从入门到精通 通过本文,你应该对如何使用Langchain中的SolarChat来实现语言翻译有了基本的了解。Langchain 官方文档Python 自然语言处理库指南。 阅读详情

相关推荐

使用LangChain构建简易LLM应用:跨语言文本翻译教程

通过本教程,您学会了如何使用LangChain构建一个简单的LLM应用,并了解了关键组件如提示模板、输出解析器和LCEL的使用。LangChain概念指南LangChain表达式语言指南LangServe文档。

sjufgwgfhoia的博客 375

什么是LangChain?从零开始入门 LangChain

LangChain 作为一个新兴的开源 LLM 开发框架,它的设计理念和一些实现方法都有值得我们借鉴的地方。当然一个开源项目必然有自己的优点的同时也会存在不少的缺点。我们在实际使用的时候,应该按照自己的需求和实际情况去选择,切记,不要简单的因为网上的评论而做出选择。毕竟,好不好用,只有你自己才清楚。

2401_85375151的博客 3万+

快速构建LLM应用:使用LangChain实现文本翻译

在这篇文章中,我们学习了如何构建一个简单的LLM应用,了解了如何使用语言模型、输出解析器、提示模板,以及如何通过LCEL将它们连接起来。我们还学习了如何通过LangSmith对链进行观察和调试,最后通过LangServe部署我们构建的应用。这篇文章只是成为一名熟练的AI工程师的起点。我们有许多其他资源可供学习!LangChain的核心概念LangServe和LangSmith文档。

dsndnwfk的博客 578

从零开始入门 LangChain

本篇文章中将和大家讲述什么是 LangChain ,以及 LangChain 解决了现在大模型发展的哪些问题,然后会讲解LangChain 中基础的概念和组件。

2301_81940605的博客 1万+

构建简单的LLM应用程序:使用LangChain进行即时文本翻译

通过本教程,您已经学会使用LangChain构建一个简单的LLM应用程序,涉及到模型调用、输出解析、提示模版和应用部署。要深入学习LangChain的核心概念,请参考。提示模板聊天模型输出解析器LangServeLangSmith。

lajoqfyqgf的博客 435

一文彻底搞懂什么是LangChain?

LangChain赋予了开发人员将LLM与其他计算和知识来源相结合以构建应用程序的能力。使用LangChain,开发人员可以使用一个抽象LLM应用程序的核心构建块的框架。探索LangChain的能力并尝试其各个组件,会发现可能性几乎无限。LangChain框架提供了一种灵活和模块化的语言生成方法,允许创建根据用户特定需要量身定制的定制解决方案。

女王の专属领地 2万+

使用LangChain构建简单LLM应用:无缝完成文本翻译

我们已经介绍了如何使用LangChain构建一个简单的LLM应用,包括如何使用语言模型、解析输出、创建提示模板,以及如何用LCEL将组件串联。这只是成为一名熟练AI工程师的开始,推荐继续阅读LangChain的概念指南和更详细的操作指南。

asdfghiuus的博客 464

开放平台 - 互动玩法演进之路

随着直播业务和用户规模日益壮大,如何丰富直播间内容、增强直播间内用户互动效果,提升营收数据变得更加关键。

bilibili_TC的博客 1739

使用LiteLLM库与Langchain进行文本翻译

LiteLLM是一个简化调用多种语言模型库的工具。它支持同步、异步和流式数据处理功能,可以与Langchain库结合使用以提高处理效率。Langchain是一个促进与语言模型集成的Python库,专注于使文本生成任务更加模块化和灵活。

2501_92325368的博客 549

手把手教你复现KDD 2024时空预测顶会论文:以UniST和ImputeFormer为例的代码实战与避坑指南

本文详细指导如何复现KDD 2024顶会论文中的UniST和ImputeFormer模型,涵盖环境配置、数据处理、模型训练及评估等关键步骤。通过实战案例和避坑指南,帮助研究者掌握时空预测与插补技术,提升在智慧城市、交通管理等领域的应用能力。

weixin_29204205的博客 279

2025ICPC南昌邀请赛题解

2025ICPC南昌邀请赛由XDU和WHU联合出题的ICPC南昌邀请赛,榜单显示8题金、6题银、5题铜。

weixin_50089904的博客 1958

使用LangChain构建简单LLM应用:文本翻译

在本教程中,我们将向您展示如何使用LangChain构建一个简单的LLM应用程序,该应用程序将英文文本翻译成另一种语言。虽然这是一个相对简单的LLM应用程序,只需要一次LLM调用和一些提示,但它是开始使用LangChain的理想途径。通过一些提示和LLM调用,我们可以构建许多功能!让我们开始吧!

shuoac的博客 507

Ansys Zemax导入CAD文件避坑指南:STL/STEP/IGES格式选择与性能优化

本文深度解析了在Ansys Zemax中导入CAD文件的核心要点与性能优化策略。针对STL、STEP、IGES等主流格式,详细对比了其几何表示、精度与适用场景差异,并提供了基于模型特征的格式选择决策树。文章重点分享了体元、弦公差等高级参数的调优技巧,以及处理复杂装配体和避免精度陷阱的实战指南,旨在帮助光学工程师提升仿真效率与结果可靠性。

weixin_29202687的博客 436

使用LangChain构建简单的LLM文本翻译应用

在这篇文章中,我们将带您一步步创建一个简单的LLM应用程序,借助LangChain将文本从英语翻译成其他语言。这个应用程序虽然简单,仅涉及一次LLM调用和简单的提示,但它是学习LangChain的一个很好的起点。许多功能都可以通过简简单单的提示和LLM调用构建出来!

fgayif的博客 489

STM32+W5500实战:5分钟搞定FreeModbus TCP移植(附完整代码)

本文详细介绍了如何在STM32微控制器上,结合W5500以太网芯片,快速完成FreeModbus TCP协议栈的移植,构建稳定可靠的工业级Modbus TCP服务器。内容涵盖硬件连接、软件架构、驱动适配、核心移植代码实现及调试优化技巧,旨在提供可直接应用于实际项目的完整解决方案。

life6的博客 879

FOC无刷电机磁编码器机械角度与电角度自动对齐校准及电机极对数自动获取的方法

本文提出磁编码器机械角度与电角度自动对齐校准方法及电机极对数自动获取方案。通过通直流电流使转子定向,读取机械角度并计算电角度偏移量,实现精确对齐;同时利用低速旋转时检测反电动势过零点次数,结合机械角度变化量自动计算极对数。核心算法包括转子定向、偏移量计算、极对数推导等步骤,并提供了基于STM32的C语言实现代码。该方法适用于工业伺服、机器人等高精度控制场景,需注意负载安全、参数调整和误差处理。两种自动化流程可有效解决电机安装调试中的角度对齐和参数识别问题。

qq_29653575的博客 2488

构建简单的LLM应用:使用LangChain与LCEL实现文本翻译

在本教程中,您学会了如何创建第一个简单的LLM应用程序。您学习了如何使用语言模型、解析其输出、创建提示模板、使用LCEL进行串联,以及如何通过LangServe部署应用。要成为一名熟练的AI工程师,这些只是基础。LangChain概念指南LangServe文档LangSmith文档。

aehrutktrjk的博客 605

YOLOv12改进策略【独家融合改进】| MobileNetV4+BiFPN,轻松实现降参涨点,适用专栏内所有的骨干替换

可扩展的高效物体检测BiFPN(加权双向特征金字塔网络)

Limiiiing的博客 979

打造简单LLM应用:使用LangChain实现多语言文本翻译

通过本文,你学习了如何创建一个简单的LLM应用,并且掌握了如何使用LangChain的核心功能来实现文本翻译。尽管这是一个简单的应用,但你可以基于此构建更复杂的系统。LangChain概念指南LangSmith文档。

qq_29929123的博客 1083

YOLOv5 实现 10 种热力图可视化方式教程 | GradCAM XGradCAM ScoreCAM LayerCAM HiResCAM EigenCAM....

基于梯度计算类激活图,是最经典的热力图生成方法之一。Grad-CAM的改进版,通过引入梯度加权的方式,提高了热力图的定位精度。基于类别的得分计算类激活图,对噪声具有更强的鲁棒性。基于特定层的特征图计算类激活图,可以灵活选择不同的层进行分析。通过上采样将低分辨率的特征图恢复到原始图像大小,提高了热力图的分辨率。基于特征图的特征向量进行PCA降维,得到更简洁的热力图。对Grad-CAM的进一步改进,通过加权平均的方式,提高了热力图的质量。基于积分梯度的方法,可以解释模型对输入的每个特征的贡献。

weixin_39818775的博客 2374

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

构建简单的LLM应用程序:使用LangChain实现文本翻译

通过本文,你学会了构建一个简单的LLM应用程序的基本步骤。建议进一步阅读LangChain概念指南。深入了解LangChain表达语言(LCEL)学习PromptTemplates探索LangServe和LangSmith的更多功能。

adfyvatbia的博客 628

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

langchain检索、文本分割、RAG

langchain 检索 文本分割 RAG

SO_zxn的博客 1137

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

使用Google Cloud翻译API实现高效的多语言文本翻译

通过使用Google Cloud Translation API,我们可以快速实现高效的多语言文本翻译。这对于需要处理多语言内容的开发者来说是一个强大的工具。为了进一步学习,推荐阅读Google Cloud的官方文档以及LangChain的相关社区资源。

dfitghjk的博客 700

用LangChain,Ollama做一个本地翻译系统

【代码】用LangChain,Ollama做一个本地翻译系统。

生于忧患,死于安乐 222

基于LangChain的LLM应用开发2——模型、提示和输出解析

本次会讲解LangChain的三个基本组件:模型、提示和解析器。

火烧径-make life easier 800

Hunyuan-MT-7B与LangChain集成的智能翻译系统搭建教程

本文介绍了如何在星图GPU平台上自动化部署Hunyuan-MT-7B镜像,快速搭建智能翻译系统。该平台简化了部署流程,用户可轻松实现多语言文档的自动化翻译,适用于技术文档、商务沟通等场景,显著提升翻译效率和质量。

weixin_42576804的博客 336
上一篇: PDF Translator 开发实践与PDF分析、处理
下一篇: 防治核废水回流:途径、可能性及防治措施
EricPan2023
博客等级 码龄21年 37粉丝 23原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值