使用langchain框架开发一个能调用工具的聊天助手Demo
询问今天天气情况,调用获取天气工具函数:
大模型是通过调用的是阿里百炼的接口调用deepseek-v3模型
import os
from langchain.chat_models import init_chat_model
from langchain_core.messages import HumanMessage, SystemMessage, AIMessage
from langchain.tools import toolmodel = init_chat_model(api_key=os.getenv("DASHSCOPE_API_KEY"),base_url="https://dashscope.aliyuncs.com/compatible-mode/v1",model="deepseek-v3",model_provider="openai"
)# 定义工具函数
@tool
def get_weather(location: str) -> str:"""获取指定位置的天气信息"""return "今天" + location + "天气很好"@tool
def get_date(country: str) -> str:"""获取今天的日期"""return "yyyyMMdd"available_tools = {"get_weather": get_weather, "get_date": get_date}
model_with_tools = model.bind_tools([get_weather, get_date])history_messages = [SystemMessage(content="你是一个聊天助理"),HumanMessage(content="你好,你能介绍下你自己吗?"),AIMessage(content="我是你的生活聊天助理,我叫小D"),
]
messages = history_messages + [HumanMessage(content="今天上海天气怎么样?")]
output = model_with_tools.invoke(messages)
print(output)
for tool_call in output.tool_calls:selected_tool = available_tools[tool_call["name"].lower()]tool_msg = selected_tool.invoke(tool_call)messages.append(tool_msg)print(tool_msg.content)