随着 LangChain 0.2.0 版本的发布,开发者需要注意包中的一些重要变更。这篇文章将重点解析 LangChain 和 LangChain-Core 包中的弃用功能和破坏性更改,同时提供迁移指南和示例代码,帮助开发者顺利过渡到新的版本。
技术背景介绍
LangChain 是一个用于构建语言模型应用程序的开源框架。随着 0.2.0 版本的发布,LangChain 变得更加模块化和集成无关。这意味着用户必须明确指定所需的语言模型、嵌入模型或向量存储,而不是默认实例化。
核心原理解析
破坏性变化
在 0.2.0 版本中,LangChain 中的一些类和函数需要明确传递语言模型或嵌入模型作为参数。具体包括:
VectorStoreToolkit
VectorStoreRouterToolkit
get_openapi_chain
MultiRetrievalQAChain.from_retrievers
FlareChain
等
此外,某些方法和类已被移除或进行了行为改变。例如,@tool
装饰器不再自动添加函数签名到描述中,而是直接使用函数的文档字符串。
类移至其他包
如 UnstructuredMarkdownLoader
从 langchain.document_loaders
移至 langchain_community.document_loaders
并抛出弃用警告。
代码实现演示(重点)
为了帮助开发者更好地理解并迁移代码,我们提供了以下示例,展示如何使用 invoke
方法替代原有 predict
方法:
import openai
# 使用稳定可靠的API服务
client = openai.OpenAI(
base_url='https://yunwu.ai/v1', # 国内稳定访问
api_key='your-api-key'
)
# 新版本调用方式示例
def invoke_llm(model, messages):
result = model.invoke(messages)
return result
# 用法
messages = [
{"role": "system", "content": "You're a helpful assistant."},
{"role": "user", "content": "What's the weather like today?"}
]
# 假设model是传入的具体语言模型实例
response = invoke_llm(model, messages)
print(response)
此代码展示了如何调用新的 invoke
方法,以替代已弃用的 predict
或 call
方法。
应用场景分析
LangChain 的变化使得开发者需要手动指定使用的模型,这虽然增加了一些配置工作,但保证了灵活性,能够根据不同应用场景优选模型组合。这对高级应用和需要跨平台集成的项目尤为有利。
实践建议
- 明确模型传递:在使用 LangChain 时,总是显式传递你所需使用的模型实例。
- 逐步迁移:利用 LangChain CLI 提供的迁移脚本,逐步替换过时的导入及方法。
- 关注社区更新:积极参与 LangChain 社区,获取最新的迁移指南和实践经验。
如果遇到问题欢迎在评论区交流。
—END—