LangGraph框架中怎样定义工具tools

基本信息

  • LangGraph创建工具的几种方法及工具的使用
  • 模型调用通义千问(阿里Tongyi大模型)

定义简单工具

工具是一种封装函数及其输入模式的方法,可以将其传递给支持工具调用的聊天模型。这使得模型能够通过特定的输入请求执行该函数。

三种定义工具的方法

  1. 定义简单一个工具函数:可以将原始函数传递给create_react_agent来使用,自动将原始函数转换为LangChain工具。
  2. 自定义工具:为了更好地控制工具行为,请使用@tool装饰器,自动将原始函数转换为LangChain 工具。
  3. Pydantic 定义:可以使用 Pydantic 自定义输入模式

运行示例

# # -*- coding: utf-8 -*-
from langgraph.prebuilt import create_react_agent
from langchain_community.chat_models.tongyi import ChatTongyi #dashscope 
from pydantic import BaseModel, Field
from langchain_core.tools import tool

#模型初始化
llm = ChatTongyi(
    model="qwen-turbo",#qwen-max-latest qwen-plus
    temperature=0,
    verbose=True,
    )

# 可以将原始函数传递给create_react_agent工具来使用,自动将原始函数转换为LangChain工具。
#定义简单一个工具函数
def addition(a: int, b: int) -> int:
    """两数相加"""
    return a + b

# 为了更好地控制工具行为,请使用@tool装饰器,自动将原始函数转换为LangChain 工具。
# 自定义工具
@tool("subtract_tool", parse_docstring=True)# parse_docstring=True表示会解析函数的文档字符串以提取信息
def subtraction(a: int, b: int) -> int:
    """
    计算两个整数的差。

    Args:
        a (int): 第一个整数。
        b (int): 第二个整数。

    Returns:
        int: 两个整数的差。
    """
    return a - b


# 可以使用 Pydantic 定义自定义输入模式:
class MultiplyInputSchema(BaseModel):
    """两数相乘"""
    a: int = Field(description="第一个数")
    b: int = Field(description="第二个数")

@tool("multiply_tool", args_schema=MultiplyInputSchema)
def multiply(a: int, b: int) -> int:
   return a * b


#构建一个智能体
agent = create_react_agent(
    model=llm,
    tools=[addition,subtraction,multiply],
)

response = agent.invoke(
    {
   "messages": [{
   "role": "user", "content": "2+4和7-1和2*3分别是多少?"}]}
)
print(response["messages"][-1].content)
#运行结果 2+4的结果是6,7-1的结果是6,2*3的结果也是6。

运行结果截图

LangGraph框架中怎样定义工具tools_第1张图片

隐藏模型中的参数

一些工具需要仅在运行时使用参数(例如,用户id或会话上下文),而这些参数不应受模型控制,同时保护用户隐私。
可以将这些参数放入agent的stat

你可能感兴趣的:(LangGraph,langchain,prompt,python,AI编程)