feat: 如何将checkpointer以及session传递给工具来使用呢

This commit is contained in:
martsforever
2025-09-04 18:08:34 +08:00
parent 920d4f1944
commit 88963dcca0
+22 -37
View File
@@ -1,10 +1,11 @@
import datetime
import json
import time
from typing import Union, Annotated
from typing import Union, Annotated, TypedDict
from fastapi import FastAPI
from langchain_core.messages import HumanMessage, AIMessage, ToolMessage
from langchain_core.messages import AIMessage, ToolMessage
from langchain_core.runnables import RunnableConfig
from langchain_core.tools import tool
from langgraph.graph.state import CompiledStateGraph
from langgraph.prebuilt import create_react_agent
@@ -58,44 +59,28 @@ def tool_add(
return float(number1) + float(number2)
class BookHotelData(TypedDict):
hotel_id: str
proj_id: str
user_id: str
@tool(name_or_callable="tool_book_hotel", description="一个用于预定酒店的工具")
def tool_book_hotel() -> str:
resume_data = interrupt({
"title": "请确认酒店预定信息",
"form": [
{
"field": "hotel_name",
"type": "input",
"label": "酒店名称",
"required": True,
},
{
"field": "room_type",
"type": "select",
"label": "客房类型",
"options": [
{"label": "标间", "value": "标间"},
{"label": "单间", "value": "单间"},
{"label": "双人间", "value": "双人间"},
],
"required": True,
},
{
"field": "check_in_date",
"type": "date",
"label": "入住时间",
}
],
"formData": {
"hotel_name": '',
"room_type": '',
"check_in_date": '',
}
})
if resume_data == "N":
def tool_book_hotel(config: RunnableConfig) -> str:
book_hotel_data: Union[BookHotelData, str] = interrupt({"title": "请输入酒店预定信息", "formCode": "bookHotel"})
if book_hotel_data == "N":
return f"用户选择取消预定酒店"
return ToolMessage(content="预定成功", additional_kwargs={"render": {"type": "DataTable"}})
hotel_id = book_hotel_data.get('hotel_id')
proj_id = book_hotel_data.get('proj_id')
user_id = book_hotel_data.get('user_id')
print("hotel_id", hotel_id)
print("proj_id", proj_id)
print("user_id", user_id)
print("config", config)
return "预定成功"
class ChatMessage(BaseModel):