您的位置 首页 > 德语词汇

chain的?LangChain之Chain

本篇文章给大家谈谈chain的,以及LangChain之Chain对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题,不要忘了收藏本站喔。

LangChain中的Chain(链)指的是一个具有输入和输出的单独组件的模型。

chain的?LangChain之Chain

LLMChain是最常见的链式模型之一。它由PromptTemplate、模型(LLM或ChatModel)和OutputParser(输出解析器,可选)组成。LLMChain可以接受多个输入变量,通过PromptTemplate将它们格式化为特定的Prompt。然后将其传递给LLM模型。最后,如果提供了OutputParser,则使用OutputParser将LLM的输出解析为用户期望的格式。

将LLM和Prompts结合在多步骤的工作流中,使用LLMChain有许多链式搜索的应用程序可以查看哪些最适合您的用例。下面的连接包含了很多使用chain的应用,https://python.langchain.com/en/latest/modules/chains/how_to_guides.html

##导入基础库\nfromlangchain.llmsimportOpenAI\nfromlangchain.chainsimportLLMChain\nfromlangchain.promptsimportPromptTemplate\nfromlangchain.chainsimportSimpleSequentialChain\nllm=OpenAI(temperature=1,openai_api_key=openai_api_key)\n##建立模板\ntemplate='''你的任务是根据用户所提供的地区给出相应的菜肴\n%USERLOCATION\n{user_location}\n\n你的回复:\n'''\nprompt_template=PromptTemplate(input_variables=["user_location"],template=template)\n#建立location的chain\nlocation_chain=LLMChain(llm=llm,prompt=prompt_template)\n##接下来获取chain的返回结果输入到下一个chain中\n\nmealtemplate='''给你一个菜肴,请告诉我如何在家做那道菜,给出具体的步骤来、\n%MEAL\n{user_meal}\n\n您的回复:\n'''\nprompt_template=PromptTemplate(input_variables=["user_meal"],template=mealtemplate)\nlocation_chain=LLMChain(llm=llm,prompt=prompt_template)\n#建立meal的chain\nmeal_chain=LLMChain(llm=llm,prompt=prompt_template)\n#建立简单链\noverall_chain=SimpleSequentialChain(chains=[location_chain,meal_chain],verbose=True)\nreview=overall_chain.run("湖北")

代码使用SimpleSequentialChain类创建一个表示任务链的对象。对象接受一个链列表和一个详细参数作为参数。verbose参数是一个布尔值,控制对象是否打印关于链执行的一些信息。如果verbose为True,对象将打印每个链的名称以及每个任务的输入和输出变量。如果verbose为False,对象将不输出任何内容。

很容易运行通过长期大量的文档,并得到一个摘要。检查这个视频的其他链类型除了map-reduce

#导入基础库\nfromlangchain.chains.summarizeimportload_summarize_chain\nfromlangchain.document_loadersimportTextLoader\nfromlangchain.text_splitterimportRecursiveCharacterTextSplitter\n#导入文档\nloader=TextLoader('data/PaulGrahamEssays/disc.txt')\ndocuments=loader.load()\n\n#拆分文档内容\ntext_splitter=RecursiveCharacterTextSplitter(chunk_size=700,chunk_overlap=50)\ntexts=text_splitter.split_documents(documents)\n\n#Thereisalotofcomplexityhiddeninthisoneline.Iencourageyoutocheckoutthevideoaboveformoredetail\nchain=load_summarize_chain(llm,chain_type="map_reduce",verbose=True)\nchain.run(texts)定制链

LangChain提供了很多现成的链接,但是有时候您可能想要为您的特定用例创建一个自定义链接。我们将创建一个自定义链,用于连接2个LLMChains的输出。定制链的步骤1.Chain类的子类化,类的方法重写2.填写input_key和output_key属性3.添加显示如何执行链的_call方法

fromlangchain.chainsimportLLMChain\nfromlangchain.chains.baseimportChain\n\nfromtypingimportDict,List\n\n\nclassConcatenateChain(Chain):\nchain_1:LLMChain\nchain_2:LLMChain\n\n@property\ndefinput_keys(self)->List[str]:\n#两个input_key的并集\nall_input_vars=set(self.chain_1.input_keys).union(set(self.chain_2.input_keys))\nreturnlist(all_input_vars)\n\n@property\ndefoutput_keys(self)->List[str]:\nreturn['concat_output']\n\ndef_call(self,inputs:Dict[str,str])->Dict[str,str]:\noutput_1=self.chain_1.run(inputs)\noutput_2=self.chain_2.run(inputs)\nreturn{'concat_output':output_1+output_2}\nprompt_1=PromptTemplate(\ninput_variables=["product"],\ntemplate="请给我生产{product}的公司的名称?",\n)\nchain_1=LLMChain(llm=llm,prompt=prompt_1)\n\nprompt_2=PromptTemplate(\ninput_variables=["product"],\ntemplate="请给我生产制作{product}的公司的口号?",\n)\nchain_2=LLMChain(llm=llm,prompt=prompt_2)\n##连接chain\nconcat_chain=ConcatenateChain(chain_1=chain_1,chain_2=chain_2)\nconcat_output=concat_chain.run("彩色的袜子")\nprint(f"Concatenatedoutput:\\n{concat_output}")

Concatenatedoutput:RainbowSocksCo."StepIntoColorfulComfort!"

LLMmath,集成python,调用python来进行数学运算,返回相应的结果

#调用LLMMath\nfromlangchainimportOpenAI,LLMMathChain\n\nllm=OpenAI(temperature=0)\nllm_math=LLMMathChain(llm=llm,verbose=True)\n\nllm_math.run("Whatis13raisedtothe.3432power?")

结果如下所示

>EnteringnewLLMMathChainchain...\nWhatis13raisedtothe.3432power?\nimportmath\nprint(math.pow(13,.3432))\nAnswer:2.4116004626599237\n\n>Finishedchain.

调用python很好的解决了chatgpt较弱的数理能力,上述过程也可以理解为chatgpt的插件模式以下是一些常见的集成链及其功能。LLMMath:结合Python解释器完成数据计算SQLDatabaseChain:集合sqlite数据库完成查询qa_with_sources:基于多个文档进行问答(底层用到Netwokx)LLMRequestChain:请求指定url查询结果,并用llm解释PALChain:生成代码并运行得出结果APIChain:根据api文档生成api请求

networkx是一个用Python语言开发的图论与复杂网络建模工具,内置了常用的图与复杂网络分析算法,可以方便的进行复杂网络数据分析、仿真建模等工作。

OK,本文到此结束,希望对大家有所帮助。

本站涵盖的内容、图片、视频等数据,部分未能与原作者取得联系。若涉及版权问题,请及时通知我们并提供相关证明材料,我们将及时予以删除!谢谢大家的理解与支持!

Copyright © 2023