feat:增加取消预订会议的apicall

This commit is contained in:
雷雨
2025-06-09 16:37:45 +08:00
parent 4a49455af8
commit 5bb0c45208

View File

@@ -29,6 +29,8 @@ def parse_time(time_str: str) -> int:
'''
判断是否为json格式
'''
def is_json(myjson):
try:
json_object = json.loads(myjson)
@@ -36,10 +38,13 @@ def is_json(myjson):
except ValueError:
return False
'''
查询租户下所有会议室类型
'''
def query_room_type(params: dict) ->str:
def query_room_type(params: dict) -> str:
"""
query_params:
ytenantId not null
@@ -57,9 +62,12 @@ def query_room_type(params: dict) ->str:
content = json.loads(json.dumps(room_type))
return str(content)
'''
查询租户下会议室信息
'''
def query_room_info(params: dict) -> str:
# resp = requests.get('http://127.0.0.1:8000/myapi/room/')
"""
@@ -86,6 +94,8 @@ def query_room_info(params: dict) -> str:
'''
预定会议室
'''
def book_room(data: dict, params: dict) -> str:
# resp = requests.post('http://127.0.0.1:8000/myapi/room/', data)
"""
@@ -121,10 +131,13 @@ def book_room(data: dict, params: dict) -> str:
content = json.loads(json.dumps(booking_info))
return str(content)
'''
查询租户下预定信息
'''
def query_booking_info(params: dict) ->str:
def query_booking_info(params: dict) -> str:
tenant_id = params.get('ytenantId', None)
access_token = getinfo.get_access_token(tenant_id)
params['access_token'] = access_token
@@ -132,10 +145,13 @@ def query_booking_info(params: dict) ->str:
content = json.loads(json.dumps(meeting_room))
return str(content)
'''
预定会议
'''
def book_meeting(params: dict, data: dict) ->str:
def book_meeting(params: dict, data: dict) -> str:
"""
:data {
subject (not null) string
@@ -163,9 +179,12 @@ def book_meeting(params: dict, data: dict) ->str:
content = json.loads(json.dumps(book_meeting))
return str(content)
'''
取消会议
'''
def cancel_meeting(params: dict):
"""
params{
@@ -187,7 +206,6 @@ def cancel_meeting(params: dict):
return str(content)
def check_and_process_think(content: str) -> str:
filtered_text = re.sub(r"<think\b[^>]*>.*?</think>", '', content, flags=re.DOTALL)
return filtered_text
@@ -220,6 +238,14 @@ def build_prompt(params):
}
'''
cancel_meeting_info_for_mart_str = '''
{
"func_name":"cancel_room_meeting",
"meetingId":"233333"
}
'''
time_now = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
# 增强提示词模板
template = f"""你是一个专业的OA会议预订助手请根据以下信息提供服务
@@ -233,9 +259,11 @@ def build_prompt(params):
{book_for_mart_str}
4. 用户需要查询已有的会议室预订情况或者预订情况时,结果请按照以下的json示例返回,不需要返回其他的多余数据,返回示例如下:
{qry_book_info_for_mart_str}
5. 如果用户再次请求预订会议时,请不要按照json格式直接提取用户预订信息,而是请重新查看现有会议室的最新情况,基于用户需求给用户推荐合理的会议室,推荐选项时不需要提取用户预订信息按照json格式返回,需要重新给用户推荐选项即可,按照正常自然语言对话返回
6. 如果用户需要解析调用API返回的结果请解析用户提供的相应结果信息并给予自然语言反馈,不需要返回json数据
7. 用户其他需求,请按照自然语言对话返回
5. 如果用户需要取消预订会议时,请根据上下文提取用户预订信息,结果请按照以下的json示例返回,需要返回其他的多余数据,返回示例如下:
{cancel_meeting_info_for_mart_str}
6. 如果当用户再次请求预订会议室时,请不要按照json格式直接提取用户的预订信息,而是请重新查看现有会议室的最新情况,基于用户需求给用户推荐合理的会议室,推荐选项时不需要提取用户预订信息按照json格式返回,只需要重新给用户推荐选项即可,按照正常自然语言对话返回
7. 如果用户需要解析调用API返回的结果请解析用户提供的相应结果信息并给予自然语言反馈,不需要返回json数据
8. 用户其他需求,请按照自然语言对话返回
"""
return template
@@ -352,12 +380,39 @@ def process_query_book_room(**kwargs) -> str:
return book_promot
'''
函数调用,取消会议室
'''
def process_cancel_room_meeting(data, params) -> str:
meetingId = data.get("meetingId", None)
if meetingId:
params["meetingId"] = meetingId
result = cancel_meeting(params=params)
book_promot = f'''
系统调用API取消预订会议室的结果如下:
{result}
请帮用户解析取消预订会议室的结果,并根据结果给予用户相应自然语言反馈
'''
else:
dic_data = {
"result": "false",
"message": "未能获取到会议预订ID,请重新尝试取消预订会议室"
}
book_promot = f'''
系统调用API取消预订会议室的结果如下:
{dic_data}
请帮用户解析取消预订会议室的结果,并根据结果给予用户相应自然语言反馈
'''
return book_promot
'''
函数调用map维护
'''
func_tion_call_map = {
"book_room": process_book_room,
"query_booking_info": process_query_book_room
"query_booking_info": process_query_book_room,
"cancel_room_meeting": process_cancel_room_meeting,
}
'''