LangChain Tools工具使用

未完待续

关于大模型工具使用有关前置知识和原理,已经在下面文章提到:

1.概述

本文介绍基于langchain开发具有工具使用(Function calling)功能的智能体Agent

2.实现

langchain开发Agent,需要安装包

pip install langchain==1.1.2
pip install langchain-openai
pip install langchain-classic

实现工具方法供大模型调用,并通过函数装饰器@tools修饰工具方法

@tools常用属性

属性 类型 描述
name_or_callable str | Callable 名称
description str 描述工具的功能,会作为上下文发送给大模型
args_schema ArgsSchema 可选择性地指定参数格式
return_direct bool 是否直接从工具返回

/my_tools.py


from langchain.tools import tool
from pydantic import BaseModel
from pydantic import Field

class FiledInfo(BaseModel):
    """
    定义参数信息
    """
    city: str = Field(description='城市')


@tool(args_schema=FiledInfo, description='根据城市名称获取温度')
def tp_tool(city: str) -> int:
    print('=======tp_tool=======')
    if city == '北京':
        return 12
    elif city == '武汉':
        return 23
    elif city == '沈阳':
        return -10
    elif city == '泉州':
        return 27
    else:
        return None


if __name__ == '__main__':
    print( tp_tool.invoke({'city': '沈阳'}) )

使用create_agent创建智能体agent,绑定模型和工具,然后调用invoke()执行

/test_tool2.py

import os

from langchain.agents import create_agent
from langchain.chat_models import init_chat_model
from my_tool import tp_tool

llm = init_chat_model(
    model = 'deepseek-chat',
    model_provider = 'openai',
    api_key = os.getenv('DSKEY'),
    base_url = 'https://api.deepseek.com'
)


# 创建 Agent,绑定tp_tool工具
agent = create_agent(
    llm,
    tools=[tp_tool],
    system_prompt="""你是一个天气查询助手"""
)

# 执行
result = agent.invoke({
    "messages": [{"role": "user", "content": "泉州温度多少"}]
})

for msg in result['messages']:
    if hasattr(msg, 'content'):
        print(f"{msg.__class__.__name__}: {msg.content}")

输出结果

=======tp_tool=======
HumanMessage: 泉州温度多少
AIMessage: 我来帮您查询泉州的温度。
ToolMessage: 27
AIMessage: 根据查询结果,泉州的当前温度是**27°C**。

"如果文章对您有帮助,可以请作者喝杯咖啡吗?"

微信二维码

微信支付

支付宝二维码

支付宝


LangChain Tools工具使用
https://blog.liuzijian.com/post/2025/12/24/langchain-tools/
作者
Liu Zijian
发布于
2025年12月24日
许可协议