使用从Hugging Face下载的大语言模型,并结合LangGraph
我从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变量,我已经尝试了不同的做法。
- model = pipeline.model 这导致了
AttributeError: 'LlamaForCausalLM' object has no attribute 'bind_tools'
这个错误在执行该行时弹出。
messages = agent.invoke({"messages": messages})
请参考上面的LangChain文档中的链接,了解包含该行的完整脚本。
- 使用像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-Instruct。tool-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导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。