当前位置: 首页 > news >正文

中商华兴建设有限公司网站什么公司在百度做网站

中商华兴建设有限公司网站,什么公司在百度做网站,WordPress注册小工具,天津网站建设服务#x1f604; 为什么我们需要Chains #xff1f; 链允许我们将多个组件组合在一起#xff0c;以创建一个单一的、连贯的应用程序。链#xff08;Chains#xff09;通常将一个LLM#xff08;大语言模型#xff09;与提示结合在一起#xff0c;使用这个构建块#xff0… 为什么我们需要Chains 链允许我们将多个组件组合在一起以创建一个单一的、连贯的应用程序。链Chains通常将一个LLM大语言模型与提示结合在一起使用这个构建块您还可以将一堆这些构建块组合在一起对您的文本或其他数据进行一系列操作。例如我们可以创建一个链该链接受用户输入使用提示模板对其进行格式化然后将格式化的响应传递给LLM。我们可以通过将多个链组合在一起或者通过将链与其他组件组合在一起来构建更复杂的链。这些链的一部分的强大之处在于你可以一次运行它们在许多输入上。 文章目录 为什么我们需要Chains 0、初始化openai环境1、LLMChain2、Sequential Chain2.1、SimpleSequentialChain2.2、SequentialChain 3、 Router Chain路由链3.1、创建目标链3.2、创建默认目标链3.3、创建LLM用于在不同链之间进行路由的模板3.4、构建路由链 Reference 0、初始化openai环境 from langchain.chat_models import ChatOpenAI import os import openai # 运行此API配置需要将目录中的.env中api_key替换为自己的 from dotenv import load_dotenv, find_dotenv _ load_dotenv(find_dotenv()) # read local .env file openai.api_key os.environ[OPENAI_API_KEY]1、LLMChain LLMChain是一个简单但非常强大的链也是后面我们将要介绍的许多链的基础。 from langchain.chat_models import ChatOpenAI #导入OpenAI模型 from langchain.prompts import ChatPromptTemplate #导入聊天提示模板 from langchain.chains import LLMChain #导入LLM链。# 这里我们将参数temperature设置为0.0从而减少生成答案的随机性。 # 如果你想要每次得到不一样的有新意的答案可以尝试调整该参数。 # 以下的对话均无记忆即每次调用预测不会记得之前的对话。想要有记忆功能请看下一节的langchain的Memory模块 llm ChatOpenAI(temperature0.0,model_namegpt-3.5-turbo) # \在字符串里就是取消换行符的意思 template_string \ 对与如下三个反引号括住的评论我需要提取如下信息。 饮料这个产品是饮料吗如果是返回True否则返回答False。 产品名提取出产品的名字如果没有返回-1。 价格与价值提取出关于该产品的价格或价值的所有信息将他们存入python list中并返回。 {format_instructions} {query}prompt_template ChatPromptTemplate.from_template(template_string)chain LLMChain(llmllm, promptprompt_template)query 这喜茶新出的桑葚葡萄太好喝里吧而且才19块一杯太值啦高性价比 format_instructions \ 将输出组织成带有如下key的json形式 饮料 产品名 价格与价值 res chain.run({query:query,format_instructions: format_instructions}) print(res){饮料: true,产品名: 桑葚葡萄,价格与价值: [19块一杯, 高性价比] }2、Sequential Chain 2.1、SimpleSequentialChain 顺序链是按预定义顺序执行其链接的链。具体来说我们将使用简单顺序链SimpleSequentialChain这是顺序链的最简单类型其中每个步骤都有一个输入/输出一个步骤的输出是下一个步骤的输入 from langchain.chains import SimpleSequentialChain first_prompt ChatPromptTemplate.from_template(描述制造{product}的公司的最佳名称是什么?输出一个即可。 ) chain_one LLMChain(llmllm, promptfirst_prompt)second_prompt ChatPromptTemplate.from_template(写一个20字的描述对于下面这个\公司{company_name} ) chain_two LLMChain(llmllm, promptsecond_prompt)overall_simple_chain SimpleSequentialChain(chains[chain_one, chain_two],verboseTrue) product 手机 overall_simple_chain.run(product)Entering new chain... Techtronics Techtronics是一家技术公司专注于创新和开发高科技产品和解决方案。 Finished chain.Techtronics是一家技术公司专注于创新和开发高科技产品和解决方案。2.2、SequentialChain 当只有一个输入和一个输出时简单的顺序链可以顺利完成。但是当有多个输入或多个输出时该如何实现呢可用顺序链。 from langchain.chains import SequentialChain# 下面实现流程1-2, 1-3, 2,3-4#子链1 # prompt模板 1: 翻译成英语把下面的review翻译成英语 first_prompt ChatPromptTemplate.from_template(Translate the following review to english:\n\n{Review}) # chain 1: 输入Review 输出 英文的 Review chain_one LLMChain(llmllm, promptfirst_prompt,output_keyEnglish_Review)#子链2 # prompt模板 2: 用一句话总结下面的 review second_prompt ChatPromptTemplate.from_template(Can you summarize the following review in 1 sentence: \n\n{English_Review}) # chain 2: 输入英文的Review 输出总结 chain_two LLMChain(llmllm, promptsecond_prompt,output_keysummary)#子链3 # prompt模板 3: 下面review使用的什么语言 third_prompt ChatPromptTemplate.from_template(What language is the following review:\n\n{Review}) # chain 3: 输入Review 输出语言 chain_three LLMChain(llmllm, promptthird_prompt,output_keylanguage)#子链4 # prompt模板 4: 使用特定的语言对下面的总结写一个后续回复 # 根据英文总结翻译成language语言 fourth_prompt ChatPromptTemplate.from_template(Write a follow up response to the following summary in the specified language:\n\nSummary: {summary}\n\nLanguage: {language}) # chain 4: 输入 总结, 语言 输出 后续回复 chain_four LLMChain(llmllm, promptfourth_prompt,output_keyfollowup_message)overall_chain SequentialChain(chains[chain_one, chain_two, chain_three, chain_four],input_variables[Review],output_variables[English_Review, summary, language, followup_message],verboseFalse) review Spark是一个快速、通用的大数据处理引擎可以进行分布式数据处理和分析。与Hadoop的MapReduce相比Spark具有更高的性能和更丰富的功能。Spark支持多种编程语言如Scala、Java和Python(pyspark)并提供了一组丰富的API包括用于数据处理、机器学习和图计算的库。 res overall_chain(review) type(res), res(dict,{Review: Spark是一个快速、通用的大数据处理引擎可以进行分布式数据处理和分析。与Hadoop的MapReduce相比Spark具有更高的性能和更丰富的功能。Spark支持多种编程语言如Scala、Java和Python(pyspark)并提供了一组丰富的API包括用于数据处理、机器学习和图计算的库。,English_Review: Spark is a fast and versatile big data processing engine that can perform distributed data processing and analysis. Compared to Hadoops MapReduce, Spark has higher performance and richer functionality. Spark supports multiple programming languages such as Scala, Java, and Python (pyspark), and provides a rich set of APIs including libraries for data processing, machine learning, and graph computation.,summary: The review highlights that Spark is a high-performance and versatile big data processing engine that offers distributed data processing and analysis, surpassing Hadoops MapReduce in terms of performance and functionality, with support for multiple programming languages and a wide range of APIs for various tasks.,language: The following review is in Chinese.,followup_message: 回复这篇评论强调了Spark是一个高性能且多功能的大数据处理引擎提供分布式数据处理和分析性能和功能方面超过了Hadoop的MapReduce。它支持多种编程语言并提供各种任务的广泛API。})3、 Router Chain路由链 到目前为止我们已经学习了LLM链和顺序链。但是如果您想做一些更复杂的事情怎么办 一个相当常见但基本的操作是根据输入将其路由到一条链具体取决于该输入到底是什么。如果你有多个子链每个子链都专门用于特定类型的输入那么可以组成一个路由链它首先决定将它传递给哪个子链(也输入写prompt模板让llm来选择)然后将它传递给那个链即传递给对于的链的prompt模板进行预测。【相当于从输入到输出要经过两次prompt输入模型拿到输出】 路由器由两个组件组成 路由器链本身负责选择要调用的下一个链destination_chains路由器链可以路由到的链 个人感觉就是可以用来根据输入切换不同的设定角色从而定位到更好的prompt输入给模型预测 举一个具体的例子让我们看一下我们在不同类型的链之间路由的地方我们在这里有不同的prompt: #第一个提示适合回答物理问题 physics_template 你是一个非常聪明的物理学家你擅长解答物理相关的问题。当你不知道如何解答时你应该承认你不知道。 问题:{input}#第二个提示适合回答数学问题 math_template 你是一个非常聪明的数学家你擅长解答物理相关的问题。当你不知道如何解答时你应该承认你不知道。 问题:{input}#第三个适合回答历史问题 history_template 你是一个非常聪明的历史家你擅长解答物理相关的问题。当你不知道如何解答时你应该承认你不知道。 问题:{input}#第四个适合回答计算机问题 computerscience_template 你是一个非常聪明的计算机学家你擅长解答物理相关的问题。当你不知道如何解答时你应该承认你不知道。 问题:{input}⭐ 在我们拥有了这些提示模板后可以为每个模板命名然后提供描述。例如第一个物理学的描述适合回答关于物理学的问题这些信息将传递给路由链然后由路由链决定何时使用此子链。 prompt_infos [{name: 物理,description: 擅长回答物理问题,prompt_template: physics_template},{name: 数学,description: 擅长回答数学问题,prompt_template: math_template},{name: 历史,description: 擅长回答历史问题,prompt_template: history_template},{name: 计算机科学,description: 擅长回答计算机科学问题,prompt_template: computerscience_template} ]⭐ LLMRouterChain此链使用 LLM 来确定如何路由事物 在这里我们需要一个多提示链。这是一种特定类型的链用于在多个不同的提示模板之间进行路由。 但是这只是你可以路由的一种类型。你也可以在任何类型的链之间进行路由。 这里我们要实现的几个类是LLM路由器链。这个类本身使用语言模型来在不同的子链之间进行路由。 这就是上面提供的描述和名称将被使用的地方。 3.1、创建目标链 目标链是由路由链调用的链每个目标链都是一个语言模型链 ⭐ 将上面定义的4个链用LLMChain构建好存在destination_chains里 from langchain.chains.router import MultiPromptChain #导入多提示链 from langchain.chains.router.llm_router import LLMRouterChain,RouterOutputParser from langchain.prompts import PromptTemplatedestination_chains {} for p_info in prompt_infos:name p_info[name]prompt_template p_info[prompt_template]prompt ChatPromptTemplate.from_template(templateprompt_template)chain LLMChain(llmllm, promptprompt)destination_chains[name] chaindestinations [f{p[name]}: {p[description]} for p in prompt_infos] destinations_str \n.join(destinations) destination_chains{物理: LLMChain(memoryNone, callbacksNone, callback_managerNone, verboseFalse, tagsNone, promptChatPromptTemplate(input_variables[input], output_parserNone, partial_variables{}, messages[HumanMessagePromptTemplate(promptPromptTemplate(input_variables[input], output_parserNone, partial_variables{}, template你是一个非常聪明的物理学家你擅长解答物理相关的问题。当你不知道如何解答时你应该承认你不知道。\n问题:{input}, template_formatf-string, validate_templateTrue), additional_kwargs{})]), llmChatOpenAI(cacheNone, verboseFalse, callbacksNone, callback_managerNone, tagsNone, clientclass openai.api_resources.chat_completion.ChatCompletion, model_namegpt-3.5-turbo, temperature0.0, model_kwargs{}, openai_api_keysk-dFjELkKH45hJItUxwzZ8T3BlbkFJvQqIq9JCC4NeMihjGoDH, openai_api_base, openai_organization, openai_proxy, request_timeoutNone, max_retries6, streamingFalse, n1, max_tokensNone, tiktoken_model_nameNone), output_keytext, output_parserNoOpOutputParser(), return_final_onlyTrue, llm_kwargs{}),数学: LLMChain(memoryNone, callbacksNone, callback_managerNone, verboseFalse, tagsNone, promptChatPromptTemplate(input_variables[input], output_parserNone, partial_variables{}, messages[HumanMessagePromptTemplate(promptPromptTemplate(input_variables[input], output_parserNone, partial_variables{}, template你是一个非常聪明的数学家你擅长解答物理相关的问题。当你不知道如何解答时你应该承认你不知道。\n问题:{input}, template_formatf-string, validate_templateTrue), additional_kwargs{})]), llmChatOpenAI(cacheNone, verboseFalse, callbacksNone, callback_managerNone, tagsNone, clientclass openai.api_resources.chat_completion.ChatCompletion, model_namegpt-3.5-turbo, temperature0.0, model_kwargs{}, openai_api_keysk-dFjELkKH45hJItUxwzZ8T3BlbkFJvQqIq9JCC4NeMihjGoDH, openai_api_base, openai_organization, openai_proxy, request_timeoutNone, max_retries6, streamingFalse, n1, max_tokensNone, tiktoken_model_nameNone), output_keytext, output_parserNoOpOutputParser(), return_final_onlyTrue, llm_kwargs{}),历史: LLMChain(memoryNone, callbacksNone, callback_managerNone, verboseFalse, tagsNone, promptChatPromptTemplate(input_variables[input], output_parserNone, partial_variables{}, messages[HumanMessagePromptTemplate(promptPromptTemplate(input_variables[input], output_parserNone, partial_variables{}, template你是一个非常聪明的历史家你擅长解答物理相关的问题。当你不知道如何解答时你应该承认你不知道。\n问题:{input}, template_formatf-string, validate_templateTrue), additional_kwargs{})]), llmChatOpenAI(cacheNone, verboseFalse, callbacksNone, callback_managerNone, tagsNone, clientclass openai.api_resources.chat_completion.ChatCompletion, model_namegpt-3.5-turbo, temperature0.0, model_kwargs{}, openai_api_keysk-dFjELkKH45hJItUxwzZ8T3BlbkFJvQqIq9JCC4NeMihjGoDH, openai_api_base, openai_organization, openai_proxy, request_timeoutNone, max_retries6, streamingFalse, n1, max_tokensNone, tiktoken_model_nameNone), output_keytext, output_parserNoOpOutputParser(), return_final_onlyTrue, llm_kwargs{}),计算机科学: LLMChain(memoryNone, callbacksNone, callback_managerNone, verboseFalse, tagsNone, promptChatPromptTemplate(input_variables[input], output_parserNone, partial_variables{}, messages[HumanMessagePromptTemplate(promptPromptTemplate(input_variables[input], output_parserNone, partial_variables{}, template你是一个非常聪明的计算机学家你擅长解答物理相关的问题。当你不知道如何解答时你应该承认你不知道。\n问题:{input}, template_formatf-string, validate_templateTrue), additional_kwargs{})]), llmChatOpenAI(cacheNone, verboseFalse, callbacksNone, callback_managerNone, tagsNone, clientclass openai.api_resources.chat_completion.ChatCompletion, model_namegpt-3.5-turbo, temperature0.0, model_kwargs{}, openai_api_keysk-dFjELkKH45hJItUxwzZ8T3BlbkFJvQqIq9JCC4NeMihjGoDH, openai_api_base, openai_organization, openai_proxy, request_timeoutNone, max_retries6, streamingFalse, n1, max_tokensNone, tiktoken_model_nameNone), output_keytext, output_parserNoOpOutputParser(), return_final_onlyTrue, llm_kwargs{})}destinations, destinations_str ([物理: 擅长回答物理问题, 数学: 擅长回答数学问题, 历史: 擅长回答历史问题, 计算机科学: 擅长回答计算机科学问题],物理: 擅长回答物理问题\n数学: 擅长回答数学问题\n历史: 擅长回答历史问题\n计算机科学: 擅长回答计算机科学问题)3.2、创建默认目标链 除了目标链之外我们还需要一个默认目标链。这是一个当路由器无法决定使用哪个子链时调用的链。在上面的示例中当输入问题与物理、数学、历史或计算机科学无关时可能会调用它。 default_prompt ChatPromptTemplate.from_template({input}) default_chain LLMChain(llmllm, promptdefault_prompt)3.3、创建LLM用于在不同链之间进行路由的模板 这包括要完成的任务的说明以及输出应该采用的特定格式。 # 以下输出是LLMRouterChain的输出keys是内置的[destination, next_inputs]所以prompt里定义好它所需的输出MULTI_PROMPT_ROUTER_TEMPLATE 给定一段原始输入文本由语言模型来选择对于该段输入\ 文本最合适的prompt。我将给定候选prompts和对各prompt适合哪个领域的描述。\ 如果您认为修改原始输入最终会导致语言模型得到更好的响应您也可以修改原始输入。格式 输出返回如下格式的json对象 json {{{{destination: string \ name of the prompt to use or DEFAULTnext_inputs: string \ a potentially modified version of the original input }}}} 记住: destination一定要是以下候选prompts中的名字之一或者\ 如果输入不适合所有候选promptsdestination命名为 “DEFAULT”。 记住: next_inputs可以只是原始输入如果您认为不需要任何修改。 候选prompts {destinations} 输入 {{input}} 输出 (记住包括json)3.4、构建路由链 首先我们通过格式化上面定义的目标创建完整的路由器模板。这个模板可以适用许多不同类型的目标。 因此在这里您可以添加一个不同的学科如英语或拉丁语而不仅仅是物理、数学、历史和计算机科学。 接下来我们从这个模板创建提示模板 最后通过传入llm和整个路由提示来创建路由链。需要注意的是这里有路由输出解析这很重要因为它将帮助这个链路决定在哪些子链路之间进行路由。 print(destinations_str) router_template MULTI_PROMPT_ROUTER_TEMPLATE.format(destinationsdestinations_str ) router_prompt PromptTemplate(templaterouter_template,input_variables[input],output_parserRouterOutputParser(), ) # LLMRouterChain的输出keys是内置的[destination, next_inputs]. router_chain LLMRouterChain.from_llm(llm, router_prompt) print(router_chain.output_keys)物理: 擅长回答物理问题 数学: 擅长回答数学问题 历史: 擅长回答历史问题 计算机科学: 擅长回答计算机科学问题 [destination, next_inputs]router_chain(11?) {input: 11?, destination: 数学, next_inputs: {input: 11?}}最后将所有内容整合在一起创建整体链路 #多提示链 # 设置verboseTrue我们可以看到它被路由到哪条目标prompt链路 chain MultiPromptChain(router_chainrouter_chain, #路由链路destination_chainsdestination_chains, #目标链路default_chaindefault_chain, #默认链路verboseTrue)chain.run(什么是黑体辐射) # 物理: {input: 什么是黑体辐射} # 黑体辐射是指一个理想化的物体它能够完全吸收所有入射到它上面的辐射能量并以热辐射的形式重新发射出来。黑体辐射的特点是其辐射能量的分布与温度有关即黑体辐射谱随着温度的升高而增强并且在不同波长处的辐射强度也不同。根据普朗克辐射定律和斯蒂芬-玻尔兹曼定律我们可以描述黑体辐射的性质和行为。Reference [1] 吴恩达老师的教程[2] DataWhale组织
http://www.zqtcl.cn/news/399855/

相关文章:

  • 介绍做网站的标题在线图片编辑器好用吗
  • 金华建设网站公司笔记本销售网站开发的背景
  • 国外做的好看的网站设计网络营销推广方案怎么做
  • 网站建站业务wordpress网站域名地址
  • 烟台网站制作这做菠菜网站
  • 网站建设vr百度站长
  • 织梦网站广告代码如何写网页设计你若安好便是晴天作业
  • 网站建设 上海wordpress 知更鸟 公告
  • 建小说网站需要多少钱罗湖区住房和建设网站
  • 湖南专业网站建设服务做网站的底图尺寸多大
  • 山东省住房与建设厅网站首页有名的wordpress主题商
  • 常州市金坛区网站建设毕业设计代做淘宝好还是网站好
  • 品牌网站建设营销型网站设计网站整合方案
  • 网站开发设计师网站代理什么意思
  • 网站层级关系邯郸品牌商标vi设计策划公司
  • 网站开发产品需求说明小网站代码
  • 苏州网站推广排名网站建设方案范文8篇
  • 自己做考试题目网站广州番禺区美食攻略
  • 广州做网站如何如何制作一个网页
  • 网站定制开发收费标准是多少网站代码优化方案
  • 制作卡牌的网站深圳正规煤气公司
  • 手表网站哪家好网站用图片
  • 群辉nas 做网站wordpress linux 中文
  • 平面设计素材网站排名巩义网站建设方案表
  • 延庆网站制作搜索引擎优化的基础是什么
  • 管理手机网站商城网站备案流程
  • 怀化买房网站网站广告js代码添加
  • 做网站 帮别人卖服务器wordpress主题多页面
  • 代理游戏网站潍坊市建设工程管理处网站
  • 大同推广型网站建设网站规划建设与管理维护第二版答案