位置: IT常识 - 正文

LangChain与大型语言模型(LLMs)应用基础教程:信息抽取

编辑:rootadmin
LangChain与大型语言模型(LLMs)应用基础教程:信息抽取

推荐整理分享LangChain与大型语言模型(LLMs)应用基础教程:信息抽取,希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:,内容如对您有帮助,希望把文章链接给更多的朋友!

LangChain是大型语言模型(LLM)的应用框架,LangChain可以直接与 OpenAI 的 text-davinci-003、gpt-3.5-turbo 模型以及 Hugging Face 的各种开源语言模如 Google 的 flan-t5等模型集成。通过使用LangChain可以开发出更为强大和高效的LLM的各种应用。

信息抽取

我们给LLM提供一篇文章,我们希望LLM能帮我们把文章的主要内容罗列出来,文字尽量精简,简明扼要,如果想达到这样的目的,通过调用LLM提供的API似乎也能实现,但是Prompt可能会比较复杂,要把prompt写清楚,让LLM能够理解您的意图,可能也不是一件容易的事情。此时如果我们使用Langchain的prompt模板可以轻松完成类似的工作。

首先安装必要的python包

pip -q install openai langchainfrom langchain.prompts import PromptTemplatefrom langchain.llms import OpenAIChatfrom langchain.chains import LLMChainimport os#你申请的openai的api keyos.environ['OPENAI_API_KEY'] = 'xxxxxxxx'

这里我们有一段关于阿尔茨海默病的文本描述,我们希望llmn能够从中提炼出有价值的信息,为此我们需要定义一个prompt模板,将文本信息作为一个变量存储在模板中,这样我们每次只要更换不同的文本信息就可以就可以实现让llm从中提取关键信息的功能,而不必每次都要告诉llm它应该做什么事情。

text="阿尔茨海默病(Alzheimer's disease, AD),俗称老年痴呆症,是一种全身性神经退行性疾病,它是由大脑神经退行性变性引起的,\主要表现为记忆力减退、思维能力减退、行为变化等。阿尔茨海默病的原因尚不十分清楚,但是研究表明,阿尔茨海默病可能与遗传因素、环境因素、\营养不良、压力过大、不良生活习惯等有关。根据世界卫生组织的统计数据,全球有超过4700万人患有阿尔茨海默病,其中美国有超过600万人患有阿尔茨海默病,\欧洲有超过1000万人患有阿尔茨海默病,亚洲有超过2500万人患有阿尔茨海默病,其中中国有超过1000万人患有阿尔茨海默病。阿尔茨海默病的发病率与年龄有关,\随着年龄的增长而增加,65岁以上的人群为主要受害群体,占比高达80%,其中45-65岁的人群占比为15%,20-45岁的人群占比为5%。65岁以上的人群发病率约为10%,\75岁以上的人群发病率约为20%,85岁以上的人群发病率约为30%。根据统计,男性患病率高于女性,男性患病比例为1.4:1,即男性患病率比女性高出40%。\根据统计,阿尔茨海默病在不同的人种中分布情况也有所不同。白人患病率最高,占总患病率的70%,黑人患病率次之,占总患病率的20%,\其他少数民族患病率最低,占总患病率的10%。阿尔茨海默病在不同的饮食习惯中分布情况也有所不同。维生素B12缺乏的人群患病率更高,\而均衡膳食的人群患病率较低。阿尔茨海默病不仅会给患者带来记忆力减退、思维能力减退、行为变化等症状,还会给患者的家庭带来巨大的心理负担。\因此,患者应尽快就医,及时进行治疗。治疗阿尔茨海默病的方法有药物治疗、行为治疗、认知行为治疗等,具体治疗方案要根据患者的具体情况而定。"#加载openai的llmllm = OpenAIChat(model_name="gpt-3.5-turbo")#创建模板fact_extraction_prompt = PromptTemplate( input_variables=["text_input"], template="从下面的本文中提取关键事实。尽量使用文本中的统计数据来说明事实:\n\n {text_input}")#定义chainfact_extraction_chain = LLMChain(llm=llm, prompt=fact_extraction_prompt)facts = fact_extraction_chain.run(text)print(facts)

 给出治疗方案

我们让llm从一大堆文本信息中抽取了关键信息,我们让llm根据这些关键信息给出治疗建议,下面我们需要再建一个prompt模板,把提取的关键信息作为变量存储在该模板中。

doctor_prompt = PromptTemplate( input_variables=["facts"], template="你是神经内科医生。根据以下阿尔茨海默病的事实统计列表,为您的病人写一个简短的预防阿尔茨海默病的建议。 不要遗漏关键信息:\n\n {facts}")定义chaindoctor_chain = LLMChain(llm=llm, prompt=doctor_prompt)doctor_suggest = doctor_chain.run(facts)print(doctor_suggest)

 把不同的Chain整合在一起

前面我们定义了两个Chain,一个用来从文本中抽取关键信息,另一个根据抽取的关键信息给出治疗建议,这里我们还可以把这两个Chain整合在一起,让它可以自动完成这两个工作:

from langchain.chains import SimpleSequentialChain, SequentialChain#定义SimpleSequentialChainfull_chain = SimpleSequentialChain(chains=[fact_extraction_chain, doctor_chain], verbose=True)response = full_chain.run(text)LangChain与大型语言模型(LLMs)应用基础教程:信息抽取

 API Chain

我们知道像ChatGPT这样的大型语言模型是非常强大的,不过由于它们目前学到的都是2022年之前的知识,对于2022年之后发生的事情它们可能一无所知,所以仍然有一些简单的基础性问题它也无法回答,比如您问ChatGPT当前的时间,当前的天气情况等,它仍然无法给出正确答案,不过LangChain和LLm集成以后,可以通过访问第三方提供的API来获取我们需要的信息,并把这些信息喂给llm,这样llm就可以从中提炼出我们需要的内容和格式输出给我们。下面我们通过一个例子来说明如何让Langchain调用第三方机构的api,并返回结果给ChatGPT,最后ChatGPT按照正确的格式输出我们想要的内容。

这里,我们向ChatGPT询问上海当前的温度,一般情况下ChatGPT是无法给出正确的答案。

from langchain.llms import OpenAIChatfrom langchain.chains.api.prompt import API_RESPONSE_PROMPTfrom langchain.chains import APIChainfrom langchain.prompts.prompt import PromptTemplatefrom langchain.chains.api import open_meteo_docsllm = OpenAIChat(model_name="gpt-3.5-turbo")chain_new = APIChain.from_llm_and_api_docs(llm,open_meteo_docs.OPEN_METEO_DOCS,verbose=True)#我们向ChatGPT询问上海当前的温度chain_new.run('上海现在的温度是多少摄氏度?')

 我们可以看到langchain的APIChain首先访问了第三方(open-meteo.com)的天气预报API,然后返回一大堆天气预报的信息,但是信息需要通过ChatGPT来解析后再返回给用户他们需要的内容:

API 调用地址:https://api.open-meteo.com/v1/forecast?latitude=31.2304&longitude=121.4737&hourly=temperature_2m&current_weather=true&temperature_unit=celsius

API 返回信息:

 ChatGPT返回信息:

不过目前ChatGPT根据API调用结果返回的信息还是英文的。虽然实现了我们的要求,但还是有点瑕疵。

总结

今天我们学习了如何利用langchain的chain结合LLM来提取文本信息中的关键内容,然后通过另外一个chain根据这些关键信息给出治疗疾病的建议,最后我们把这两个chain整合为一个更为强大的Chain,它可以自动完成这两份工作。另外我们还介绍了langchain的API Chain,通过让api chain调用第三方提供的API, 我们可以让ChatGPT回答一些以前无法回答的问题。

参考资料

LangChain 官方文档

本文链接地址:https://www.jiuchutong.com/zhishi/293128.html 转载请保留说明!

上一篇:日落时的悬日现象,美国芝加哥 (© Razvan Sera/Amazing Aerial Agency)(日落时有什么变化)

下一篇:GPT模型总结【模型结构及计算过程_详细说明】(gpt详解)

  • 苹果怎么给app悬浮窗权限(苹果怎么给app悬浮窗设置)

    苹果怎么给app悬浮窗权限(苹果怎么给app悬浮窗设置)

  • 淘宝直播视频怎么保存到手机(淘宝直播视频怎么保存)

    淘宝直播视频怎么保存到手机(淘宝直播视频怎么保存)

  • 华为手环4pro几种颜色(华为手环4pro多少钱?)

    华为手环4pro几种颜色(华为手环4pro多少钱?)

  • 微信传视频最长几分钟(微信传视频最长多少分钟)

    微信传视频最长几分钟(微信传视频最长多少分钟)

  • 微机系统普遍使用的字符编码(微机系统采用什么结构)

    微机系统普遍使用的字符编码(微机系统采用什么结构)

  • ctrl f是什么快捷键(ctrl f快捷键)

    ctrl f是什么快捷键(ctrl f快捷键)

  • 华为滤镜在哪里开(华为手机的滤镜功能在哪里)

    华为滤镜在哪里开(华为手机的滤镜功能在哪里)

  • 互联网服务器在哪个国家(互联网服务器的种类有哪些)

    互联网服务器在哪个国家(互联网服务器的种类有哪些)

  • 如何打开屏幕录制功能(如何打开屏幕录制苹果)

    如何打开屏幕录制功能(如何打开屏幕录制苹果)

  • 可以根据订单编号查询信息吗(可以根据订单编号查到什么)

    可以根据订单编号查询信息吗(可以根据订单编号查到什么)

  • 苹果手机快没电了怎么恢复电量(苹果手机快没电了屏幕变暗)

    苹果手机快没电了怎么恢复电量(苹果手机快没电了屏幕变暗)

  • 华为p40pro有无线充电功能吗(华为p40pro有无线反向充电功能吗)

    华为p40pro有无线充电功能吗(华为p40pro有无线反向充电功能吗)

  • 小米10关机键在哪(小米10关机键不回弹)

    小米10关机键在哪(小米10关机键不回弹)

  • p30分屏怎么操作(p30手机分屏功能)

    p30分屏怎么操作(p30手机分屏功能)

  • 苹果手机全网通是啥意思(苹果手机全网通和wifi版的区别)

    苹果手机全网通是啥意思(苹果手机全网通和wifi版的区别)

  • oppoa11hd怎么关闭(oppoa11xhd怎么取消)

    oppoa11hd怎么关闭(oppoa11xhd怎么取消)

  • 电脑灰尘多有什么影响(电脑灰尘大)

    电脑灰尘多有什么影响(电脑灰尘大)

  • 苹果8p机身长多少厘米(苹果8p手机机长多少厘米)

    苹果8p机身长多少厘米(苹果8p手机机长多少厘米)

  • 华为wifi放大器安装步骤(华为wifi放大器使用说明)

    华为wifi放大器安装步骤(华为wifi放大器使用说明)

  • 微信撤回怎么不留痕迹(微信撤回怎么不能重新编辑了)

    微信撤回怎么不留痕迹(微信撤回怎么不能重新编辑了)

  • 天眼查是怎么获得企业工商信息的?(天眼查怎么获得免费vip)

    天眼查是怎么获得企业工商信息的?(天眼查怎么获得免费vip)

  • 爱奇艺弹幕开关在哪(爱奇艺弹幕开关突然没有了)

    爱奇艺弹幕开关在哪(爱奇艺弹幕开关突然没有了)

  • 抖音在哪看自己上热门(抖音在哪看自己的ip地址)

    抖音在哪看自己上热门(抖音在哪看自己的ip地址)

  • 荣耀20没有耳机孔怎么听歌(荣耀20没有耳机返听吗)

    荣耀20没有耳机孔怎么听歌(荣耀20没有耳机返听吗)

  • 无线充电意义在哪(无线充的意义)

    无线充电意义在哪(无线充的意义)

  • word书名号怎么打出来(word书名号怎么打出来快捷键)

    word书名号怎么打出来(word书名号怎么打出来快捷键)

  • 下载、编译、安装、使用 vue-devtools(编译安装和普通安装)

    下载、编译、安装、使用 vue-devtools(编译安装和普通安装)

  • python如何检测pygame中的碰撞(Python如何检测两个相同的列表)

    python如何检测pygame中的碰撞(Python如何检测两个相同的列表)

  • 金税盘的作用是什么意思
  • 员工产假个税系统改为非正常要更正申报吗?
  • 广告制作要交文化部门吗
  • 无偿使用厂房用交税吗
  • 当月有进项无销项月末怎么处理
  • 进项认证勾选在哪里操作
  • 税控盘减免税额转出会计分录
  • 医院员工工资表模板
  • 行政事业单位房产税免征文件
  • 公司制度奖励怎么写
  • 工程未完工但已开票
  • 公司购入货架如何做账
  • 远期转账支票怎么取钱
  • 投资款怎样缴印花税?
  • 发票已抵扣是什么意思
  • 没进项发票要交多少税
  • 企业交税的钱用在哪里
  • 增值税专用发票验票
  • 科研经费税收优惠
  • 商票背书需要对方开发票吗
  • 无形资产摊销表模板
  • 纸巾可以开专票吗
  • 外包人员培训费入什么科目
  • 发票上开的购物卡,入帐时怎么写摘要?
  • 资本公积 税务
  • 起诉销售
  • 投资公司抛售原始股如何交税?
  • 公司支付给法院要交税吗
  • macos12支持设备
  • 应付职工薪酬包括个人社保和个税吗
  • w10触摸键盘
  • 腾讯地图js api
  • linux特殊权限设置
  • 完税凭证遗失后怎么处理
  • window10电源选项
  • 固定资产公允价值变动会计处理
  • 办理不动产证需要什么手续及证件
  • 跨年度退货的账务处理
  • 如何快速搭建前端界面
  • vue中$route
  • 2021年车辆检测
  • 存货采购成本有余额吗
  • 商品出入库台账
  • 供应商的质量扣款应该开什么发票
  • 公司转让注册海外公司
  • 零税率与免税有何区别
  • 投资收益收到的现金增加的原因
  • sql语句重复
  • 所得税预缴怎么申报
  • 出售无形资产和固定资产计入什么科目
  • 会计处理要求
  • 行政事业单位应用方案总账,财务分析
  • 商贸公司批发零食怎么样
  • 实收资本现金入账怎么办
  • 福利费列支范围及标准
  • 进项税销项税增值税的区别
  • 在网上订机票怎么订
  • 固定资产报废属于非流动资产处置损失吗
  • 印花税滞纳金怎么处理
  • 工资条上为什么不显示生育险
  • mysqlbinlog -vvv
  • 屏蔽系统
  • quicklook预览word
  • ubuntu有线正在连接
  • putty ssh tunnel
  • linux怎么用u盘传输文件
  • mac的dock栏怎么设置
  • window7系统中的桌面指什么
  • win10电脑开机蓝屏怎么进入安全模式
  • 手机屏幕尺寸测量工具
  • cocos做游戏
  • 什么是馥芮白
  • 批处理作用
  • bootstrap怎么学
  • Nodejs+express+ejs简单使用实例代码
  • Python常见格式化字符串方法小结【百分号与format方法】
  • 用javascript
  • android中使用sharedprefence的步骤
  • 没工作个人所得税
  • 租赁费的税率是多少
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设