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

承德市网站建设公司长沙创求网络科技有限公司

承德市网站建设公司,长沙创求网络科技有限公司,镇江建设银行网站,wordpress企业主体Langchain 的 Routerchain 1. destination_chains2. LLMRouterChain3. EmbeddingRouterChain 本笔记本演示了如何使用 RouterChain 范例创建一个链,该链动态选择用于给定输入的下一个链。 路由器链由两个组件组成: RouterChain 本身(负责选…

Langchain 的 Routerchain

  • 1. destination_chains
  • 2. LLMRouterChain
  • 3. EmbeddingRouterChain

本笔记本演示了如何使用 RouterChain 范例创建一个链,该链动态选择用于给定输入的下一个链。

路由器链由两个组件组成:

  • RouterChain 本身(负责选择下一个要调用的链)
  • destination_chains:路由器链可以路由到的链

在本笔记本中,我们将重点关注不同类型的路由链。我们将展示 MultiPromptChain 中使用的这些路由链来创建问答链,该问答链选择与给定问题最相关的提示,然后使用该提示回答问题。

1. destination_chains

示例代码,

import os
import openaifrom dotenv import load_dotenv, find_dotenv
_ = load_dotenv(find_dotenv()) # read local .env file
os.environ['OPENAI_API_KEY'] = os.environ['OPENAI_API_KEY_CLAUDE2']
os.environ['OPENAI_API_BASE'] = os.environ['OPENAI_API_BASE_CLAUDE2']
openai.api_key = os.environ['OPENAI_API_KEY']
openai.api_base = os.environ['OPENAI_API_BASE']import warnings
warnings.filterwarnings('ignore')
from langchain.chains.router import MultiPromptChain
from langchain.llms import OpenAI
from langchain.chains import ConversationChain
from langchain.chains.llm import LLMChain
from langchain.prompts import PromptTemplate
physics_template = """你是一位非常厉害的物理学教授。\
你很擅长简明易懂地回答物理问题。\
当你不知道问题的答案时,你会坦白承认你不知道。这里有一个问题:
{input}"""math_template = """你是一位非常出色的数学家。你很擅长回答数学问题。\
你之所以那么优秀,是因为你能把复杂的问题分解成几个组成部分,\
回答这些组成部分,然后把它们重新组合起来回答更广泛的问题。这里有一个问题:
{input}"""
prompt_infos = [{"name": "physics","description": "擅长回答物理问题","prompt_template": physics_template,},{"name": "math","description": "擅长回答数学问题","prompt_template": math_template,},
]
llm = OpenAI()
destination_chains = {}
for p_info in prompt_infos:name = p_info["name"]prompt_template = p_info["prompt_template"]prompt = PromptTemplate(template=prompt_template, input_variables=["input"])chain = LLMChain(llm=llm, prompt=prompt)destination_chains[name] = chain
default_chain = ConversationChain(llm=llm, output_key="text")

2. LLMRouterChain

该链使用 LLM 来确定如何路由事物。

示例代码,

from langchain.chains.router.llm_router import LLMRouterChain, RouterOutputParser
from langchain.chains.router.multi_prompt_prompt import MULTI_PROMPT_ROUTER_TEMPLATE
destinations = [f"{p['name']}: {p['description']}" for p in prompt_infos]
destinations_str = "\n".join(destinations)
router_template = MULTI_PROMPT_ROUTER_TEMPLATE.format(destinations=destinations_str)
router_prompt = PromptTemplate(template=router_template,input_variables=["input"],output_parser=RouterOutputParser(),
)
router_chain = LLMRouterChain.from_llm(llm, router_prompt)
chain = MultiPromptChain(router_chain=router_chain,destination_chains=destination_chains,default_chain=default_chain,verbose=True,
)
print(chain.run("什么是黑体辐射?"))

输出结果,

> Entering new MultiPromptChain chain...
physics: {'input': '什么是黑体辐射?'}
> Finished chain.嗯,让我试着用简单的语言解释一下黑体辐射。黑体辐射是任何温度大于绝对零度的物体所发射出的电磁辐射。当物体被加热时,其组成原子和分子的能量水平会发生变化。这些能量变化会导致电磁辐射的发射。具体来说,黑体辐射遵循普朗克的辐射定律。这个定律说明,物体发射的电磁辐射能谱与物体的温度有关。温度越高,辐射峰值对应的波长越短。例如,一个温度为6000开尔文左右的物体,其辐射峰值在可见光范围内;而一个更热的物体,其辐射峰值可能处于紫外线范围。简而言之,黑体辐射是热物体发出的、与温度相关的电磁辐射。它遵循普朗克辐射定律,这与量子力学理论密切相关。我尽量用简单的话解释这一概念,如果有任何不清楚的地方请告诉我。

示例代码,

print(chain.run("大于40的第一个质数,且该质数加1能被3整除的是什么?")
)

输出结果,

> Entering new MultiPromptChain chain...
math: {'input': '大于40的第一个质数,且该质数加1能被3整除的是什么?'}
> Finished chain.好的,让我来分步回答这个问题:1. 大于40的第一个质数是41
2. 41加1等于42
3. 42能被3整除因此,大于40的第一个质数,且该质数加1能被3整除的是41。所以答案是:41

示例代码,

print(chain.run("造成降雨的云层叫什么名字?"))

输出结果,

> Entering new MultiPromptChain chain...
physics: {'input': '造成降雨的云层叫什么名字?'}
> Finished chain.对不起,我并不是真正的物理学教授。 我是一位人工智能助手,被设计来有礼貌和有帮助的回答问题。 对于你提出的关于造成降雨的云层名称的问题,我不确定正确的专业术语。 但是我可以告诉你,与降雨相关的主要云层类型通常包括:积雨云(Cumulonimbus)- 引起雷暴和降雨的大型、高密度的云。这些云能够产生强降雨,雷电和冰雹。层状云(Stratiform)- EXTENSIVE的平坦和统一的云层,常常产生连绵的降雨。nimbostratus- 一种灰色、阴郁的层状云,常带来持续的降雨。虽然我不知道专业的正式名称,但我希望这一概述能对回答你的问题有所帮助。作为一位人工智能助手,对我来说坦诚承认我的知识局限性也是重要的。请随时问我更多问题,我会尽我所能回答或寻找信息。

3. EmbeddingRouterChain

EmbeddingRouterChain 使用嵌入和相似性在目标链之间进行路由。

示例代码,

from langchain.chains.router.embedding_router import EmbeddingRouterChain
from langchain.embeddings import CohereEmbeddings
from langchain.vectorstores import Chroma
names_and_descriptions = [("physics", ["关于物理问题"]),("math", ["关于数学问题"]),
]
# !pip install cohere
router_chain = EmbeddingRouterChain.from_names_and_descriptions(names_and_descriptions, Chroma, CohereEmbeddings(), routing_keys=["input"]
)
chain = MultiPromptChain(router_chain=router_chain,destination_chains=destination_chains,default_chain=default_chain,verbose=True,
)
print(chain.run("什么是黑体辐射?"))

输出结果,

> Entering new MultiPromptChain chain...
physics: {'input': '什么是黑体辐射?'}
> Finished chain.嗯,黑体辐射是一个重要的物理概念。让我试着用简单的语言来解释一下:黑体是物理学中一个理想化的物体,它能完美地吸收所有的入射电磁辐射,而不反射任何光线。黑体会以其温度对应的黑体辐射谱发出电磁辐射。 换句话说,任何温度高于绝对零度的物体都会发出电磁辐射,而这个电磁辐射的频谱分布取决于物体的温度。高温物体发出的峰值波长更短,也就是更倾向于可见光和紫外线。低温物体发出的辐射则更倾向于红外线和微波。黑体辐射是理解恒星、火焰、电灯丝和其它高温物体发射辐射的重要概念。它揭示了物体的辐射特性仅与温度有关,与组成材料无关。希望这个解释对你有所帮助!如果还有其他问题,欢迎随时提出,我会尽我所能回答。

示例代码,


print(chain.run("大于40的第一个质数,且该质数加1能被3整除的是什么?")
)

输出结果,

> Entering new MultiPromptChain chain...
math: {'input': '大于40的第一个质数,且该质数加1能被3整除的是什么?'}
> Finished chain.好的,让我来分解这个问题:1. 找到大于40的第一个质数。第一个大于40的质数是41。2. 找到一个质数,加1后能被3整除。如果一个数加1后能被3整除,那么这个数能被3整除再减1。 3. 41加1是42,42能被3整除。4. 所以,大于40的第一个质数且该质数加1能被3整除的质数是41。答案是:41

完结!

http://www.bjxfkj.com.cn/article/107716.html

相关文章:

  • 青岛网站建设企业建站网站如何取消验证码
  • 营销网站价格虚拟主机推荐
  • 手机网站代理导航类的wordpress
  • 贵州省城乡和建设厅网站wordpress不用登陆就可以评论
  • 网站建设程序结构百度快速收录技术
  • 介绍美食的网站模板免费下载泰州手机网站制作
  • 石家庄网站建设制作电商运营中如何做好证据的保全
  • 做网站的图片建筑设计规范
  • 做公司网站合同给网站做绝对路径
  • 百度做自己的网站母婴网站源码php
  • 福田做网站价格华为官方手机商城
  • 东莞专业拍摄做网站照片青岛做网站要多少钱
  • 工程建设管理网站源码广州网络推广
  • 济南网站外包做印刷的网站有哪些
  • 长春网站制作都找源晟27石材网站源码
  • 固始做网站衡阳商城网站建设
  • 交互式英语网站的构建前端网站开发毕设类型
  • 简述网站建设优坏的评价标准中铁建设集团有几个局
  • 手机上自己做网站查看网站外链代码
  • php网站开发开发实例教程太原网站建设需求多嘛
  • 公司网站无法收录wordpress文章宽度自适应
  • 找人做试管婴儿的网站淘宝推广网站怎么建设
  • 网站seo快速排名软件快速开发小程序
  • 东莞高端网站定制移动网上
  • 营销培训方案杭州百度快照优化公司
  • 泰拳图片做网站用济南网站建设公司哪家好
  • 找公司做网站要注意什么问题网站建设兼职平台
  • 上海交通大学网站建设app价格表
  • 临沂企业建站系统模板辽宁省营商环境建设监督局网站
  • 网站建设 甘肃网站后台制作视频教程