位置: 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详解)

  • 增值税一般纳税人证明文件
  • 企业为员工代扣代缴个人所得税分录
  • 从价计征房产税怎么算 原值和出租房原值
  • 房地产业如何确认收入
  • 代账公司需要做报表吗
  • 普通发票不能抵扣进项税额怎么做账
  • 企业城建税教育费附加和地教费的税率是多少
  • 缴纳文化事业建设费的范围
  • 凭证更正方法有哪些
  • 固定资产折旧的影响因素
  • 其他账簿印花税是否取消
  • 外聘人员需要扣个人所得税吗
  • 驻外人员医保报销
  • 所有者权益的利得和损失
  • 销售货物或者提供应税劳务、服务清单怎么开
  • 把公司的钱借给别人责任
  • 收到减免退税费是政府补助怎么记账?
  • 4s店帮买保险后会哪些资料要给我的
  • 应收账款计提坏账准备是根据什么会计信息质量要求
  • 一般纳税人增值税申报表怎么填写
  • Omniserv.exe - Omniserv是什么进程 有什么用
  • 怎么获取win10密钥
  • 一般纳税人资质证明文件去哪打印
  • php字符串赋值
  • 特许权使用费税前扣除标准
  • 固定资产抵债交不交增值税
  • 收回前欠货款会导致资产总额增加吗
  • 应付票据和应收票据的关系
  • php模拟表单提交
  • 海峡群岛属于哪个洲
  • 应交增值税明细科目怎么看
  • 申请高新技术企业收入要多少
  • 若依框架用到的技术
  • git 查看所有commit
  • 外币账户如何设立
  • 哪些项目可以在城镇开发边界外
  • 发票明细怎么导出数量
  • 酒的增值税专票可抵扣不
  • python中series的用法
  • 收到增值进项发票
  • 长期待摊费用账务处理包括哪两部分
  • 一般计税方法下自来水公司(一般纳税人)销售自来水
  • 结转完工产品成本的会计科目
  • 低值易耗品的
  • 发票领购簿用完了怎么领取
  • 解决在sql脚本中怎么写
  • 股权转让怎么做账
  • 流动资产周转天数高说明什么
  • 联通里的话费可以拿来干嘛
  • 公司厨房用具
  • 在建工程账务处理会计分录
  • 融资租赁的计算方法有哪些
  • 预付和挂账如何区分
  • 公益募捐的基金是什么
  • 班车租赁服务
  • 空调的预计净残值是什么
  • 进项发票已认证未抵扣分录
  • 公账钱怎么取出
  • 建账的基本要求
  • sql中的存储过程
  • mysql导出语句
  • 建立mysql
  • mysql命令行配置
  • xp如何查看系统位数
  • ,linux
  • macxi
  • ubuntu怎么刷新桌面
  • 如何使用朋友的山姆卡
  • post installation
  • win7 设置
  • Metaio in Unity3d 教程--- 二. 创建自己的Application
  • 基于javascript数独游戏论文参考文献
  • linux系统启动进程命令
  • 编程中的python
  • 计算字符串的长度使用哪个函数?
  • react和nodejs
  • time模块 python
  • 内蒙古物业费收取标准2020
  • 国税和地税在一起吗
  • 二手房个税怎么算
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设