## 技术背景介绍
在人工智能领域,语言模型(LLM)已经成为开发智能聊天应用的重要工具。MLX提供了一系列高效的LLM,这些模型可以被应用于多种场景,包括复杂的问答和对话生成。本指南将展示如何使用MLX的LLM来构建一个强大的聊天代理。
## 核心原理解析
MLX提供了一个名为`MLXPipeline`的接口,用于简化LLM的使用和配置。此外,`ChatMLX`类允许开发者使用LangChain的`Chat Messages`抽象层更轻松地构建交互式的聊天模型。通过这些工具,我们可以快速实现一个功能全面的聊天代理。
## 代码实现演示
### 依赖安装
在开始之前,请确保安装了必要的Python包:
```bash
%pip install --upgrade --quiet mlx-lm transformers huggingface_hub
1. 实例化LLM
MLX提供多个LLM供选择,这里我们将使用quantized-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},
)
2. 使用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)
3. 将模型作为代理使用
我们可以通过ReActAgent
将gemma-2b-it
模型用作零样本代理。需配置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密钥和环境变量的配置,以确保服务的正常运行。
- 针对不同的场景需求,调整
pipeline_kwargs
参数,以获得最佳的模型表现。
如果遇到问题欢迎在评论区交流。
---END---