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镜像加速安装langchain、langchain‑openai。langchain‑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随便填一个字符串例如dummy;model参数填写 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 原型开发及验证。

目录
相关文章
|
25天前
|
并行计算 API 开发者
Windows 环境下 llama.cpp 编译运行指南
本文详解Windows下用llama.cpp本地部署大模型:从VS2026编译(支持CPU/GPU)、ModelScope下载GGUF格式Qwen2.5-1.5B模型,到启动llama-server API服务及Python调用验证,全程轻量、低延迟、高隐私,助力开发者快速落地。
514 2
|
24天前
|
SQL 测试技术 数据库连接
我用ChatGPT把回归测试从3天压到3小时,提示词全公开
本文分享如何用ChatGPT优化电商后台回归测试:通过提示词引导,实现用例梳理、自动化脚本生成与日志分析三步提效,将3天人工测试压缩至3小时。强调其辅助定位而非替代人力,聚焦释放工程师精力于高价值工作。
|
25天前
|
人工智能 Ubuntu 数据可视化
Ubuntu 本地部署Ollama+OpenWebUI教程
本文详解Ubuntu下零基础部署Ollama+OpenWebUI:一键安装Ollama(支持CPU/GPU)、拉取轻量qwen3.5:0.8b模型、虚拟环境隔离安装OpenWebUI、配置systemd自启服务,最终建成可远程访问、离线运行、稳定易用的本地AI对话网页。
390 2
|
1月前
|
人工智能 API 内存技术
刚刚 DeepSeek V4.1 Flash 开启内测,1 分钟教你用上!
刚刚 DeepSeek 内测群发布了 DeepSeek V4.1 Flash 中间版本内测的消息,这次的模型采用了新的结构,原生支持多模态、能力更强、速度更快、且成本更低。
2223 15
|
3月前
|
人工智能
Qwen3.8抢先体验!正式版即将发布并开源!
千问Qwen3.8即将开源,参数达2.4T,进化速度以“天”计,实力媲美Fable 5。预览版Qwen3.8-Max已上线阿里Token Plan等平台,限时优惠:日间Credits低至1折,夜间更优,个人/团队版月付仅35元起!
5271 162
|
26天前
|
人工智能 缓存 监控
阿里云百炼Token Plan个人版与团队版深度解析:Credits计费规则,个人团队版对比与落地实操指南
Token Plan是阿里云百炼推出的订阅制AI算力套餐,核心设计思路是**Credits统一计量**,不再单独区分输入Token、输出Token,而是将模型调用、工具调用、多模态生成任务统一折算成Credits进行消耗抵扣。无论是Qwen系列模型、DeepSeek系列模型,还是图片生成、视频生成、语音能力,全部在同一个Credits额度池内扣减,这也是该订阅方案最核心的优势。**详情👉[访问阿里云百炼Token Plan服务页面](https://www.aliyun.com/benefit/scene/tokenplan?userCode=t1dwdo7u)了解**。
309 4
|
1月前
|
存储 人工智能 IDE
阿里云千问办公、Qoder CN和Qoder Teams有什么区别?看完直接选!
阿里云三款AI产品定位清晰:千问办公(QwenWork)专注通用办公自动化,面向非技术岗;Qoder CN是国内合规版AI编码平台,支持IDE/CLI/办公全场景;Qoder Teams是Qoder CN的企业团队版,提供席位管理、共享知识库与用量审计。
869 6
阿里云千问办公、Qoder CN和Qoder Teams有什么区别?看完直接选!
|
25天前
|
人工智能 自然语言处理 测试技术
LangGraph Server Agent 框架本地部署指南
本文详解如何在Windows本地离线部署LangGraph Server构建AI Agent:全程不依赖公网大模型,适配llama.cpp等本地模型,提供纯净环境安装、项目模板搭建、UTF-8编码配置及内存调试服务。强调MIT协议核心库免费无限制,但LangGraph Server Lite版年节点执行上限100万次。
157 2
|
25天前
|
机器学习/深度学习 数据采集 人工智能
千问大模型完整RLHF全参数微调指南
本文详解Qwen3.5-0.8B-Base全参数微调全流程,覆盖SFT监督微调、RM奖励建模、PPO强化学习与DPO直接偏好优化四大环节,提供可运行脚本与医疗领域实践案例,助力开发者低成本完成小模型垂直定制。(239字)
240 1