🎭 欢迎来到MLX框架的奇妙世界! 🎭

今天,我将带你走进一个轻松愉快的旅程,探索如何利用MLX框架在Python中实现高效的大语言模型推理。我们不仅要探讨技术的深度,还会以幽默的方式解锁每一个重要步骤,让你在享受知识的同时,悟到AI的奥义。


🛠️ Step 1: 安装必要的库

首先,像所有伟大的冒险一样,咱们得做好准备工作。没有装备,英雄走不远,对吧?要让MLX在你的Python世界中活跃起来,首先你得安装所需的工具。这里就是我们的装备清单:

pip install --upgrade mlx-lm transformers huggingface_hub langchain

翻译一下:这条命令就像给你的AI工具箱加满了油,启用MLX、Hugging Face等神器。放心,安装过程飞快,等你喝完一杯咖啡,它就准备就绪了。


🚀 Step 2: 使用MLXPipeline加载模型

模型是AI的灵魂,而MLXPipeline是召唤这些灵魂的魔法杖!有了它,我们可以快速加载一个预训练好的大型语言模型(LLM),就像召唤一位强大的术士为你工作。来看这个例子:

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},
)

🎯 亮点:

  • 模型ID:我们加载了一个名为 “quantized-gemma-2b-it” 的量化模型。它能在资源有限的环境中高效工作。就像一辆节能的小跑车,速度不慢,但省油!
  • 参数设置max_tokenstemp 就像给模型设置的驾驶模式。max_tokens=10 意味着模型不会喋喋不休,temp=0.1 则保证它回答时不会太飘忽。

🗣️ Step 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)
response = chat_model.invoke(messages)
print(response.content)

🎯 亮点:

  • 消息格式HumanMessage 是我们发给模型的“信件”。问题越有趣,回答可能也越精彩。
  • invoke:这是启动对话的按钮,按下去,模型就会开始“思考人生”,并给出它的哲学见解。

🧠 Step 4: 构建一个简单的问答代理

现在,让我们升级一下,创建一个能处理复杂问题的问答代理。这个代理不仅聪明,还能调用搜索引擎和计算器,回答那些看似无解的问题。

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

# 加载工具
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)

# 使用代理回答问题
result = agent_executor.invoke(
    {
        "input": "Who is Leo DiCaprio's girlfriend? What is her current age raised to the 0.43 power?"
    }
)
print(result)

🎯 亮点:

  • 工具加载:我们引入了 SerpAPI(搜索引擎)和 llm-math(计算器)这两位强力助手,确保模型不仅能“谈笑风生”,还能“算天算地”。
  • ReAct Prompt:这是一个聪明的提示模板,能帮助模型从搜索、计算等多方面综合得出答案。你可以认为它是模型的“思维框架”。
  • AgentExecutor:它是整个代理的总指挥,负责协调模型和工具的配合,确保每个问题都能得到有条理的回答。

😎 大功告成!

到这里,咱们已经完成了一个功能强大的MLX问答代理,能够处理复杂问题,并给出既有趣又准确的回答。这就像让模型从一个“书呆子”变身为一个“全能选手”。


📚 小结:

通过这次探索,我们学会了:

  1. 如何安装并配置MLX框架
  2. 如何加载预训练的LLM
  3. 如何利用ChatMLX进行对话
  4. 如何构建一个集成搜索和计算功能的问答代理

这不仅是一趟技术之旅,更是一场有趣的探索。MLX框架让复杂的AI操作变得简单、高效,而我们也在这个过程中,体验到了将AI应用于现实问题的乐趣。


🚀 未来展望:
现在,你已经掌握了MLX的基础技巧,未来的应用场景将更加广阔。无论是开发智能对话系统,还是构建复杂的知识问答平台,MLX都能助你一臂之力。祝你在AI的世界里玩得尽兴,探索得精彩! 🎉

5 1 投票
Article Rating
订阅评论
提醒
0 评论
最多投票
最新 最旧
内联反馈
查看所有评论
人生梦想 - 关注前沿的计算机技术 acejoy.com
0
希望看到您的想法,请您发表评论x