使用从Hugging Face下载的大语言模型,并结合LangGraph

人工智能 2026-07-11

我从Hugging Face下载了一个llama模型的权重。它能完成一些简单任务,但我不知道如何将它与langgraph结合以创建智能体,或如何绑定工具。

下面是我下载它的方式:

model_id = "meta-llama/Llama-3.2-3B-Instruct"
pipeline = transformers.pipeline(
    "text-generation",
    model=model_id,
    token="hf_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
    model_kwargs={"dtype": torch.bfloat16},
    device_map="auto",
)

我尝试配合这个使用的代码,是页面上的示例代码(完整代码):https://docs.langchain.com/oss/python/langgraph/quickstart#full-code-example

顺便说一句,我也尝试了LangChain调用工具,但结果相同。

对于model变量,我已经尝试了不同的做法。

  1. model = pipeline.model 这导致了

AttributeError: 'LlamaForCausalLM' object has no attribute 'bind_tools'

这个错误在执行该行时弹出。

messages = agent.invoke({"messages": messages})

请参考上面的LangChain文档中的链接,了解包含该行的完整脚本。

  1. 使用像ChatOpenAI和 ChatOllama这样的包装器对我来说不起作用,因为看起来这些类总是假设通过REST API调用模型,但我想直接使用模型的实例,以便能够利用我的CUDA系统。尝试使用这个包装器时,会得到一个错误,提示对象不理解bind。

有什么建议吗?

解决方案

有几种在本地使用模型进行文本生成和调用工具的方案。我建议你使用 vllm 部署它,并调用它的API。首先你需要安装以下软件包:

pip install langchain_openai vllm

之后,在终端本地部署你的模型,方法如下:

vllm serve Qwen/Qwen3-4B \
  --enable-auto-tool-choice \
  --tool-call-parser hermes \
  --reasoning-parser deepseek_r1 \
  --gpu-memory-utilization 0.9 \
  --max_model_len 4096

请注意,我使用 Qwen/Qwen3-4B 代替 meta-llama/Llama-3.2-3B-Instructtool-call-parser 的取值可能需要调整。reasoning-parser 应该完全跳过,因为llama模型不是一个推理模型。

在你的示例中,使用以下代码来初始化 model 对象,替换掉 init_chat_model

from langchain_openai import ChatOpenAI

model_id = "Qwen/Qwen3-4B"

model = ChatOpenAI(
    base_url="http://localhost:8000/v1",
    api_key="EMPTY",
    model=model_id
)
...

我运行整段代码得到的输出是:

================================ Human Message =================================

Add 3 and 4.
================================== Ai Message ==================================
Tool Calls:
  add (chatcmpl-tool-ba156dc32fdb5242)
 Call ID: chatcmpl-tool-ba156dc32fdb5242
  Args:
    a: 3
    b: 4
================================= Tool Message =================================

7
================================== Ai Message ==================================



The result of adding 3 and 4 is $\boxed{7}$.
站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。

相关文章