LangChain 56 深入理解LangChain 表达式语言十九 config运行时选择大模型LLM LangChain Expression Language (LCEL)

LangChain系列文章

  1. LangChain 36 深入理解LangChain 表达式语言优势一 LangChain Expression Language (LCEL)
  2. LangChain 37 深入理解LangChain 表达式语言二 实现prompt+model+output parser LangChain Expression Language (LCEL)
  3. LangChain 38 深入理解LangChain 表达式语言三 实现RAG检索增强生成 LangChain Expression Language (LCEL)
  4. LangChain 39 深入理解LangChain 表达式语言四 为什么要用LCEL LangChain Expression Language (LCEL)
  5. LangChain 40 实战Langchain访问OpenAI ChatGPT API Account deactivated的另类方法,访问跳板机API
  6. LangChain 41 深入理解LangChain 表达式语言五 为什么要用LCEL调用大模型LLM LangChain Expression Language (LCEL)
  7. LangChain 42 深入理解LangChain 表达式语言六 Runtime调用不同大模型LLM LangChain Expression Language (LCEL)
  8. LangChain 43 深入理解LangChain 表达式语言七 日志和Fallbacks异常备选方案 LangChain Expression Language (LCEL)
  9. LangChain 44 深入理解LangChain 表达式语言八 Runnable接口输入输出模式 LangChain Expression Language (LCEL)
  10. LangChain 45 深入理解LangChain 表达式语言九 Runnable 调用、流输出、批量调用、异步处理 LangChain Expression Language (LCEL)
  11. LangChain 46 深入理解LangChain 表达式语言十 Runnable 调用中间状态调试日志 LangChain Expression Language (LCEL)
  12. LangChain 47 深入理解LangChain 表达式语言十一 Runnable 并行处理 LangChain Expression Language (LCEL)
  13. LangChain 48 终极解决 实战Langchain访问OpenAI ChatGPT API Account deactivated的另类方法,访问跳板机API
  14. LangChain 49 深入理解LangChain 表达式语言十二 Runnable 透传数据保持输入不变 LangChain Expression Language (LCEL)
  15. LangChain 50 深入理解LangChain 表达式语言十三 自定义pipeline函数 LangChain Expression Language (LCEL)
  16. LangChain 51 深入理解LangChain 表达式语言十四 自动修复配置RunnableConfig LangChain Expression Language (LCEL)
  17. LangChain 52 深入理解LangChain 表达式语言十五 Bind runtime args绑定运行时参数 LangChain Expression Language (LCEL)
  18. LangChain 53 深入理解LangChain 表达式语言十六 Dynamically route动态路由 LangChain Expression Language (LCEL)
  19. LangChain 54 深入理解LangChain 表达式语言十七 Chains Route动态路由 LangChain Expression Language (LCEL)
  20. LangChain 55 深入理解LangChain 表达式语言十八 function Route自定义动态路由 LangChain Expression Language (LCEL)

在这里插入图片描述

1. 在运行时配置链内部

通常情况下,您可能希望尝试或甚至向最终用户公开多种不同的操作方式。为了尽可能地简化这一体验,我们定义了两种方法。

  1. 首先是 configurable_fields 方法。这使您可以配置可运行项的特定字段。

  2. 其次是 configurable_alternatives 方法。通过这种方法,您可以列出在运行时可以设置的任何特定可运行项的替代方案。

2. 配置字段Fields

通过LLMs,我们可以配置诸如temperature, 随机性。

from langchain.prompts import PromptTemplate
from langchain_community.chat_models import ChatOpenAI
from langchain_core.runnables import ConfigurableField

from dotenv import load_dotenv  # 导入从 .env 文件加载环境变量的函数
load_dotenv()  # 调用函数实际加载环境变量

# from langchain.globals import set_debug  # 导入在 langchain 中设置调试模式的函数
# set_debug(True)  # 启用 langchain 的调试模式

model = ChatOpenAI(temperature=0).configurable_fields(
    temperature=ConfigurableField(
        id="llm_temperature",
        name="LLM Temperature",
        description="The temperature of the LLM",
    )
)

resposne_0 = model.invoke("pick a random number")
print('resposne_0 >> ', resposne_0)

response_09 = model.with_config(configurable={"llm_temperature": 0.9}).invoke("pick a random number")
print('response_09 >> ', response_09)

# 我们也可以在它作为链条的一部分时这样做。
prompt = PromptTemplate.from_template("Pick a random number above {x}")
chain = prompt | model
response_0 = chain.invoke({"x": 50})
print('response_0 >> ', response_0)

response_07 = chain.with_config(configurable={"llm_temperature": 0.7}).invoke({"x": 50})
print('response_07 >> ', response_07)

运行结果

zgpeace@zgpeaces-MacBook-Pro ~/W/L/langchain-llm-app> python LCEL/config_fields.py                                      [12:30:37] develop+
resposne_0 >>  content='7'
response_09 >>  content='14'
response_0 >>  content='67'
response_07 >>  content='72'

3. 可配置的选择Alternatives

让我们来看看如何用LLMs来做这件事

from langchain.prompts import PromptTemplate
from langchain_community.chat_models import ChatAnthropic, ChatOpenAI
from langchain_core.runnables import ConfigurableField

from dotenv import load_dotenv  # 导入从 .env 文件加载环境变量的函数
load_dotenv()  # 调用函数实际加载环境变量

# from langchain.globals import set_debug  # 导入在 langchain 中设置调试模式的函数
# set_debug(True)  # 启用 langchain 的调试模式

llm = ChatAnthropic(temperature=0.7).configurable_alternatives(
    # This gives this field an id
    # When configuring the end runnable, we can then use this id to configure this field
    ConfigurableField(id="llm"),
    # This sets a default_key.
    # If we specify this key, the default LLM (ChatOpenAI() initialized above) will be used
    default_key="anthropic",
    # This adds a new option, with name `openai` that is equal to `ChatOpenAI()`
    openai=ChatOpenAI(),
    # This adds a new option, with name `gpt4` that is equal to `ChatOpenAI(model="gpt-4")`
    gpt4=ChatOpenAI(model="gpt-4"),
    # You can add more configuration options here
)
prompt = PromptTemplate.from_template("Tell me a joke about {topic}")
chain = prompt | llm

# We can use `.with_config(configurable={"llm": "openai"})` to specify an llm to use
chat_response = chain.with_config(configurable={"llm": "openai"}).invoke({"topic": "bears"})
print('chat_response >> ', chat_response)

# We can use `.with_config(configurable={"llm": "gpt4"})` to specify an llm to use
gpt4_response = chain.with_config(configurable={"llm": "gpt4"}).invoke({"topic": "bears"})
print('gpt4_response >> ', gpt4_response)

输出

zgpeace@zgpeaces-MacBook-Pro ~/W/L/langchain-llm-app> python LCEL/config_alternatives.py                              [12:41:51] develop!+?
chat_response >>  content="Why don't bears wear shoes? \n\nBecause they have bear feet!"
gpt4_response >>  content="Why don't bears like fast food?\n\nBecause they can't catch it!"

代码

https://github.com/zgpeace/pets-name-langchain/tree/develop

参考

https://python.langchain.com/docs/expression_language/how_to/configure

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值