LangChain入门----工具
发布时间:2026/9/3 21:58:20 作者:尧图编辑部 阅读量:1,286

因此定义带有具的Agent的基本流程如下:定义工具初始化模型初始化Agent绑定模型和工具1自定义工具1.1基于tool描述工具不推荐在LangChain中定义工具需要用到tool装饰器我们可以通过装饰器来定义工具名、工具的作用:fromlangchain.toolsimporttooltool(square,description计算一个数字的平方)deftool1(x:float)-float:returnx**21.2使用函数名和文档注释描述工具如果不tool装饰器没有定义工具名和作用描述此时:工具名:默认就是函数名工具所需的参数:默认就是函数的参数列表工具作用的描述:默认就是函数的文档注释fromlangchain.toolsimporttooltooldefsquare(x:float)-float: 计算一个数字的平方 returnx**21.3定义Pydantic model 描述参数当函数的参数比较复杂时我们可以使用Pydantic model来描述参数。frompydanticimportBaseModel,FieldfromtypingimportLiteral# 定义的参数classWeatherInput(BaseModel): 天气查询输入参数 location:strField(descriptioncity name)unit:Literal[celsius,fahrenheit]Field(defaultcelsius,description温度单位)include_forecast:boolField(defaultFalse,descriptionInclude 5-day forecast)#unit计量单位celsius摄氏度degrees度tool(args_schemaWeatherInput)defget_weather(location:str,unit:strcelsius,include_forecast:boolFalse)-str:temp22ifunitcelsiuselse72resultf查询{location}:{temp}degrees{unit[0].upper()}ifinclude_forecast:result,5天天气预报为:returnresultsquare.invoke({x:4})get_weather.invoke({location:海南,include_forecast:False})测试fromlangchain.agentsimportcreate_agentfromlangchain.messagesimportHumanMessage agentcreate_agent(modeldeepseek-chat,tools[square,get_weather],)fortoken,metadatainagent.stream({messages:[HumanMessage(content海南的天气如何)]},stream_modemessages):print(token.content,end,flushTrue)responseagent.invoke({messages:[HumanMessage(content88和100的平方是多少)]})formessageinresponse[messages]:print(message.pretty_print())2 预定义工具#需要在.env文件中配置TAVILY_API_KEYfromlangchain_tavilyimportTavilySearchfromdotenvimportload_dotenv load_dotenv()search_toolTavilySearch(max_results5,topicgeneral,)search_tool.invoke(agent有几种输出方式)agentcreate_agent(modeldeepseek-chat,tools[search_tool],system_prompt你是一个智能助手,使用工具来解决用户的问题,)responseagent.invoke({messages:[HumanMessage(content真香是什么梗)]})formessageinresponse[messages]:message.pretty_print()