LangChain+Llama.cpp 本地模型与Agent工具调用

简介: 本文介绍如何用LangChain对接本地llama.cpp服务:通过`llama-server`启动Qwen量化模型,配置OpenAI兼容接口;安装LangChain生态包;实现基础对话与自定义工具Agent(如查天气、时间),全程离线运行,零依赖云端API,适合私有化AI原型开发。(239字)

本地大模型开发已经变得十分便捷,llama.cpp 作为轻量高效的 GGUF 模型推理引擎,可以在普通 PC 上运行 Qwen、Llama 系列量化模型。LangChain 作为大模型应用编排框架,除了对接云端 OpenAI,还能对接 llama‑server 的 OpenAI 兼容接口,不仅可以实现基础对话,还能开发具备工具调用能力的 Agent 智能代理。本文将依次演示LangChain框架的安装、基础对话调用、自定义工具 Agent 开发等功能实现。

1、承接《Windows 环境下 llama.cpp 编译运行指南》部分内容,通过命令工具llama‑server启动服务,端口监听127.0.0.1:11433,并加载 qwen2.5‑1.5b‑instruct‑q4_k_m.gguf 模型,确保本地服务已经启动。

C:> llama-server.exe -m qwen2.5-1.5b-instruct-q4_k_m.gguf --host 127.0.0.1 --port 11433 -c 4096
C:> 
init: llama threadpool init, n_threads = 12
load_model: initializing, n_slots = 4, n_ctx_slot = 4096, kv_unified = 'true'
llama_server: model loaded
llama_server: listening on http://127.0.0.1:11433

2、使用清华PyPI镜像加速安装langchainlangchain‑openailangchain‑openai不只是调用 OpenAI 官方接口,也可以对接任意兼容 OpenAI 协议的本地推理服务,包括 llama‑server、vLLM 等。

C:> pip install -i https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple langchain langchain_openai
C:> 
C:> pip list
-------------------- -----------
Package              Version
-------------------- -----------
langchain            1.3.15
langchain-core       1.5.5
langchain-openai     1.5.1
langchain-protocol   0.0.18
langgraph            1.2.11
langgraph-checkpoint 4.2.0
langgraph-prebuilt   1.1.0
langgraph-sdk        0.4.2
langsmith            0.11.0

3、通过LangChain调用本地llama.cpp实现简单的对话功能,使用ChatOpenAI类,修改base_url指向本地 llama‑server 的/v1地址;本地服务不需要真实密钥,api_key随便填一个字符串例如dummymodel参数填写 llama‑server 正在加载的 GGUF 模型文件名。

完整基础对话代码:

from langchain_openai import ChatOpenAI
from langchain_core.messages import HumanMessage, SystemMessage

if __name__ == "__main__":
    llm = ChatOpenAI(
        model="qwen2.5-1.5b-instruct-q4_k_m.gguf",
        base_url="http://127.0.0.1:11433/v1",
        api_key="dummy",
        temperature=0.7,
        max_tokens=512,
    )

    resp = llm.invoke([
        SystemMessage(content="你是简短回答助手,你的名字是小张"),
        HumanMessage(content="你好,请简单介绍一下自己?")
    ])

    print(resp.content)

4、构建具备工具调用能力的Agent代理,使用代理调用功能,大模型可以根据用户问题,自主判断是否调用外部工具函数,获取外部信息,再整理答案返回用户。

示例实现两个自定义工具:

  • get_weather(city) 模拟查询城市天气
  • get_current_time() 获取系统当前时间

通过@tool装饰器封装普通 Python 函数为 LangChain 工具;create_agent创建代理,wrap_tool_call中间件捕获工具执行异常,统一错误处理。

完整 Agent 代码:

import os,sys,time,datetime
from langchain_openai import ChatOpenAI
from langchain_core.tools import tool
from langchain.agents import create_agent
from langchain.agents.middleware import wrap_tool_call

# 定义系统提示
SYSTEM_PROMPT = '''
    你是一个助手,请简洁准确。

    你可以使用两个工具:
    - get_weather:获取给定城市的天气
    - get_current_time:获取当前系统中的日期与时间
'''

basic_model = ChatOpenAI(
    model="qwen2.5-1.5b-instruct-q4_k_m.gguf",
    base_url="http://127.0.0.1:11433/v1",
    api_key="dummy",
    temperature=0.1,
    max_tokens=512,
)

@tool
def get_weather(city: str) -> str:
    """
    获取给定城市的天气
    Args:
        city: 需要查询天气的城市名称,例如:泰安、济南
    """
    return f"城市 {city} 空气良好!"

@tool
def get_current_time():
    '''
    获取当前系统中的日期与时间
    '''
    return datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")

# 错误提示信息
@wrap_tool_call
def handle_tool_errors(request, handler):
    """使用自定义消息处理工具执行错误。"""
    try:
        return handler(request)
    except Exception as e:
        return ToolMessage(
            content=f"工具错误:请检查您的输入并重试。({str(e)})",
            tool_call_id=request.tool_call["id"]
        )

if __name__ == "__main__":
    agent = create_agent(
        basic_model,
        tools=[get_weather,get_current_time],
        middleware=[handle_tool_errors],
        system_prompt=SYSTEM_PROMPT
        )

    result = agent.invoke(
        {
   "messages": [("user", "查询当前日期与时间?")]}
    )

    for msg in result["messages"]:
        print(f"{msg.type}: {msg.content}")

利用 llama‑server 提供 OpenAI 兼容接口,几乎不用修改 LangChain 业务代码,仅更换base_url就可以无缝切换本地 GGUF 大模型。从普通对话到具备工具调用的 Agent,整套流程完全本地化,无需调用云端 API,非常适合私有化 AI 原型开发及验证。

目录
相关文章
|
1天前
|
IDE 开发工具
额度翻倍!还有四天
Qoder推出Sonus模型专属福利:9月16-19日,付费用户每日12:00可领1000 Credits,用于全球顶级Sonus模型——支持编程、长程任务、专业软件操作及公式表格处理。登录Qoder各端活动入口即可领取。
86 0
|
存储 安全 Linux
Docker 离线安装与基本使用
Docker 离线安装与基本使用
4075 0
Docker 离线安装与基本使用
|
1天前
|
BI 项目管理
项目管理协作平台上了却没人用?4步让团队真正跑起来
项目协作平台落地难,根因在团队不用而非功能不足。解法四步:诊断病因,做减法跑最小闭环,嵌入日常工作,建立运营节奏。关键是用着省力,管理者先行,数据用于支持而非审判,平台才会融入习惯。
|
15小时前
|
JSON 调度 数据格式
LangChain+FastMCP 搭建大模型工具调用服务
本文基于MCP协议与轻量级FastMCP框架,构建标准化大模型工具调用方案:支持Streamable HTTP通信,集成LangChain生态;通过天气查询与系统时间两大实战案例,完整演示自定义工具开发、静态资源封装、提示词模板配置及多服务协同调用,附可运行代码与环境配置,助力开发者快速落地轻量化、可复用的AI工具链。(239字)
34 3
LangChain+FastMCP 搭建大模型工具调用服务
|
1天前
|
人工智能 缓存 API
保姆级通义千问Qwen大模型选型教程:Qwen3.8‑Max、Qwen3.7‑Max、Qwen3.7‑Plus、Qwen3.7‑Flash功能区别与选型指南,API代码实操
在AI应用开发、智能体搭建、代码工程落地、文档解析等场景中,模型选型直接决定项目效果、响应速度与调用成本。很多开发者初次接触Qwen系列模型时,很容易混淆Qwen3.8‑Max、Qwen3.7‑Max、Qwen3.7‑Plus、Qwen3.7‑Flash之间的定位差异,单纯依靠模型名称判断能力,出现选用高成本模型做简单任务造成预算浪费,或是选用轻量模型处理复杂推理任务,导致结果质量不达预期的情况。四款模型虽然都具备百万级上下文窗口,支持工具调用、结构化输出、思考模式,但在模态支持、推理深度、多模态能力、响应速度、单位Token定价上有着明确的区分。本文将逐一拆解四款模型的核心功能、能力边界、优
46 0
|
10天前
|
JSON Ubuntu 物联网
千问大模型二次LoRA‑SFT指令微调指南
大模型微调是实现模型领域定制的核心方案。本文基于 Ubuntu 22.04 服务器环境,依托 NVIDIA RTX 家用高性能显卡,选用千问 Qwen3.5‑0.8B‑Instruct 指令模型,完整演示二次 LoRA‑SFT 微调全流程,包含环境搭建、模型选型、ChatML 数据集制作校验、LoRA 参数配置、SFT 训练、效果验证、权重合并,附带可直接运行的工程脚本,便于开发者快速实现千问模型轻量化定制与上线部署。
176 2
|
15小时前
|
人工智能 Ubuntu 数据可视化
Ubuntu 本地部署Ollama+OpenWebUI教程
本文详解Ubuntu下零基础部署Ollama+OpenWebUI:一键安装Ollama(支持CPU/GPU)、拉取轻量qwen3.5:0.8b模型、虚拟环境隔离安装OpenWebUI、配置systemd自启服务,最终建成可远程访问、离线运行、稳定易用的本地AI对话网页。
46 0
|
12天前
|
机器学习/深度学习 人工智能 自然语言处理
轻量化小模型MiniMind从训练到落地指南
本文基于Ubuntu 22.04与RTX显卡,手把手教你用原生PyTorch从零训练MiniMind(26M–200M)轻量大模型:涵盖环境配置、预训练、SFT微调、LoRA垂域适配、DPO对齐、Web服务搭建及GGUF量化全流程。3小时可跑通基础对话,低成本、可复现、适合新手入门与私有化部署。(239字)
193 2
|
15小时前
|
机器学习/深度学习 数据采集 人工智能
千问大模型完整RLHF全参数微调指南
本文详解Qwen3.5-0.8B-Base全参数微调全流程,覆盖SFT监督微调、RM奖励建模、PPO强化学习与DPO直接偏好优化四大环节,提供可运行脚本与医疗领域实践案例,助力开发者低成本完成小模型垂直定制。(239字)
40 0
|
15小时前
|
人工智能 自然语言处理 测试技术
LangGraph Server Agent 框架本地部署指南
本文详解如何在Windows本地离线部署LangGraph Server构建AI Agent:全程不依赖公网大模型,适配llama.cpp等本地模型,提供纯净环境安装、项目模板搭建、UTF-8编码配置及内存调试服务。强调MIT协议核心库免费无限制,但LangGraph Server Lite版年节点执行上限100万次。
39 2